Einzelnen Beitrag anzeigen

carknue

Registriert seit: 26. Mai 2005
37 Beiträge
 
Turbo Delphi für Win32
 
#1

Timing Probleme am COM Port

  Alt 18. Feb 2006, 23:48
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.
Angehängte Dateien
Dateityp: zip samsungp35_181.zip (1,2 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat