LINUX.ORG.RU

[мыши и кактусы] Последовательные порты


0

0

Итак, проблема состоит в следующем, есть АЦП http://www.lcard.ru/e-270.php3 , к нему надо написать простейший драйвер под Linux.

Имеющаяся модификация работает по RS232, причем на следующем режиме: нет никакого управления данными, нет проверок четности, скорость -- 115200; передаваемый фрейм состоит из одного стартового бита, одного стопового и 8 битов данных. По контактам RxD и TxD соответственно гонятся данные. Остальные контакты не используются, надо лишь только сбросить DSR и DCD перед началом работы с АЦП(сигнал о готовности). Это все, судя по описанию.

Далее, есть пример простейшей программы, которая работает под Windows, задавая этому АЦП вопрос "ты хто?": http://www.everfall.com/paste/id.php?z50se8kcjous . Соответственно там приходит вразумительный ответ. Пытаюсь сделать все то же самое под Linux: http://www.everfall.com/paste/id.php?1e4x4z3rr78b . Приходит только один байт вместо 14. Причем он судя по всему сигнализирует об ошибке, ибо, если любую чушь АЦП передать вместо запрашиваемой строки из 4х байт, то придет тот же байт.

Посему самый прямой и непосредственный вопрос к гуру, рулящим в программировании последовательных портов: насколько соответствуют виндовым такие установки режима порта под линукс? И, если не соответствуют, что надо изменить? Заранее спасибо.

★★★

Ответ на: комментарий от ovax

По ссылкам лежит исходник с tcsetattr, зачем stty? Вопрос не в том, что что-то выставляется не так, а в том, что я точно не знаю, как именно это все должно выглядеть в коде.

Предупреждая гугловодов, serial programming howto читал, два раза. Тут все-таки опыт сильно влияет. Ибо нуб так просто не сможет провести соответствие между параметрами последовательных режимов.

balodja ★★★
() автор топика
Ответ на: комментарий от balodja

Хрен знает...
Я обычно не делаю мемсет нулем термиоса, а получаю его через tcgetattr. Сомневаюсь, что это поможет.

ratatosk
()
Ответ на: комментарий от balodja

Анонимов давно забанили.

Ты бы хоть return value у read/write проверял... Попробуй к другому порт приконнектится, попробуй из шелла позаливать и посливать данные из порта итп...

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.