Hallo!
Ich habe diese 2 Funktionen um ein Byte über die RS232 zu senden und zu empfangen:
Delphi-Quellcode:
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;
Ich habe mit aus der TComPort diese Sachen rausgesucht, da ich nicht alles brauche und auch nicht extra eine Komponente dafür verwenden will.
http://sourceforge.net/projects/comport/
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.