10.04.2017 Подключение Javad через сеть
|
Проблема
В прошлой статье было описано, как обработать данные с приёмника 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 по мере необходимости для каждого порта отдельно, указывая параметры в коммандной строке.
Делается это таким образом:
После этого поток данных из последовательного порта доступен через сеть:
После перезапуска curl всё продолжает работать.
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.