Необходим байт новой строки для отправки этих данных - PullRequest
0 голосов
/ 06 июля 2010

Я использую язык C и Linux в качестве моей платформы программирования. Прямо сейчас я изучаю некоторые встроенные программы. Я использую POS-устройство для своей тренировки, и мой хост - это ОС Windows, использующая Cygwin.

Я создал простое приложение, которое будет запускаться на целевом устройстве, которое будет считывать данные в последовательный порт, а на стороне хоста я создал простое приложение, которое будет записывать данные в последовательный порт. Теперь моя проблема заключается в том, что когда я отправляю данные без 0x0a (LN) в конце буфера, целевое устройство не получит эти данные. Но я не уверен, было ли это отправлено или нет. Но когда я помещаю 0x0a (LN) в конец буфера для отправки, тогда целевое устройство получит эти данные.

Я пропустил некоторые настройки моего приложения? Или правильное размещение байта 0x0a в конце буфера tx.

Спасибо

Ответы [ 2 ]

2 голосов
/ 06 июля 2010

Звучит так, будто ваш последовательный порт (на самом деле «терминальное устройство» для Linux) может находиться в режиме линейного буфера.При настройке с tcsetattr обязательно очистите c_lflag (вы не хотите ICANON).Вы также должны проверить флаги ввода / вывода, которые влияют на трансляцию между CRLF и NL, так как вы, вероятно, тоже не хотите этого поведения.Настройки терминала по умолчанию ориентированы на взаимодействие пользователя с приложением, а не на передачу данных.

0 голосов
/ 06 июля 2010

Похоже, что он выполняет буферизацию строки. Сделайте сброс после отправки данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...