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



         

Структура COMMPROP - часть 6


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

   #include <windows.h>

   . . .

   HANDLE    port;

   COMMPROP *pr;

   . . .

   port=CreateFile("COM2",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

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

   GetCommProperties(port,pr);

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

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

      pr->wProvSpec1=COMMPROP_INITIALIZED;

      GetCommProperties(port,pr);

   }

   . . .

   HeapFree(GetProcessHeap(),0,pr);

   CloseHandle(port);

   . . .

Не всегда настройку порта можно жестко зашить в код программы. Внешние устройства могут позволять изменять параметры линии связи, чаще всего скорость обмена, которая зависит от длины соединительного кабеля. В таких случаях разумно предоставить пользователю самому задавать режимы обмена. Можно самому разработать соответствующий настроечный диалог, а можно воспользоваться стандартным, предоставляемым операционной системой, а точнее, производителем порта. Стандартный диалог выводится функцией CommConfigDialog, которая работает со структурой COMMCONFIG. Как и в случае со структурой DCB, заполнять структуру COMMCONFIG можно вручную или вызовом соответствующих функций.




Содержание  Назад  Вперед