Hallo,
Hintergrund:
Ich bin dabei ein Programm zu entwickeln, das über COM1 Kontakt zu einer Auswertmaschine aufnimmt. Das Schreiben in die Schnittstelle funzt tadellos. Das Lesen aber bei Win98 nur, wenn auch etwas in der Schnittstelle steht.
Aufruf der API-Funktion ReadFile:
Win98 -> Wenn kein Zeichen in der Schnittstelle ist, dann wartet ReadFile so lange, eines da ist. Erst dann geht das Programm weiter.
WinXP -> Wenn kein Zeichen in der Schnittstelle ist, dann wird der Ausgabeparameter lpNumberOfBytesRead auf 0 gesetzt, und weiter gehts.
Das was XP macht ist natürlich besser - das Programm bleibt nicht hängen, sondern läuft weiter, und ich kann auf das Nicht-Vorhanden-Sein des Bytes reagieren.
Was ich bräuchte, wäre also eine Funktion, die mir sagt, ob Bytes in der Schnittstelle sind, oder nicht. Dann wäre gewährleistet, das das Programm auch unter 98 nicht verreckt (, weil ich dann
ReadFile nur aufrufe, wenn eben welche da sind).
Oder gibt es noch eine andere Möglichkeit?
Hier bei
msdn eine beschreibung von ReadFile, falls das weiterhilft
Quelltext
1: 2: 3: 4: 5: 6: 7:
| BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped ); |