ЗАО «ЗЭО»
Техническая поддержка пользователей => Тион270, Тион-Про270, Сириус270 => Тема начата: aborilov от 31 Января, 2011, 17:33:22
-
Доброе время суток!
Необходимо работать на тионе с RS485, подскажите с чего начать.
Какое устройство отвечает за этот порт /dev/ttyS2 ? или /dev/ttyS1.
Перемычку J24 необходимо установить?
-
На Тионе сейчас прошивка с завода, есть ли там поддержка 485?
-
> Какое устройство отвечает за этот порт /dev/ttyS2 ? или /dev/ttyS1.
/dev/ttyS1
> Перемычку J24 необходимо установить?
Установить, это разрешение приёма (включение приёма) ИМС формирователя 485 уровней.
-
На Тионе сейчас прошивка с завода, есть ли там поддержка 485?
Не совсем, придётся программно управлять сигналом BT_RTS/ (S1 RTS) для включения/выключения передачи.
-
да, про это я уже почитал.
вот сейчас пробую что нибудь получить на тионе по 485,
для это на тионе делаю
cat /dev/ttyS1
и с хоста шлю данные.
Сработает ли такой тест для 485?
Должен ли я что нибудь получить на Тионе.
P.S. с 485 работаю впервые, поэтому и пока многое не понятно
-
Так же сейчас попробовал на хосте запустить Ваш serial-pair.c, на хосте с ключем -m и на тионе в слайве, и опять получил на тионе receive 0 bytes.
-
кажется проблема в проводах, сейчас попробую
-
вот сейчас пробую что нибудь получить на тионе по 485,
для это на тионе делаю
cat /dev/ttyS1
и с хоста шлю данные.
Сработает ли такой тест для 485?
Должен ли я что нибудь получить на Тионе.
Да, если порт включён без аппаратного управления потоком.
> P.S. с 485 работаю впервые, поэтому и пока многое не понятно
Соблюдайте сигналы A, B.
-
Прием получил. Что сделать чтобы началась передача.
Надо править serial-pair или только на уровне драйверов ядра править?
если можно пример какой-нибудь
-
В пользовательской программе, до начала передачи
s |= TIOCM_RTS;
ioctl(serial_port_fd, TIOCMSET, &s);
После передачи (основная проблема определить длительность передачи)
s &= ~TIOCM_RTS;
ioctl(serial_port_fd, TIOCMSET, &s);
Или наоборот.
-
В пользовательской программе, до начала передачи
s |= TIOCM_RTS;
ioctl(serial_port_fd, TIOCMSET, &s);
После передачи (основная проблема определить длительность передачи)
s &= ~TIOCM_RTS;
ioctl(serial_port_fd, TIOCMSET, &s);
Или наоборот.
если я правильно понял, перед этим надо считать в s текущие значения, что то типа
ioctl(fd, TIOCMGET, &s);
так?
-
> ioctl(fd, TIOCMGET, &s);
Конечно
-
чему равен HZ в тионе?
-
Вы можете это выяснить самостоятельно.
-
В пользовательской программе, до начала передачи
s |= TIOCM_RTS;
ioctl(serial_port_fd, TIOCMSET, &s);
После передачи (основная проблема определить длительность передачи)
s &= ~TIOCM_RTS;
ioctl(serial_port_fd, TIOCMSET, &s);
Или наоборот.
Блин, день убил. Оказалось все наоборот,
надо выставлять
s &= ~TIOCM_RTS;
ioctl(serial_port_fd, TIOCMSET, &s);
до передачи, тогда передача пойдет...