10.04.2017 Подключение Javad через сеть
Boldenkov (обсуждение | вклад) |
Boldenkov (обсуждение | вклад) (→Netcat) |
||
Строка 52: | Строка 52: | ||
Аналогичным образом можно раздавать по сети данные и от других приёмников. | Аналогичным образом можно раздавать по сети данные и от других приёмников. | ||
+ | |||
+ | == ser2net == | ||
+ | |||
+ | Достоинство NetCat заключается в том, что NetCat уже, как правило, установлен и его можно использовать сразу. Но есть и проблема - при отключении клиента NetCat тоже отключается и его надо перезапускать. Это неприемлемо для предполагаемого применения. | ||
+ | |||
+ | Одним из возможных решений является программа ser2net, предназначенная специально для вещания данных из физического порта в сеть. | ||
+ | |||
+ | ser2net есть в стандартных репозиториях Linux и ставится стандартным способом. | ||
+ | |||
+ | Для правильной работы ser2net нужно его настроить. Обычно предполагается, что будет использоваться настроечный файл, но я решил, что удобнее будет запускать ser2net по мере необходимости для каждого порта отдельно, указывая параметры в коммандной строке. | ||
+ | |||
+ | Делается это таким образом: | ||
+ | <source lang="bash"> | ||
+ | ser2net -C "2222:raw:0:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS -XONXOFF -RTSCTS LOCAL" | ||
+ | </source> | ||
+ | |||
+ | После этого поток данных из последовательного порта доступен через сеть: | ||
+ | <source lang="bash"> | ||
+ | curl 192.168.0.94:2222 | ||
+ | </source> | ||
+ | |||
{{wl-publish: 2017-04-10 11:19:45 +0300 | Boldenkov }} | {{wl-publish: 2017-04-10 11:19:45 +0300 | Boldenkov }} |
Версия 14:32, 25 апреля 2017
|
Проблема
В прошлой статье было описано, как обработать данные с приёмника Javad в RTKlib. Проблема заключалась в том, что программа RTKnavi неправильно работает с последовательным портом. Приходилось сначала записывать поток данных в файл, а потом обрабатывать через convbin/rtkpost.
Netcat
RTKnavi позволяет работать с приёмником не только через последовательный порт, но и через сеть. Но Javad не имеет сетевого интерфейса.
Решением может быть перенаправление последовательного порта в сетевой сокет. Это делается с помощью программы netcat (nc).
Я создал скрипт, настраивающий Javad на передачу данных и запускающий трансляцию данных в сеть:
PORT=/dev/ttyUSB0
FILE=/tmp/javad.log
stty -F $PORT raw
stty -F $PORT 115200 cs8 -parenb -cstopb -ixon
echo "em,,def:{1,,}" > $PORT
echo "em,,jps/gd" > $PORT
echo "em,,jps/qd" > $PORT
echo "em,,jps/WD" > $PORT
nc -l -p 3500 </dev/ttyUSB0
Последняя команда передаёт данные из порта /dev/ttyUSB0 в порт TCP 3500.
После этого к нему можно подключиться через RTKnavi:
Режим работы TCP Client, указывается адрес 127.0.0.1 (компьютер, на котором это всё запущено), или другой, порт - 3500, тот, который был указан netcat.
После нажатия кнопки Start всё работает.
Аналогичным образом можно раздавать по сети данные и от других приёмников.
ser2net
Достоинство NetCat заключается в том, что NetCat уже, как правило, установлен и его можно использовать сразу. Но есть и проблема - при отключении клиента NetCat тоже отключается и его надо перезапускать. Это неприемлемо для предполагаемого применения.
Одним из возможных решений является программа ser2net, предназначенная специально для вещания данных из физического порта в сеть.
ser2net есть в стандартных репозиториях Linux и ставится стандартным способом.
Для правильной работы ser2net нужно его настроить. Обычно предполагается, что будет использоваться настроечный файл, но я решил, что удобнее будет запускать ser2net по мере необходимости для каждого порта отдельно, указывая параметры в коммандной строке.
Делается это таким образом:
После этого поток данных из последовательного порта доступен через сеть:
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.