Yacht Devices Новости: YDWR-02 и YDWN-02: обработка строк NMEA 0183 и новые сетевые функции
12.12.2023
Замена подстрок, исправление контрольной суммы, исходящие соединения, новые Web Gauges и выбор канала Wi-Fi.
Рисунок 1. Замена подстрок и исправление контрольной суммы
Четыре года назад мы добавили поддержку датчика Silicon Marine SM010 в NMEA 0183 Gateway: в начале его предложения XDR отсутствовал идентификатор передатчика. Это редкий случай, но время от времени к нам обращаются с похожими проблемами или просят добавить отсутствующую контрольную сумму для подключения старого оборудования.
Теперь это легко сделать в наших NMEA 0183 Wi-Fi Gateway и NMEA 0183 Wi-Fi Router. Мы добавили замену подстрок, выполняемую до обработки полученного предложения или его пересылки на другой порт. Она позволяет добавить или заменить Talker ID, переименовать датчики в XDR и многое другое. Контрольная сумма изменённого предложения будет исправлена, а если её нет — добавлена.
Вторая новая функция на странице «NMEA Settings» — добавление или исправление контрольной суммы. Она предназначена для очень старого оборудования, а также для ленивых разработчиков и тестировщиков, набирающих предложения вручную. Новые функции можно применить ко всем входам или к выбранному порту либо серверу.
В январе мы планируем выпустить Yacht Devices Python Gateway с портами NMEA 0183, NMEA 2000 и USB. Мы упоминаем его в каждой публикации не только ради рекламы: это действительно палочка-выручалочка для сложных случаев. И обе описанные выше задачи ему тоже по силам.
n0183.talker('YD') # set talker id to transmit from
n0183.check(False) # allow reception of NMEA0183 messages with invalid checksum
# Called upon reception of 'XDR' message
def rx_xdr(n0183, line):
n0183.send(line) # retransmit XDR message in correct format
# return False, because message retransmitted manually, no need to send it again
return False
# Register callback on receive of 'XDR' messages. E.g. '$SMXDR', 'XDR', '!--XDR'
n0183.rxcallback(0, rx_xdr, 'XDR', check=False)
Код выше исправляет некорректные предложения вида
$XDR,C,25.5,C,SM010A
добавлением отсутствующего Talker ID и контрольной суммы. Вся магия — в строке n0183.check(False), разрешающей обработку некорректных предложений, и в n0183.send(line), автоматически добавляющей Talker ID и контрольную сумму.
Но то же самое можно сделать вручную, спустившись с уровня NMEA 0183 на уровень UART:
# called upon reception of '\n' character
def rx_line(uart, line):
if line.startswith(b'$XDR'): # check for incorrect XDR sentence
line = line.replace(b'XDR', b'SMXDR') # replace incorrect sentence id
line = line.split(b'*')[0].rstrip() # remove old checksum
chk = checksum(line[1:]) # calculate checksum for new payload
line += b'*{:0=2X}\r\n'.format(chk) # add back and new checksum
uart_tx.write(line) # send result to UART TX
uart_rx.linecallback(rx_line) # register callback on receive of '\n' character
Так что, если у вас сложная задача с NMEA 0183, скоро мы предложим решение!
И Gateway, и Router получили обновлённые Web Gauges. Особенно это полезно для NMEA 0183 Wi-Fi Router, который может управлять автопилотами Raymarine через SeaTalk 1 так же, как штатный пульт. Подробнее об этом — в предыдущей новости.
Рисунок 2. Выбор канала Wi-Fi
В обоих устройствах появился выбор канала Wi-Fi в режиме точки доступа. В больших маринах можно выбрать менее загруженный канал и улучшить качество связи. На телефоне, планшете или ноутбуке ничего менять не потребуется, но одно из этих устройств может пригодиться для сканирования окружающих сетей и выбора подходящего канала. В этой статье описано, как это сделать в разных операционных системах. Во все остальные наши устройства с Wi-Fi эта функция уже добавлена.
Рисунок 3. Исходящее соединение
Последняя новинка — исходящее соединение TCP или UDP. В этом выпуске оно добавлено только в NMEA 0183 Wi-Fi Router и уже имеется в NMEA 2000 Wi-Fi Router и Ethernet Gateway. Современные картплоттеры могут не иметь физических портов NMEA 0183, но обычно оснащены Wi-Fi. Передача NMEA 0183 по Wi-Fi позволяет легко подключать телефоны и ноутбуки и использовать судовые данные в программах.
К сожалению, только устройства Navico умеют передавать и принимать NMEA 0183 по Wi-Fi. Мы проверили это с Simrad GO XSR; подробности здесь. Можно установить новый Simrad и подключить к нему старое оборудование NMEA 0183 по Wi-Fi через YDWN-02, а если есть и SeaTalk 1 — через YDWR-02.
Raymarine и Garmin не разрешают приём и передачу NMEA 0183 по Wi-Fi — это лишь вопрос политики компаний. Но благодаря такой политике мы продадим больше шлюзов NMEA 0183 — NMEA 2000.
Рисунок 4. Приложение Layline для Android
Если вы участвуете в регатах и пользуетесь Android, обратите внимание на новое бесплатное приложение Layline , созданное специально для гонок. Его разработали с использованием нашего YDWR-02, но оно работает с любым нашим шлюзом или маршрутизатором. Оно поможет на старте, при поворотах оверштаг и выборе стратегии. Можно прочитать руководство или установить приложение из Google Play.
Прошивки версии 1.71 для NMEA 0183 Wi-Fi Router и NMEA 0183 Wi-Fi Gateway доступны в разделе загрузок.



