- •Работа с коммуникационными портами (com и lpt) в программах для Win32. Автор: Титов Олег
 - •Функция CreateFile
 - •LpFileName
 - •DwDesiredAccess
 - •Структура dcb
 - •DcBlength
 - •BaudRate
 - •FBinary
 - •FAbortOnError
 - •Функция GetCommState
 - •Функция SetCommState
 - •Структура commtimeouts
 - •ReadIntervalTimeout
 - •ReadTotalTimeoutMultiplier
 - •ReadTotalTimeoutConstant
 - •WriteTotalTimeoutMultiplier
 - •WriteTotalTimeoutConstant
 - •Функция BuildCommDcbAndTimeouts
 - •Функция GetCommTimeouts
 - •ФункцияSetCommTimeouts
 - •Структура commprop
 - •WPacketLength
 - •DwProvSubType
 - •DwProvCapabilities
 - •DwSettableParams
 - •Структура commconfig
 - •Функция CommConfigDialog
 - •LpszName
 - •Функция SetCommConfig
 - •Функции GetDefaultCommConfig и SetDegaultCommConfig
 - •Функция SetupComm
 - •Функцити ReadFile и WriteFile
 - •Функция PurgeComm
 - •Функция FlushFileBuffers
 - •Функция TransmitCommChar
 - •Функции SetCommBreak и ClearCommBreak
 - •Функция EscapeCommFunction
 - •Функция ClearCommError
 - •LpErrors
 - •Функция SetCommMask
 - •Функция GetCommMask
 - •Функция WaitCommEvent
 - •Структура overlapped
 - •Продолжение следует ...
 
Структура overlapped
Структура OVERLAPPEDвыглядит следующим образом:
typedef struct _OVERLAPPED {{
DWORD Internal;
DWORD InternalHigh;
DWORD Offset;
DWORD OffsetHigh;
HANDLE hEvent;
} OVERLAPPED, *LPOVERLAPPED;
Подробно описывать поля этой структуры не буду, поскольку данная статья не о файловом вводе/выводе вообще, а о работе с портами. Для наших целей, за исключением WaitCommEvent, можно просто обнулить все поля этой структуры. ДляWaitCommEventполеhEventдолжно содержать корректный описатель объекта "событие". Что бы все стало понятно, надо разобраться с таким обязательным атрибутом параллельной работы как синхронизация.
Синхронизация нужна для упорядочения доступа к совместно используемым объектам. Предположим, что две программы одновременно пытаются изменить значение общей переменной. Каков будет результат? Скорее всего неопределенный. Что бы этого избежать требуется разрешать доступ второй программы к переменной только после того, как с ней закончила работать первая программа.
Для синхронизации используются различные методы: семафоры, блокировки, события, критические секции и т.п. События являются простейшими синхронизирующими объектами. Они могут находиться только в двух состояниях: установленном (событие произошло или наступило) и сброшенном (событие не произошло или не наступило). События создаются функцией CreateEventи разрушаются функциейCloseHandle. Установить событие можно функциейSetEvent, а сброситьResetEvent.
Продолжение следует ...
Copyright (C) 1999-2004 by Cydem Group. All rights reserved.
	
		 
		 
		
		
