Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Идентификация устройства подключенного к СОМ порту

9.4K
28 января 2008 года
TanaT
12 / / 07.04.2005
Здравствуйте!
Я сейчас пишу софт для работы со своим устройством. На данный момент моя программа может найти и отобразить в ListBox список СОМ портов, к которе открыты. Как получить имя самого устройства подключенного к порту? Например, как на рисунке(MaxStream PKG-U):
1.6K
28 января 2008 года
Vov4ick
476 / / 01.02.2007
Дать устройству команды ATI0 ... ATI7 и посмотреть ответы на каждую. Ответы на 0, 3 и 4 команды и используются для определения устройства.
Собственно причём здесь Ц++, тем более визуальный? ;-)
Ответы большинства модемов таковы:
Цитата:
I0 Reports product code, e.g., 56000

I1 Reports the least significant byte of the stored checksum in decimal (see
firmware release notes).
Reports 255 if the prestored checksum value is FFh.

I2 Reports "OK".

I3 Reports identification codes in the form M_VX.X-F_A where:
M = Basic model (i.e., V90, K56, or V34)
VX.X = Firmware version (e.g., V2.060)
F = Firmware model and ROM Size:
V90, K56, or V34 = V90, K56, or V34 in 1M ROM
V90_2M, K56_2M, or V34_2M = V90, K56, or V34 in 2M ROM
A = Application
DLS = Desktop serial
DLP = Desktop parallel
DLL = Low Power PC Card
DL3 = Low Power 3V
DLG = Low Power World Class
Example: K56_V2.060-K56_2M_DLS

I4 Reports OEM defined identifier string in either Hayes-compatible binary
format (default) or ASCII format
(selectable by ConfigurACE), e.g.:
a007840284C6002F
bC60000000
r1005111151012000
r3000111170000000

I5 Reports Country Code parameter (see NCn command), e.g., 022

I6 Reports modem data pump model and internal code revision, e.g.,
RCV56DPF L8570A Rev 47.12/47.12

9.4K
29 января 2008 года
TanaT
12 / / 07.04.2005
Цитата: Vov4ick
Дать устройству команды ATI0 ... ATI7 и посмотреть ответы на каждую. Ответы на 0, 3 и 4 команды и используются для определения устройства.
Собственно причём здесь Ц++, тем более визуальный? ;-)
Ответы большинства модемов таковы:


Спасибо, но это не то! Вот то, что мне надо :http://www.ftdichip.com/Support/Knowledgebase/ftid_getdevicedescription.htm

С++ здесь притом, что я пишу программу, которая должна распознавать устройства подключенные к СОМ портам (виртуальним и реальным).

1.6K
29 января 2008 года
Vov4ick
476 / / 01.02.2007
А в чём же тогда проблема? ;-)
Эта библиотека скорее всего делает то, что я написал.
2.9K
29 января 2008 года
Ation
96 / / 27.07.2004
Она практически наверняка делает так. Это ж библиотека для устройств, воткнутых в переходник USB-Serial от FTDI.
И информацию об устройстве, подключенном к COM порту(виртуальному или реальному), можно получить исключительно АТ коммандами.
5.1K
03 февраля 2008 года
Karrde
88 / / 15.10.2007
Слушай а если несложно, как ты определял открытые порты? просто брал порт, отсылал ему at-команду, и если порт отвечал-то открыт?
1.6K
04 февраля 2008 года
Vov4ick
476 / / 01.02.2007
А венда не даст просто открыть порт, если он уже кем-то открыт. К тому же перет общением с устройством, подключенным к порту нужно проверять готовность как порта, так и устройства.
5.1K
04 февраля 2008 года
Karrde
88 / / 15.10.2007
Я немного не про то. Допустим, у нас есть несколько com-портов. И мне нужно проверить, к какому из них подключен модем. Последовательно открываю каждый из них createfile'ом, потом проверяю-если он открыт, значит к ком-порту что то подключено. Но как понять, что именно. Ведь похоже, что у каждого компьютера 1-ый(а иногда и 2-ой) порт задействован(последовательный порт). Отсылкой at-команды? просто если данное устройство не является модемом, то программа просто виснет, дожидаясь ответа.
87
04 февраля 2008 года
Kogrom
2.7K / / 02.02.2008
Может по DOS-имени можно будет разобраться? Например функция QueryDosDevice("COM1", DosName, MAX_PATH); может вернуть вернуть в строку DosName более интересное значение, чем просто "COM1" (если он конечно есть).
1.6K
04 февраля 2008 года
Vov4ick
476 / / 01.02.2007
QueryDosDevice вернёт что-то вроде \device\serial1
Нужно по очереди для каждого порта проверять готовность порта, готовность устройства, затем командами I3, I4 попытаться узнать, что это такое.
87
05 февраля 2008 года
Kogrom
2.7K / / 02.02.2008
Цитата: Vov4ick
QueryDosDevice вернёт что-то вроде \device\serial1

Это для стандартных COM-портов. А для всяких
устройств типа MaxStream PKG-U или адаптеров USB-COM там будет что-то другое, вписанное разработчиком ПО при установке драйвера. А если нет порта, то вроде бы пустую строку должен возвратить.

5.1K
05 февраля 2008 года
Karrde
88 / / 15.10.2007
Кстати ещё тогда довольно ламерский вопрос по этой теме. Читаю сообщения с порта с помощью ReadFile. Так вот, если сообщения нету или уже все прочитано, то readfile ждет следующего символа-то есть программа зависает. Как можно обойти эту проблему, чтобы если прочитать нечего, прога не ждала следующего символа, а переходила дальше
2.9K
05 февраля 2008 года
Ation
96 / / 27.07.2004
выставить таймауты на чтение или читать асинхронно.
87
05 февраля 2008 года
Kogrom
2.7K / / 02.02.2008
to Karrde: параметр cbInQue структуры COMSTAT может помочь.
1.6K
05 февраля 2008 года
Vov4ick
476 / / 01.02.2007
Помотри справку по функциям Get\SetCommTimeouts
А также Get\SetCommMask и Get\SetCommState.
Также можно использовать асинхронную работу с устройствами, но это будет несколько сложнее.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог