Re[14]: Ответ
От: x64 Россия http://x64blog.name
Дата: 03.04.13 01:49
Оценка: 11 (2)
A>При нажатии на кнопку обнаружения модулей в проге, выполняется вот что:

Да, направление верное, только я пошёл бы дальше и использовал бы API-монитор (рекомендую этот), там нужно протрейсить на рабочей машине (во время взаимодействия программы с устройством, разумеется) вызовы группы "Communications" типа GetCommConfig(), etc. и группы "File I/O" вроде CreateFile(), ReadFile(), etc. Ещё всякие DeviceIoControl() и SetupDiXxx() можно прихватить, на всякий случай, чтобы уж ничего не упустить. Вполне вероятно, что после этих мероприятий все данные будут как на ладони и останется только разобрать их формат. К слову, есть и более специализированные инструменты для анализа таких протоколов, например, это или это, вообще-то тысячи их.
JID: x64j@jabber.ru
Как изучать чужое USB устройство, чтоб сделать его эмулятор?
От: Alphelion  
Дата: 01.04.13 16:41
Оценка:
Здравствуйте, вот преподнесла мне нелегкая такой сюрприз...
В кратце, есть набор различных USB устройст (различные измерители силы, температуры, давления, расстояния, количества кислорода и т.д.)
Есть прога, которая определяет какое устройство подключено и выводит с него инфу в таблицы
Мне надо сделать, чтоб прога работала с виртуальными устройствами...

С чего начать? Сейча я планирую юзать DSF, там вроде есть готовый симулятор USB устройства, но для начала мне надо узнать как сделать, чтоб прога распознала подключенный эмулятор как одно из устройств?
Как вообще вклиниться или иным способ узнать протокол обмена данными между устройствами и прогой? Надо как-то перехватывать сообщения или еще как-то?
Буду рад любой информации...
Re: Как изучать чужое USB устройство, чтоб сделать его эмулятор?
От: LuciferSingapore Россия  
Дата: 01.04.13 16:48
Оценка:
Здравствуйте, Alphelion, Вы писали:

A>как сделать, чтоб прога распознала подключенный эмулятор как одно из устройств?


насколько я понимаю, надо, чтобы виртуальное USB-устройство прикидывалось устройством с тем же VendorId/ProductId, как и реальное устройство

A>Как вообще вклиниться или иным способ узнать протокол обмена данными между устройствами и прогой? Надо как-то перехватывать сообщения или еще как-то?


гуглить по словам "USB sniffer"
Re: Ответ
От: Alphelion  
Дата: 01.04.13 17:01
Оценка:
Забыл уточнить, схема подключения устройств такая:
К компу подключается главное USB устройство, к которому подключается другое измерительное. Каждое измерительное устройство, может быть соеденено с другим измерительным... К примеру, термометр с измерителем давления и одно из них подключено к главному.

Видимо тем, какое устройство подключено рулит главное устройство и оно же сообщения отсылает об измерениях. Ну да ладно, за наводку по сниферам спасибо. Буду разбираться
Re[2]: Ответ
От: redp Ниоткуда redplait.blogspot.com
Дата: 01.04.13 17:34
Оценка:
A>К компу подключается главное USB устройство, к которому подключается другое измерительное. Каждое измерительное устройство, может быть соеденено с другим измерительным... К примеру, термометр с измерителем давления и одно из них подключено к главному.
ну логично — в главном usb hub, остальные можно подключать в любом порядке
доку сперва про usb покурите какую-нть — начать можно с Агуров "Практика программирования USB"
паранойя не болезнь, а критерий профпригодности
Re[3]: Ответ
От: pva  
Дата: 01.04.13 21:32
Оценка:
Здравствуйте, redp, Вы писали:

A>>К компу подключается главное USB устройство, к которому подключается другое измерительное. Каждое измерительное устройство, может быть соеденено с другим измерительным... К примеру, термометр с измерителем давления и одно из них подключено к главному.

R>ну логично — в главном usb hub, остальные можно подключать в любом порядке
R>доку сперва про usb покурите какую-нть — начать можно с Агуров "Практика программирования USB"
Подозрительно все это. Обычно usb шина не используется для промышленной автоматизации. Главное устройство, скорей всего, контроллер с usb интерфейсом для общения с ПК. А вот остальные устройства могут работать на совершенно другой технологии. Можно покурить, начиная отсюда. Внизу там широкий блок полезных ссылок.
Вы уверенны, что все ваши устройства — usb?

А чтоб работать с виртуальными usb устройствами надо бы API извлечь из ПО. А уж потом разрабатывать, собственно, устройства. Для мониторинга usb обмена рекомендую UsbTrace или BusHound.
newbie
Re[4]: Ответ
От: mike_rs Россия  
Дата: 02.04.13 06:54
Оценка:
Здравствуйте, pva, Вы писали:

pva>Здравствуйте, redp, Вы писали:


A>>>К компу подключается главное USB устройство, к которому подключается другое измерительное. Каждое измерительное устройство, может быть соеденено с другим измерительным... К примеру, термометр с измерителем давления и одно из них подключено к главному.

R>>ну логично — в главном usb hub, остальные можно подключать в любом порядке
R>>доку сперва про usb покурите какую-нть — начать можно с Агуров "Практика программирования USB"
pva>Подозрительно все это. Обычно usb шина не используется для промышленной автоматизации. Главное устройство, скорей всего, контроллер с usb интерфейсом для общения с ПК. А вот остальные устройства могут работать на совершенно другой технологии. Можно покурить, начиная отсюда. Внизу там широкий блок полезных ссылок.
pva>Вы уверенны, что все ваши устройства — usb?

а какая разница ? ему надо эмулировать именно юсб подключение и, разобравшись в протоколе, слать данные с любого количества якобы подключенных устройств. А как там они с мастером на физицеском уровне разговаривают — кого это волнует ? это все под капотом.
Совет правильные — сниффер пакетов и анализ протокола совмещенные с реверсингом управляющей программы и драйверов железки (если она не hid конечно, для hid все будет проще)
Re[5]: Ответ
От: pva  
Дата: 02.04.13 08:35
Оценка:
Здравствуйте, mike_rs, Вы писали:

_>а какая разница ?

Разница в том, что можно не разбираться с, возможно, самопальным USB протоколом обмена, а использовать стандартные протоколы. Но прийдется, конечно, сэмулировать все эти датчики и сделать сопряжение с другой стороны контроллера.
newbie
Re[4]: Ответ
От: Аноним  
Дата: 02.04.13 10:01
Оценка:
Вот, что написано про каждый из измерительных модулей: Модуль представляет собой пластиковый корпус с двумя разъемами USB типа A/F и A/M.

Меня еще вот что заинтересовало, может не обязательно писать эмулятор?
Может как-то можно внедриться в прогу и вызывать нужные мне функции с нужными параметрами?
Я точно не знаю, как прога запрашивает данные с USB устройства, но может можно определить адреса функций, которыми она пользуется или которые она вызывает, чтоб узнавать о подключении устройств или приеме данных, затем внедрить в нее DLL и из нее вызывать что-то или перехватывать что-то...

Как вообще происходит обмен данными между прогой и USB устройством? Я про прикладной уровень. Есть ли какие-то стандартные WinAPi функции для этого, которые мне можно легко отследить? Я уже смотрел ее, пока нашел только DDE функции, но толком не знаю для чего они используются, дело в том что прога многооконная (одновременно несколько окон открыто. НЕ MDI), может просто для передачи данных между окнами...
Re[5]: Ответ
От: Аноним  
Дата: 02.04.13 13:37
Оценка:
Еще заметил, что вместе с этой прогой, устанавливаются дрова silabser.sys
https://www.silabs.com/Support%20Documents/Software/CP210x_VCP_Windows_Release_Notes.txt
Какая-то хрень USB to UART Bridge Driver, увы, почитал что есть UART, но дает ли мне это что-то, не знаю
Re[6]: Ответ
От: andrey82  
Дата: 02.04.13 13:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Еще заметил, что вместе с этой прогой, устанавливаются дрова silabser.sys

А>https://www.silabs.com/Support%20Documents/Software/CP210x_VCP_Windows_Release_Notes.txt
А>Какая-то хрень USB to UART Bridge Driver, увы, почитал что есть UART, но дает ли мне это что-то, не знаю

Скорее всего это преобразователь USB-RS232/RS485. Сооств. подчиненные устройства используют эти простые интерфейсы. При подключении этого главного устройства в системе появляются дополнительные COM порты?
Re[7]: Ответ
От: Аноним  
Дата: 02.04.13 14:25
Оценка:
Благодарю за ответ. Завтра попробую узнать... Сейчас уже дома
Re[8]: Ответ
От: andrey82  
Дата: 02.04.13 16:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Благодарю за ответ. Завтра попробую узнать... Сейчас уже дома


В общем, если порты появляются, то скорее всего весь прикладной обмен идет через них (не исключено даже использование какого-либо стандартного протокола типа Modbus), и задача решается вообще без написания драйвера.
Re[9]: Ответ
От: Аноним  
Дата: 02.04.13 16:17
Оценка:
А порт должен появляться именно при вставке главного USB устройства и исчезать при извлечении?
Re[10]: Ответ
От: andrey82  
Дата: 02.04.13 16:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А порт должен появляться именно при вставке главного USB устройства и исчезать при извлечении?


Сложно сказать, не зная, что это за устройства.
Не исключен вариант, что главное — USB хаб, а отдельные содержат в себе конверторы USB-UART.
Но гораздо более вероятен вариант, что многопортовый конвертор — главное устройство, а остальные — подключаются уже по 232/485/еще что-то. Какая длина и тип кабелей от главного до дополнительных?
Re[11]: Ответ
От: Аноним  
Дата: 02.04.13 16:36
Оценка:
Главный модуль назовем М0, он подключается напрямую к USB компа.
К этому модулю, может быть подключен ТОЛЬКО один измерительный модуль, НО, к каждому измерительному модулю, можно подключить еще один измерительный...
Выходит, что к М0 может быть подключен какой-нибудь модуль для измерения напряжения, а уже к нему, термометр.

На схеме выглядит так:


Измерительные устройства втыкаются друг в друга и про каждое из них написано: "С двумя разъемами USB типа A/F и A/M"
Про М0 написано: "С двумя разъемами USB типа A/F и A/M и одним mini USB/M"
Re[12]: Ответ
От: andrey82  
Дата: 02.04.13 16:49
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Измерительные устройства втыкаются друг в друга и про каждое из них написано: "С двумя разъемами USB типа A/F и A/M"

А>Про М0 написано: "С двумя разъемами USB типа A/F и A/M и одним mini USB/M"

Любопытно
Это серийное изделие? Документация хоть есть на него? А то запас телепатии на сегодня исчерпан
Предположу, что на эти самые вторичные USB разъемы выведено питание и сигнальные линии RS485 (2w). Соответственно, получаем шинную топологию, которая прекрасно работает в RS485.
Re[13]: Ответ
От: Alphelion  
Дата: 02.04.13 17:02
Оценка:
Изделие серийное, но документации у меня нет, и, сомневаюсь, что будет...
Есть левое описание для учеников, цитаты из которго я привел о разъемах, более ничего интересного.

Завтра, в общем, буду узнавать про COM порт. Очень надеюсь без эмуля обойтись
Re[13]: Ответ
От: Alphelion  
Дата: 02.04.13 17:38
Оценка:
При нажатии на кнопку обнаружения модулей в проге, выполняется вот что:
21:36:58,9943780 ProLog.exe 636 RegCloseKey HKCU SUCCESS
21:36:58,9944788 ProLog.exe 636 RegOpenKey HKCU SUCCESS Desired Access: Maximum Allowed
21:36:58,9946596 ProLog.exe 636 RegCloseKey HKCU SUCCESS
21:36:58,9947071 ProLog.exe 636 RegOpenKey HKLM\Hardware\devicemap\serialcomm SUCCESS Desired Access: All Access
21:36:58,9948789 ProLog.exe 636 RegQueryKey HKLM\HARDWARE\DEVICEMAP\SERIALCOMM SUCCESS Query: Cached, SubKeys: 0, Values: 2
21:36:58,9949577 ProLog.exe 636 RegEnumValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM SUCCESS Index: 0, Name: \Device\Serial0, Type: REG_SZ, Length: 10, Data: COM1
21:36:58,9950272 ProLog.exe 636 RegEnumValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM SUCCESS Index: 1, Name: \Device\Serial1, Type: REG_SZ, Length: 10, Data: COM2
21:36:58,9951264 ProLog.exe 636 RegCloseKey HKLM\HARDWARE\DEVICEMAP\SERIALCOMM SUCCESS
21:36:58,9951560 ProLog.exe 636 RegOpenKey HKLM\Hardware\devicemap\serialcomm SUCCESS Desired Access: All Access
21:36:58,9952295 ProLog.exe 636 RegQueryValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\Serial0 SUCCESS Type: REG_SZ, Length: 10, Data: COM1
21:36:58,9952882 ProLog.exe 636 RegQueryValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\Serial0 SUCCESS Type: REG_SZ, Length: 10, Data: COM1
21:36:58,9953527 ProLog.exe 636 RegQueryValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\Serial0 SUCCESS Type: REG_SZ, Length: 10, Data: COM1
21:36:58,9954080 ProLog.exe 636 RegQueryValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\Serial0 SUCCESS Type: REG_SZ, Length: 10, Data: COM1
21:36:58,9954661 ProLog.exe 636 RegQueryValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\Serial0 SUCCESS Type: REG_SZ, Length: 10, Data: COM1
21:36:58,9955220 ProLog.exe 636 RegQueryValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\Serial0 SUCCESS Type: REG_SZ, Length: 10, Data: COM1
21:36:58,9956195 ProLog.exe 636 RegCloseKey HKLM\HARDWARE\DEVICEMAP\SERIALCOMM SUCCESS
21:36:58,9956505 ProLog.exe 636 RegOpenKey HKLM\Hardware\devicemap\serialcomm SUCCESS Desired Access: All Access
21:36:58,9957139 ProLog.exe 636 RegQueryValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\Serial1 SUCCESS Type: REG_SZ, Length: 10, Data: COM2
21:36:58,9957712 ProLog.exe 636 RegQueryValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\Serial1 SUCCESS Type: REG_SZ, Length: 10, Data: COM2
21:36:58,9958293 ProLog.exe 636 RegQueryValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\Serial1 SUCCESS Type: REG_SZ, Length: 10, Data: COM2
21:36:58,9958852 ProLog.exe 636 RegQueryValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\Serial1 SUCCESS Type: REG_SZ, Length: 10, Data: COM2
21:36:58,9959433 ProLog.exe 636 RegQueryValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\Serial1 SUCCESS Type: REG_SZ, Length: 10, Data: COM2
21:36:58,9959994 ProLog.exe 636 RegQueryValue HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\Serial1 SUCCESS Type: REG_SZ, Length: 10, Data: COM2
21:36:58,9960980 ProLog.exe 636 RegCloseKey HKLM\HARDWARE\DEVICEMAP\SERIALCOMM SUCCESS

Что-то с COM портами связано...
Re[13]: Ответ
От: Alphelion  
Дата: 02.04.13 18:30
Оценка:
Это имеется ввиду при не подключенных USB устройствах... У меня их дома нет, только прога.
Re[15]: Ответ
От: Аноним  
Дата: 03.04.13 13:28
Оценка:
При вставке usb устройства, появляется порт COM10 и при извлечении исчезает. Если в реестре кликнуть по нему, то будет что-то написано про silabser.sys (вроде в параметре)

Поснифал работу проги при подключеных модулях, тпи дофига вызовов функция для работы с COM, и еще больше ClearCommError, все ими забито.
# Time of Day Thread Module API Return Value Error Duration
9 3:37:51.906 PM 1 ProLog.exe CreateFileA ( "//./COM10", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ) 0x00000154 0.0264140
10 3:37:51.937 PM 1 ProLog.exe GetCommState ( 0x00000154, 0x0012f93c ) TRUE 0.0000528
11 3:37:51.937 PM 1 ProLog.exe SetCommState ( 0x00000154, 0x0012f93c ) TRUE 0.0306980
12 3:37:51.968 PM 1 ProLog.exe PurgeComm ( 0x00000154, PURGE_RXABORT | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_TXCLEAR ) TRUE 0.0029518
13 3:37:51.968 PM 1 ProLog.exe WriteFile ( 0x00000154, 0x0104a724, 1, 0x0012f934, NULL ) TRUE 0.0009767
14 3:37:51.968 PM 1 ProLog.exe WriteFile ( 0x00000154, 0x01025788, 1, 0x0012f934, NULL ) TRUE 0.0009859
15 3:37:51.968 PM 1 ProLog.exe WriteFile ( 0x00000154, 0x00ff4dd8, 1, 0x0012f934, NULL ) TRUE 0.0009814
16 3:37:51.968 PM 1 ProLog.exe WriteFile ( 0x00000154, 0x01007f68, 1, 0x0012f934, NULL ) TRUE 0.0009803
17 3:37:51.968 PM 1 ProLog.exe WriteFile ( 0x00000154, 0x0101bfc8, 1, 0x0012f934, NULL ) TRUE 0.0012979
18 3:37:51.968 PM 1 ProLog.exe WriteFile ( 0x00000154, 0x01043498, 1, 0x0012f934, NULL ) TRUE 0.0006691
19 3:37:51.968 PM 1 ProLog.exe WriteFile ( 0x00000154, 0x0104ec18, 1, 0x0012f934, NULL ) TRUE 0.0009822
20 3:37:51.968 PM 1 ProLog.exe WriteFile ( 0x00000154, 0x010dc054, 1, 0x0012f934, NULL ) TRUE 0.0009836
21 3:37:52.078 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012f954, 0x0012f958 ) TRUE 0.0000472
22 3:37:52.078 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012f920, 0x0012f924 ) TRUE 0.0000131
23 3:37:52.078 PM 1 ProLog.exe ReadFile ( 0x00000154, 0x0105d4a8, 7, 0x0012f95c, NULL ) TRUE 0.0000075
24 3:37:52.078 PM 1 ProLog.exe CreateFileA ( "com.mc", GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ) 0x0000013c 0.0001902
25 3:37:52.078 PM 1 ProLog.exe GetFileType ( 0x0000013c ) FILE_TYPE_DISK 0.0000036
26 3:37:52.078 PM 1 ProLog.exe WriteFile ( 0x0000013c, 0x0012fad0, 4, 0x0012f94c, NULL ) TRUE 0.0000268
27 3:37:52.078 PM 1 ProLog.exe PurgeComm ( 0x00000154, PURGE_RXABORT | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_TXCLEAR ) TRUE 0.0028004
28 3:37:52.078 PM 1 ProLog.exe PurgeComm ( 0x00000154, PURGE_RXABORT | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_TXCLEAR ) TRUE 0.0029716
29 3:37:52.093 PM 1 ProLog.exe WriteFile ( 0x00000154, 0x0103e874, 1, 0x0012fa64, NULL ) TRUE 0.0009772
30 3:37:52.093 PM 1 ProLog.exe WriteFile ( 0x00000154, 0x010a5e74, 1, 0x0012fa64, NULL ) TRUE 0.0009850
31 3:37:52.093 PM 1 ProLog.exe WriteFile ( 0x00000154, 0x01030470, 1, 0x0012fa64, NULL ) TRUE 0.0009772
32 3:37:52.093 PM 1 ProLog.exe WriteFile ( 0x00000154, 0x00ffb210, 1, 0x0012fa64, NULL ) TRUE 0.0009822
33 3:37:52.093 PM 1 ProLog.exe WriteFile ( 0x00000154, 0x010dc818, 1, 0x0012fa64, NULL ) TRUE 0.0013460
34 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fa84, 0x0012fa88 ) TRUE 0.0000204
35 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fa50, 0x0012fa54 ) TRUE 0.0000123
36 3:37:52.093 PM 1 ProLog.exe ReadFile ( 0x00000154, 0x0105f5dc, 4, 0x0012fa8c, NULL ) TRUE 0.0000056
37 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fabc, 0x0012fac0 ) TRUE 0.0000123
38 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fabc, 0x0012fac0 ) TRUE 0.0000425
39 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fabc, 0x0012fac0 ) TRUE 0.0000232
40 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fabc, 0x0012fac0 ) TRUE 0.0000212
41 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fabc, 0x0012fac0 ) TRUE 0.0000201
42 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fabc, 0x0012fac0 ) TRUE 0.0000204
43 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fabc, 0x0012fac0 ) TRUE 0.0000198
44 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fabc, 0x0012fac0 ) TRUE 0.0000307
45 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fabc, 0x0012fac0 ) TRUE 0.0000212
46 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fabc, 0x0012fac0 ) TRUE 0.0000207
47 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fabc, 0x0012fac0 ) TRUE 0.0000196
48 3:37:52.093 PM 1 ProLog.exe ClearCommError ( 0x00000154, 0x0012fabc, 0x0012fac0 ) TRUE 0.0000198
и понеслись ClearCommError...

Собственно, мне надо как-то самому создать этот порт com и в него что-то писать или можно похукать в экзешнике нужные функции и возвращать нужные параметры?
Re[9]: Ответ
От: CanisLupus  
Дата: 09.04.13 11:01
Оценка:
Здравствуйте, andrey82, Вы писали:

A>В общем, если порты появляются, то скорее всего весь прикладной обмен идет через них (не исключено даже использование какого-либо стандартного протокола типа Modbus), и задача решается вообще без написания драйвера.


Присоединюсь со своим вопросом. У меня тоже USB устройство, при подключении появляется COM-порт. Как подслушать обмен?
Сейчас я использую Free Serial Port Monitor, сохраняю его лог и анализирую его своей программой. Но хотелось бы обойтись без стороннего сниффера, а вставить эту возможность в свою программу (под Windows). Где об это почитать? Есть ли свободные библиотеки для сниффинга COM-портов?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.