LINUX.ORG.RU

uart rs232, теряется 9й байт


0

1

на плате FirendlyARM mini2440 имеется uart. с этого uart шлю modbus запросы на прибор. прибор отвечает, но в ответе вместо 11 байт приходит только 10 байт, причем теряется именно 9й по счету байт. куда копать?

зы. когда запрашиваю у прибора те же данные, но с десктопа по rs232, посылка приходит нормально.

Кабель фольгой обмотай.

sn1ln
()

Может настройки четности разные. Например Even и None.

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

плата с микроконтроллером, вяжусь с ней по ModBus. отправляю запрос, получаю ответ 10 байт вместо 11.
выглядит все так, будто микроконтроллер отправил мне полноценный ответ с посчитаной crc. но принимаю я его так, будто 9-й байт из посылки потеряли при доправке.
выглядит все будто uart принял 8 байт, 9й заигнорил, прнял оставшиеся и передал мне то что получилось.

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

Попробуй отключить служебные биты контроля IO. те в настройках c_iflag убрать IXON (c_iflag &= ~IXON)!

anonymous
()
Ответ на: комментарий от VladimirMalyk

Значит, настройки такие. Вполне возможно, что он и не игнорирует бит четности, а проверяет его и, если сообщение верно, отправляет его дальше (уже без бита четности).

Eddy_Em ☆☆☆☆☆
()

На железке, совершенно случайно, не установлены разные с цомпутером настройки стоп-битов?

one_more_hokum ★★★
()

Порт сконфигурирован в «raw mode»?

struct termios options; tcgetattr(fd, &options); options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); tcsetattr(fd, TCSANOW, &options);

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