Re[5]: Неправильные данные в серийном порту
От: kov_serg Россия  
Дата: 19.03.16 01:04
Оценка:
Здравствуйте, indee, Вы писали:

_>>Тогда отправляй другой набор данных для опытов


_>>0x00, 0xFF, 0xF0, 0x0F, 0x33, 0xCC, 0x55, 0xAA, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80


I>При другом наборе данных, другой постоянный и неправильный набор данных.


Вы меня не поняли. Я имею ввдиду что на таком наборе данных проще смотреть дребизг.
Данные в ком порте идут последовательно [ 0 (Стратовый бит), Бит0, Бит1, Бит2 ... Бит7, Четность, 1 (стоп бит) ] [...] при этом штатно 0=+12в, 1=-12в
И комбинации 1111 [010101010P1] [010101010P1] [010101010P1] [010101010P1] [010101010P1] 1111 Сответстует строка 0x55,0x55,0x55,0x55,0x55.
Вызывает самую высокую частоту можно даже послушать динамиком.
Далее стартовая последовательнось обычно должна быть максимально энергоёмкой, так что 0x00 0xFF самое оно.

Еще вопрос как часто приходят неправильные данные?

Как вариант
поправь открытие порта
//Port = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY);
Port = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);

убери flush
   // tcflush(Port, TCIOFLUSH); -- поробуй без этого
   static const char data[]={ 0x00, 0xFF, 0xF0, 0x0F, 0x33, 0xCC, 0x55, 0xAA, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
   write(Port, data, sizeof(data) );

Еще можешь сделать 2 стоповых бита вместо одного.
Заведи счетчик отправленых пакетов и передавай его в пакете.

Поменяй кабель на более короткий
Обычная отладка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.