![]() |
Einzelnes BYTE über RS232 senden
Hallo!
Ich habe diese 2 Funktionen um ein Byte über die RS232 zu senden und zu empfangen:
Delphi-Quellcode:
Ich habe mit aus der TComPort diese Sachen rausgesucht, da ich nicht alles brauche und auch nicht extra eine Komponente dafür verwenden will.
function TComport.SendByte(const Buffer : Byte) : Boolean;
var BytesWritten: Cardinal; begin Result := False; tb := Buffer; if (fHandle <> INVALID_HANDLE_VALUE) then begin WriteFile(fHandle, Buffer, 1, BytesWritten, NIL); Result := BytesWritten = 1; end; end; function TComPort.ReadByte(var Output : Byte): Boolean; var Dat: Byte; BytesRead: Cardinal; begin Output := 0; if (fHandle <> INVALID_HANDLE_VALUE) then begin ReadFile(fHandle,Output,1,BytesRead,NIL); Result := BytesRead = 1; end; end; ![]() Nun geht das schon recht gut. Aber es geht nicht wenn ich Buffer = 0 senden will. Mit OutputDebugString sehe ich, dass eine 0 gesendet werden soll. Das Echo der RS232 gibt mir aber $FE zurück. Es muss aber eine 0 zurückkommen. Fehlt mir da noch was im setzten der Parameter der RS232 oder ist es was anderes? Eine andere Testanwendung in VC++ sendet eine 0 und bekommt auch eine 0 zurück. Auch das lesen mit ReadFile hat keine Probleme eine 0 zu lesen. Es muss also etwas mit dem WriteFile zu tun haben. |
AW: Einzelnes BYTE über RS232 senden
Zitat:
das ist eine passende Gelegenheit, das Ergebnis von WriteFile (Error oder nicht, welcher?) auszuwerten. Und wenn passendes Equipment vorhanden ist, würde ich einfach mal nachschauen, was tatsächlich über die Leitung geht. Gruss Reinhard |
AW: Einzelnes BYTE über RS232 senden
Also GetLastError bleibt immer auf 0.
Egal ob ReadFile oder WriteFile. Auch ist das Ergebnis immer True (also OK) Es handlet sich um einen VCP (Virtual COM Port). Muss mal nachsehen ob man den Softwaremässig Sniffen kann. EDIT: Habe nun einen Sniffer gefunden der unter Win7 x64 läuft: ![]() Damit habe ich rausgefunden, dass mit dem VC++ Programm Parity Even verwendet wird. Ich hatte None... Mit Even bekomme ich nun die gleiche Antwort! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 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