![]() |
Daten von einem Port/Datei lesen (CreateFile, ReadFile)
Liste der Anhänge anzeigen (Anzahl: 1)
Ich will euch ein kleines Beispiel zum lesen, und schreiben von/auf den COM-Port (sollte auch für den LPT gehen) geben. Alternativ kann man damit auch Dateien lesen bzw. schreiben.
Hier einen Code Schnipsel, der zum Lesen so funktionieren sollte:
Delphi-Quellcode:
Da das Programm so lange 'hängt' bis entweder das Timeout eintritt, oder ein Signal reinkommt, hab ich das in meinen Programmen mit threads laufen lassen.
var
hCommFile : THandle; TimeoutBuffer : PCOMMTIMEOUTS; NumberOfBytesRead : dword; Buffer : array[0..255] of char; // Gibt das Handle zum Port bzw. der Datei zurück hCommFile := CreateFile(PChar('COM1'), GENERIC_READ, //Hier evtl. einen anderen Parameter setzen 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if(hCommFile = INVALID_HANDLE_VALUE)then // Fehler; Kein gültiges Handle! // Wenn man vom ComPort liest sollte man auch diese Zeilen benutzen. // Wenn man darauf schreibt, sollt man auch noch WriteTotalTimeoutMultiplier und WriteTotalTimeoutConstant setzen GetMem(TimeoutBuffer, sizeof(COMMTIMEOUTS)); GetCommTimeouts(hCommFile, TimeoutBuffer^); TimeoutBuffer.ReadIntervalTimeout := 100; TimeoutBuffer.ReadTotalTimeoutMultiplier := 100; TimeoutBuffer.ReadTotalTimeoutConstant := 100; SetCommTimeouts(hCommFile, TimeoutBuffer^); FreeMem(TimeoutBuffer, sizeof(COMMTIMEOUTS)); // Schließlich lesen wir vom Port bzw. der Datei FillChar(Buffer, sizeof(Buffer), #0); ReadFile(hCommFile, Buffer, sizeof(Buffer), NumberOfBytesRead, nil); // Das Handle zum Port bzw. der Datei wieder schließen, // und sie somit wieder für andere Programme zugänglich machen. CloseHandle(hCommFile); Im Anhang ein Beispiel. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz