Как подключить два виртуальных последовательных порта для чтения данных из GPSFeed ?

#linux #dart #connection #simulator #virtual-serial-port

#linux #дротик #подключение #тренажёр #виртуальный последовательный порт #dart

Вопрос:

Недавно я скачал файл gpsfeed , установил атрибут executable и запустил его с помощью (OS: Manjaro):

 $ ./gpsfeed _amd64
  

Я пытаюсь перечислить все порты, подключенные через программу Dart (код здесь с помощью пакета dart_serial_port), но в нем ничего не указано. Я предполагаю, что это связано с тем, что виртуальные последовательные порты не подключены, но я не знаю, как это получить. Существует такая программа, как com0com, но она работает только в Windows.

Есть какие-нибудь рекомендации? Есть ли другие подобные тренажеры gpsfeed ?

PS: gpsfeed настроен для работы с использованием COM3 (протокол RS-232).

Ответ №1:

Шаги

 $ chomod  x gpsfeed _amd64
  
  • Установить socat пакет:
 $ sudo pacman -S socat
  
  • Создайте пару виртуальных последовательных портов (VSP) с socat :
 $ socat -d -d pty,raw,echo=0 pty,raw,echo=0
  
  • Он отображает созданные виртуальные порты, в данном случае: /dev/pts/4 и /dev/pts/5 . Один порт будет передатчиком, а другой — приемником.
  • Открыть gpsfeed приложение:
 $ ./gpsfeed _amd64
  
  • В конфигурации gpsfeed для выполнения:
  1. Подключение>> проверьте: последовательный и снимите флажок: TCP, UDP, Http
  2. Последовательный / IP >> Порт: / dev/ pts /4 (передатчик), скорость: 9600
  • Запустить симулятор (кнопка с концентрическим кругом в качестве значка)
  • Чтение данных из /dev/pts/5 (приемник)

Код Python (установочный pyserial пакет):

 import serial

ser = serial.Serial('/dev/pts/5', 9600)
iter = 5

while iter > 0:
  print(ser.readline().decode("utf-8"))
  iter -= 1
  

Очень немногие существующие пакеты для Dart (например dart_serial_port ) не работают с виртуальными портами.