Запись и прослушивание одного и того же последовательного порта в Python - PullRequest
2 голосов
/ 03 августа 2011

Есть ли способ сделать это без ошибки «COM PORT IN USE»?У меня есть служба, которая слушает предложения GPR GPRMC на COM-порт.Но у меня нет этого устройства на моем тестовом компьютере.Поэтому я хотел написать скрипт на python для имитации предложений GPRMC на порту, в то время как мой другой скрипт на python прослушивает тот же порт и анализирует.

1 Ответ

3 голосов
/ 03 августа 2011

Запись на последовательный порт не оставляет сообщения на последовательном порту для чтения тем же устройством.Это просто не то, как работает последовательный порт, и это не то, как написано большинство ОС, чтобы разрешить поведение буфера.Что вам действительно нужно, так это виртуальный последовательный порт.

Просмотрите этот раздел статьи в википедии о перенаправителях COM-портов и посмотрите, удовлетворит ли какой-либо из них ваши потребности.В противном случае я рекомендую искать эмулятор COM-порта, виртуализацию последовательного порта и т. Д., Пока не найдете программное обеспечение, которое будет работать для вашего варианта использования и операционной системы.Это может быть сложно, особенно если синхронизация важна для ваших симуляций.

Edit : Чтобы сделать это немного более понятным, давайте поговорим о том, что на самом деле делает библиотека pySerial для связи с python.pySerial просто взаимодействует с API операционной системы для последовательного порта.ОС обычно моделирует это как местоположение для записи информации и место для чтения информации (буферизованное практически во всех современных вычислительных системах).Важно понимать, что с точки зрения ОС (как смоделирован последовательный порт) местоположение записи может быть ТОЛЬКО записано, а место чтения - только из.Это может или не может быть, как фактическое последовательное аппаратное обеспечение взаимодействует с машиной, в большинстве аппаратных и интерфейсных конструкций последовательного порта, с которыми я работал, это имеет место ради простоты и уменьшенной стоимости.Из-за этого вы можете выбрать один из двух основных вариантов:

  1. Дайте ОС виртуальный последовательный порт, который вы можете читать и записывать каким-либо образом

  2. Возможно, проще, подключите нуль-модемный адаптер к одному из последовательных портов вашего компьютера и, используя последовательный кабель, соедините два порта.Теперь вы можете использовать свой сервис на одном порту, а скрипт имитируемого устройства - на другом.

...