Einzelnen Beitrag anzeigen

schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

Einzelnes BYTE über RS232 senden

  Alt 10. Mär 2011, 17:53
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.
Delphi 2010, Update 4 & 5

Geändert von schwa226 (10. Mär 2011 um 19:42 Uhr)
  Mit Zitat antworten Zitat