Ich möchte mit meinem Delphi 6 Programm einmal pro Sekunde 5 Bytes ( immer 00 00 00 00 F7) über die serielle Schnittstelle an ein Gerät senden, was darauf mit 5 Bytes antwortet. Diese 5 Bytes möchte ich dann auswerten. Von den empfangenen Bytes sind die ersten 4 immer identisch und das fünfte ist immer F7, als zB 48 48 48 48 F7 oder 15 15 15 15 F7. Für die serielle Kommunikation nutze ich TComPort 3.0. Nun habe ich das Probleme, das mein Programm zwar auf meinem Desktop PC (P4 2.6GHz XP) zwar einwandfrei läuft aber auf meinem Notebook (Centrino 1.6 Ghz XP) werden die 5 Bytes falsch empfangen, sihe angehängten Portmon log. Auf anderen PCs wird teilweise garnichts empfangen. Woran könnte das liegen? Ich vermute, dass die Konfigurtion des
Com Ports nicht ganz richtig ist. hier mein Code:
Delphi-Quellcode:
ComPort1.Port:='COM1';
ComPort1.BaudRate:=br4800;
ComPort1.StopBits:=sbTwoStopBits;
ComPort1.DiscardNull:=false;
ComPort1.Parity.Check:=false;
Comport1.DataBits:=dbEight;
comport1.FlowControl.ControlDTR:=dtrhandshake;
comport1.FlowControl.ControlRTS:=rtshandshake;
Comport1.Open;
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
begin
if ComPort1.Readstr(sms,Count)=5 then sm1:=ord(sms[1]);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ComPort1.WriteStr(Chr(0)+Chr(0)+Chr(0)+Chr(0)+Chr($F7));
end;
Wie gesagt, die empfangenen ersten 4 Byte müssen immer identisch sein und das letzte Byte muß F7 sein. Wenn das nicht der fall ist, stimmt was in der Kommunikation nicht.