ЗАО «ЗЭО»
Техническая поддержка пользователей => Тион270, Тион-Про270, Сириус270 => Тема начата: KDM от 10 Августа, 2012, 19:35:55
-
Здраствуйте.
Во время работы в linux, qt с платой тион270 и Сириус270 по протоколу RS-485 при записи данных в /dev/ttyS1 передаваемые данные возвращаются для чтения (получаю эхо).
Режим работы: скорость=115200, 8 битов данных, 1 стоп бит, без паритета.
Работаю следующим образом:
Настройка:
struct termios options;
fd = open("/dev/ttyS1", O_RDWR | O_NOCTTY | O_NDELAY);
fcntl(fd, F_SETFL, O_NONBLOCK);
tcgetattr(fd, &options);
options.c_cflag = B115200 | CS8 | CLOCAL | CREAD;
options.c_iflag = 0;
options.c_oflag = 0;
options.c_lflag = 0;
options.c_cc[VTIME] = 0;
options.c_cc[VMIN] = 0;
tcsetattr(fd, TCSANOW, &options);
Чтение
read(fd, Mesg, MaxKBytes);
Запись
write(fd, Mesg, KBytes);
Текущие настройки порта (после запуска программы):
# stty -F /dev/ttyS1 -a
speed 115200 baud; rows 24; columns 80;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 0; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
Пробовал:
1) Выставить флаг ECHO. Эффект - пока данных нет, все нормально. Как только отправляю команду один раз, получаю ее многократное повторение (эхо-эхо, возникает петля обратной связи).
2) Отсоединить устройство, передаю данные "в воздух" - все равно получаю на входе их же.
3) #1 + #2 = возникает петля обратной связи.
4) Дописал установку флага ~TIOCM_RTS.
int status2;
ioctl(fd, TIOCMGET, &status2);
status2&=~TIOCM_RTS;
ioctl(fd, TIOCMSET, &status2);
Итог: эхо отсутствует, как и передача данных.
Просьба подсказать:
- в каком месте возникает эхо и как его можно убрать?
- какую функцию выполняет перемычка J48 (в каких случаях и как ее использовать)?
-
> все равно получаю на входе их же.
Это аппаратно.
См.
http://www.zao-zeo.ru/forum/index.php?topic=488.0
http://www.zao-zeo.ru/forum/index.php?topic=401.0
J48 см. http://www.zao-zeo.ru/media/files/docs/sirius270_rev1.2_circuit.pdf
Если поставить в 1-2, то есть "шанс" отключать аппаратное эхо сигналом BT_CTS (как GPIO).
-
> Это аппаратно.
ADM485 ?
-
> ADM485 ?
Если включён RE, то она принимает то что передаёт.