Я работаю над отправкой данных через COM в C ++ для ESPA 4.4.4. Программа B, подключенная к COM-порту, обычно определяет, посылает ли программа A данные. Чтобы проверить это, я создал две пары виртуальных портов с com0com, COM1 / CNCB1, COM2 / CNCB2. С hub4com я подключился как объяснил Вот
Но когда я пытаюсь подключиться к COM1 или COM2 с помощью A или B, это невозможно сделать, поскольку порт уже используется.
Так что моя проблема в том, что я хочу, чтобы два порта связывались.
-> Первый вопрос: хороша ли архитектура в этом уроке? Я имею в виду нормально ли иметь дело с COM1 / CNCB1 и COM2 / CNCB2?
-> Второй вопрос: команда для соединения двух портов — «hub4com options \. \ Input_COM \. \ Output_COM1″ \. \ Output_COM2 «…
Поэтому я попытался сделать: «hub4com -baud = 9600 \. \ COM1 \. \ COM2». Команда действительна, и я получаю следующее возвращение:
Open("\\.\COM1", baud=9600, data=8, parity=no, stop=1, octs=off, odsr=off, ox=off, ix=off, idsr=off, ito=0) - OK
Open("\\.\COM2", baud=9600, data=8, parity=no, stop=1, octs=off, odsr=off, ox=off, ix=off, idsr=off, ito=0) - OK
Route data COM1(0) --> COM2(1)
Route data COM2(1) --> COM1(0)
Route flow control COM1(0) --> COM2(1)
Route flow control COM2(1) --> COM1(0)
Started COM1(0)
Started COM2(1)
Итак, дорога установлена, и данные должны сообщаться. Но я не могу подключиться к COM-портам с моими программами. Поэтому я попытался подключиться к CNCB1 и CNCB2. Я могу подключиться к COM-портам. Но я не знаю, пришли ли данные.
-> Итак, третий вопрос: есть ли надежный способ узнать, отправляет ли COM1 данные в COM2? Просто немного программного обеспечения было бы здорово, чтобы проверить архитектуру 🙂
Это должно быть хорошо, они просто имена. Если вы хотите, чтобы в среднем типе приложения был человек, вы бы хотели, чтобы данные передавались как … (ProgramA -> COM1 -> CNCB1 -> ProgramB -> COM2 -> CNCB2 -> Destination.) Поэтому в ProgramB должны быть открыты порты как для CNCB1, так и для COM2.
Я не слишком знаком с hub4com, чтобы дать вам ответ на этот вопрос. Похоже, что hub4com открывает порты, и ваше приложение также пытается открыть порт. Только одно приложение может иметь доступ к порту.
Похоже, вам нужен монитор порта. http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx
Portmon больше не поддерживается и не работает в последних (x64) версиях Windows …
Теперь в Windows вы можете использовать эту замечательную программу: Серийный-Lab
У меня была похожая проблема, и я также использовал com0com в сочетании с вышеупомянутым SerialLab.
Когда com0com был установлен, он создал порты COM3 и COM4, и я использовал эти два для тестирования. В вашем случае кажется, что у вас есть COM1 и COM2, созданные com0com?
В моем приложении (Java) я отправлял данные на COM4, а в SerialLab я подключался к COM5 и мог читать данные, отправленные из моего приложения Java. Вы также можете отправлять данные из SerialLab, чтобы вы могли проверить симуляцию связи во всех направлениях.
Еще одна похожая программа также MyTerm.