Написание драйвера TCP на RS232 - PullRequest
1 голос
/ 10 октября 2010

Мне нужно выставить соединение RS232 клиентам через сетевой сокет. Я планирую написать на python сервер сокетов TCP, который будет прослушивать некоторые порты, позволять клиенту подключаться и обрабатывать исходящие запросы, а также управлять и контролировать запросы и ответы от порта R2232.

У меня вопрос: как мне синхронизировать клиентов, каждый клиент отправит некоторую строку на последовательный порт, и после отправки ответа мне нужно вернуть этому клиенту результат. Только тогда мне нужно обработать следующий запрос.

Как мне синхронизировать доступ к последовательному порту?

Ответы [ 2 ]

2 голосов
/ 10 октября 2010

Чтобы расширить ответ Sjoerd, создание однопоточного сервера (например, http://docs.python.org/library/basehttpserver.html), который затем контролирует порт (через что-то вроде http://pyserial.sourceforge.net/pyserial_api.html), плюс тривиальная структура URL), дает вам простую RESTful способ выставления и обработки запросов.

Я использую нечто очень похожее на это (немного более сложное с веб-интерфейсом) для управления нашей ландшафтной системой орошения ; моя жена любит это.

1 голос
/ 10 октября 2010

Самый простой способ - просто принять соединение, обработать запрос и закрыть соединение. Таким образом, ваша программа обрабатывает только один запрос за раз.

Альтернативой является использование блокировки или семафоров для предотвращения одновременного доступа нескольких клиентов к порту RS232.

...