OPEN_EXISTING.
FILE.FLAG OVERLAPPED.
{funkcja zwraca w przypadku powodzenia uchwyt portu, natomiast jeśli coś lue wyjdzie - wartość 1NVAL1D_HANDLE_VALUE (-i)}
if ( OpeningHandle = INVALID_HANDLE_VALUE ) then Exit;
{tu można tez wywołać funkcję GetLastErrar zęby sprawdzić, co było przyczyną - w uproszczonej praktyce takie sprawdzanie z powodzeniem pomijamy }
{ dodatkowo możemy sprawdzić, czy uzyskany uchwyt jest właściwy dla patiu • urządzenia znakowego) if ( GetFileType ( OpeningHandle ) <> FILE_TYPE_ĆHAR ) then Exit;
{ wszystko poprawne - więc : }
Result := OpeningHandle; end.
a później na przykład :
Co mil and le :■ OpenPoil (100M1’);
if ( ComHandle = 0 ) then (informacja o błędzie otwarcia ]
Uzyskany uchwyt jest później używany w wywołaniach funkcji konfiguracyjnych i komunikacyjnych (jest odpowiednikiem identyfikatora portu z Win 16).
Do zamknięcia otwartego w ten sposób portu służy funkcja (też uniwersalna ):
CloseHandle ( A Handle : THandle );
jako parametr podajemy właśnie nasz uchwyt ComHandle.
Cd. • konfigurowanie otwartego portu.
(2)Erap poprzedni
po otwarciu portu uzyskaliśmy jego uchwyt; ComHandle.
Konfiguracja jest zapisywana w strukturach : TDcb (taka sama nazwa ale zmieniony układ ) oraz TCommTimeouts ( nowość • pozwala dowolnie ustawiać tuneouty transmisji). Rekord TDcb może być użyty indywidiiabue albo jako składnik nadrzędnej struktury TCommConfig ( posługiwanie się TConunCaifig udostępnia nam gotowe systemowe okienko dialogowe nastaw pomi1 ) Występują także inne specjalizowane struknny ( CommProp. ModemSettings. ModemDevCaps ). które przy naszych zastosowaniach można pominąć.
Podstawowe ustawienia portu są zawarte w rekordzie TDcb :
TDCB = packed record DCBlength: DWORD;
BaudRate: DWORD;
Flags: Longuit. wReserved: Word;
XonLim: Word.
XoffLim: Word.
ByteSize: Byle;
Parity: By te;
StopBits: Byte;
XonChar:CHAR XoffChar CHAR;
ErrorChar: CHAR;
EofChar: CHAR EvtChar: CHAR wReserved 1: Word; end;
DCBlength • rozmiar rekordu ( czyli SizeOf (TDcb)) • nie musimy go jawnie ustawiać;
BaudRate • szybkość transmisji, podobnie jak poprzednio może być podana bezpośrednio albo jako predefiniowany indeks ( CBR_... : 110. 300. 600. 1200, 2-100. 4800. 9600. 14400. 19200. 38400. 56000. 57600. 115200. 128000. 256000 ) np. CBR_9600;
Flag* • flagi i pola bitowe :
bit 0 - fBinary'
tryb binarny transmisji. W odróżnieniu od W111I6, Wui32 zawsze używa trybu buiamego i flaga ta jest (i powinna pozostać ) ustawiona; bit 1 - fParity