Работа с коммуникационными портами (COM и LPT) в программах для Win32


Работа с коммуникационными портами (COM и LPT) в программах для Win32 - стр. 22


BOOL GetCommConfig( HANDLE hCommDev, LPCOMMCONFIG lpCC, LPDWORD lpdwSize );

Параметры функции следующие:

hCommDev

     

Описатель открытого коммуникационного порта.

 

lpCC

     

Адрес выделеного и заполненого нулями, кроме поля dwSize, блока памяти под структуру COMMCONFIG. В поле dwSize нужно занести размер структуры COMMCONFIG. После вызова функции все поля структуры будут содержать информацию о текущих параметрах порта.

 

lpdwSize

     

Адрес двойного слова, которое после воврата из функции будет содержать число фактически переданных в структуру байт.

В случае успешного завершения функция возвращает ненулевое значение.

Как всегда не обошлось без тонкостей. Структура COMMPROP имеет перемнную длину, поэтому затруднительно сразу выделить требуемый блок памяти. Как и в случае с функцией GetCommProperties, функцию GetCommConfig придется вызывать дважды:

. . . COMMCONFIG *cf; DWORD sz; HANDLE port; . . . cf=(COMMCONFIG*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(COMMCONFIG)); cf->dwSize=sizeof(COMMCONFIG); GetCommConfig(port,cf,&sz); if(sz > sizeof(COMMCONFIG)) { cf=(COMMCONFIG*)HeapRealloc(GetProcessHeap(),HEAP_ZERO_MEMORY,cf,sz); cf->dwSize=sz; GetCommConfig(port,cf,&sz); } . . . HeapFree(GetProcessHeap(),0,cf); CloseHandle(port); . . .

Теперь, имея заполненую корректной информацией структуру COMMCONFIG, можно позволить пользователю выполнить настройку параметров с помощью функции CommConfigDialog:

BOOL CommConfigDialog( LPTSTR lpszName, HWND hWnd, LPCOMMCONFIG lpCC );

Вызов этой функции приводит к отображению примерно такого диалогового окна:

Вид окна может отличаться от приведенного. Это зависит от операционной системы и динамической библиотеки, предоставленной производителем порта.

Познакомимся с параметрами функции CommConfigDialog:

lpszName

     

Указатель на строку с именем порта для которого отображается диалоговое окно. К реальному имени порта эта строка не имеет никакого отношения, она просто выводится в заголовке окна.




Начало  Назад  Вперед



Книжный магазин