подключиться к последовательному устройству через TCP-сокет

1950
oddy

Моя установка такова:

  • Серийное устройство ttyUSB0 подключено к ноутбуку A
  • программное обеспечение, открывающее сокет TCP для прослушивания и записи, также работает на ноутбуке A (linux)

Моя цель - передать данные с / на последовательное устройство ttyUSB0 в / из программного обеспечения, которое слушает и пишет в TCP.

Я пытался использовать socat для этого. Подобно,

socat -d -d -d -d -x TCP-LISTEN:7757,reuseaddr,fork FILE:/dev/ttyUSB0,b9600,raw 

Но тогда, поскольку программное обеспечение работает на том же ноутбуке, это не удаленное соединение. Программное обеспечение не может открыть сокет на порту 7757 и завершается с ошибкой «Адрес уже используется».

Как я могу достичь своей цели тогда? Т.е. как может мое программное обеспечение, открывающее сокет на каком-либо порту, получать и отправлять данные на последовательное устройство без какой-либо модификации самого программного обеспечения?

2
Похоже, ваше программное обеспечение также пытается прослушивать порт. James Roth 10 лет назад 0
@JamesRoth Это так. Он пытается создать сокет для Listing и записи в. Но не может, так как он занят сокатом. Что нужно сделать, чтобы выполнить мою задачу? oddy 10 лет назад 0
С точки зрения C socat, действующий как сервер, вызывает socket (), bind (), listen () и затем accept (). Клиент тоже не может этого сделать. Вызывает socket (), затем connect (). У меня такое ощущение, что обе программы пытаются быть сервером. Можете ли вы рассказать нам больше о вашем программном обеспечении? James Roth 10 лет назад 0
@JamesRoth Это абсолютно правильно. Программное обеспечение открывает ServerSocket и прослушивает порт 7758. Программное обеспечение также имеет клиентский сокет, подключенный к серверу (GUI). Я не знал, что socat будет работать и как сервер. Я очень надеюсь, что этот ответ от SO http://stackoverflow.com/a/20122074/368264 поможет мне с моей проблемой. Я смог бы проверить это через 7 часов. oddy 10 лет назад 0

0 ответов на вопрос