Чтение онлайн

на главную - закладки

Жанры

Интернет-журнал "Домашняя лаборатория", 2007 №8
Шрифт:

• PCF_DTRDSR — Поддерживаются сигналы DTR/DSR.

• PCF_INTTIMEOUTS — Поддерживается межсимвольный тайм-аут.

• PCF_PARITY_CHECK — Поддерживается контроль четности.

• PCF_RLSD — Поддерживается определение наличия сигнала в приемной линии.

• PCF_RTSCTS — Поддерживаются сигналы RTS/CTS.

• PCF_SETXCHAR — Поддерживаются задаваемые символы XON/XOFF.

• PCF_SPECIALCHARS — Поддерживаются спецсимволы.

• PCF_TOTALTIMEOUTS — Поддерживаются общие тайм-ауты (ожидаемое время).

• PCF_XONXOFF — Поддерживается программное (XON/XOFF) управление

потоком.

• PCF_XONXOFF — Поддерживается программное (XON/XOFF) управление потоком.

• dwSettableParams

Битовая маска. Определяет допустимые для изменения параметры. Возможны следующие значения:

• SP_BAUD — Скорость обмена.

• SP_DATABITS — Бит в символе.

• SP_HANDSHAKING — Рукопожатие (управление потоком).

• SP_PARITY — Четность.

• SP_PARITY_CHECK — Контроль четности.

• SP_RLSD — Детектирование наличия сигнала в приемной линии.

• SP_STOPBITS — Количество стоповых бит.

• dwSettableBaud

Битовая маска. Определяет допустимый набор скоростей обмена. Допустимые для данного поля значения указаны в описании поля dwMaxBaud.

• wSettableData

Битовая маска. Определяет допустимые длины символов, в битах. Возможны следующие значения:

• DATABITS_5 — 5 бит

• DATABITS_6 — 6 бит

• DATABITS_7 — 7 бит

• DATABITS_8 — 8 бит

• DATABITS_16 — 16 бит

• DATABITS_16Х — Специальный широкий канал через аппаратную последовательную линию.

• wSettableStop Parity

Битовая маска. Определяет допустимое количество стоповых бит и режимы четности. Возможны следующие значения:

• STOPBITS_10 — Один стоповый бит

• STOPBITS_15 — Полтора стоповых бита

• STOPBITS_20 — Два стоповых бита

• PARITY_NONE — Без четности

• PARITY_ODD — Дополнение до нечетности

• PARITY_EVEN — Дополнение до четности

• PARITY_MARK — Бит четности всегда "1"

• PARITY_SPACE — Бит четности всегда "0"

• dwCurrentTxQueue

Определяет текущий размер, в байтах, внутренней очереди передачи драйвера. Нулевое значение свидетельствует о недоступности данного параметра.

• dwCurrentRxQueue

Определяет текущий размер, в байтах, внутренней очереди приема драйвера. Нулевое значение свидетельствует о недоступности данного параметра.

• dwProvSped

Устройство-зависимые данные. Программа должна игнорировать содержимое данного поля, за исключением случаев, когда Вы точно знаете формат этих данных. Занесите в данное поле значение COMMPROP_INITIALIZED, если поле wPacketLength уже содержит правильное значение.

• dwProvSpec2

Устройство-зависимые данные.

Программа должна игнорировать содержимое данного поля, за исключением случаев, когда Вы точно знаете формат этих данных.

• wcProvChar

Устройство-зависимые данные. Программа должна игнорировать содержимое данного поля, за исключением случаев, когда Вы точно знаете формат этих данных.

Информация хранящаяся в структуре COMMPROP требуется редко, так как чаще всего точно известно с каким типом портов будет работать программа.

Остановлюсь чуть подробнее на описании некоторых полей. Поле wPacketLength играет несколько иную роль, чем поле DCBlength структуры DCB, хотя из его описания это не следует. Секрет прост. Поле wcProvChar, расположенное в конце структуры, может содержать, а может и не содержать, данных. Вы не в состоянии это узнать не запросив информацию. В свою очередь, перед запросом информации Вы должны выделить (и обнулить) память под структуру COMMPROP. Поэтому последовательность шагов для получения всей информации следующая:

• Выделить память под структуру COMMPROP.

• Запросить информацию у системы вызвав функцию GetCommProperties.

• Если поле wPacketLength содержит значение большее sizeof(COMMPROP), то имеется дополнительная информация. Для ее получения измените размер ранее выделенного блока памяти, новый размер должен быть равен значению занесенному системой в поле wPacketLength. Установите в поле wProvSpecl значение COMMPROP INITIALIZED, это будет означать, что выделен достаточный блок памяти для получения дополнительной информации. Повторно вызовите функцию GetCommProperties.

Чаще всего дополнительная информация представлена в виде структуры MODEMDEVCAPS, которая размещается на месте поля wcProvChar, если поле dwProvSubType содержит значение PST MODEM.

Получить информацию об устройстве в виде структуры COMMPROP можно уже упоминавшейся функцией GetCommProperies. Вот как выглядит ее прототип:

BOOL GetCommProperties(

HANDLE hFile,

LPCOMMPROP lpCommProp

);

Запросить информацию можно только об уже открытом устройстве. При этом для структуры, адресуемой вторым параметром, должна быть выделена память. Приведу пример получения информации о коммуникационном устройстве:

#include <windows.h>

HANDLE port;

COMMPROP *pr;

port=CreateFile("COM2",GENERIC_READ|GENERIC_WRIТЕ,0,NULL,OPEN_EXISTING,0,NULL);

pr=(COMMPROP*)HeapAlloc(GetProcessHeapO,HEAP_ZERO_MEMORY,sizeof(COMMPROP));

GetCommProperties(port,pr);

if(pr->wPacketLength!= sizeof(COMMPROP)) {{

pr=(COMMPROP*)HeapRealloc(GetProcessHeap,HEAP_ZERO_MEMORY,pr,pr- >wPacketLength);

pr->wProvSpecl=COMMPROP_INITIALIZED;

Поделиться:
Популярные книги

Кодекс Охотника. Книга XVIII

Винокуров Юрий
18. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVIII

Оружие победы

Грабин Василий Гаврилович
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Оружие победы

Конь Рыжий

Москвитина Полина Дмитриевна
2. Сказания о людях тайги
Проза:
историческая проза
8.75
рейтинг книги
Конь Рыжий

Хёвдинг Нормандии. Эмма, королева двух королей

Улофсон Руне Пер
Проза:
историческая проза
5.00
рейтинг книги
Хёвдинг Нормандии. Эмма, королева двух королей

Офицер-разведки

Поселягин Владимир Геннадьевич
2. Красноармеец
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Офицер-разведки

Кодекс Крови. Книга VII

Борзых М.
7. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VII

Девочка-яд

Коэн Даша
2. Молодые, горячие, влюбленные
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Девочка-яд

Адвокат Империи 3

Карелин Сергей Витальевич
3. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Адвокат Империи 3

Никчёмная Наследница

Кат Зозо
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Никчёмная Наследница

Пипец Котенку!

Майерс Александр
1. РОС: Пипец Котенку!
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Пипец Котенку!

Чайлдфри

Тоцка Тала
Любовные романы:
современные любовные романы
6.51
рейтинг книги
Чайлдфри

Игра престолов

Мартин Джордж Р.Р.
1. Песнь Льда и Огня
Фантастика:
фэнтези
9.48
рейтинг книги
Игра престолов

Картошка есть? А если найду?

Дорничев Дмитрий
1. Моё пространственное убежище
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.50
рейтинг книги
Картошка есть? А если найду?

Черный дембель. Часть 2

Федин Андрей Анатольевич
2. Черный дембель
Фантастика:
попаданцы
альтернативная история
4.25
рейтинг книги
Черный дембель. Часть 2