Einzelnen Beitrag anzeigen

Benutzerbild von Lee500
Lee500

Registriert seit: 18. Sep 2006
39 Beiträge
 
Delphi 2010 Architect
 
#25

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 16:28
Hallihallo,

Ich habe auch vor mit einem Mikrocontroller zu komunizieren. Im HyperTerminal funktioniert das bereits. Das läuft in etwa so:
Ich sende ein beliebiges Zeichen und der Controller antwortet mit 8 Bytes. Wie gesagt im HT läuft es wunderbar, aber mein Programm will noch nicht so richtig.

Folgenden Code nutze ich: (abgeändert vom Beispielcode weiter vorn)
Delphi-Quellcode:
procedure TForm1.readcomClick(Sender: TObject);
var c: Char;
    digits: array [0..7] of string;
    tick: cardinal;
    count: Integer;
begin
  c := 'x'; // zu sendendes Zeichen

  with TCom.Create(nil) do
  try
    // com öffnen
    if Open(COM,RTS_DISABLED,DTR_DISABLED) then
    begin
      // senden
      if Send(c) then //Zeichen senden
      begin
        tick := GetTickCount;
        count := 0;

        // 1 Sekunde bzw. auf 8 Bytes Daten warten
        repeat

          // Daten aus der Schnittstelle lesen, sofern vorhanden
          if GetChar(c) then
          begin
            digits[count] := c;
            count := count+1;
          end;

        until ((GetTickCount-Tick) > 1000) or (count >= 7);
        if count >= 7 then //Die erhaltenen Zeichen verarbeiten
        begin
          time1.Text := digits[0] + digits[1] + ',' + digits[2] + digits[3];
          time2.Text := digits[4] + digits[5] + ',' + digits[6] + digits[7];
        end;
      end;
    end;
  finally
    // com schließen
    Close;
    Free;
  end;
end;
Die Variable COM wird in den Einstellungen gesetzt.

Beim HT hab ich folgendes eingestellt: 9600Baud; keine Parität; 1Stopbit; Datenbits: 8; Keine Flussteuerung

Ich hoffe ihr findet meinen Denkfehler.
  Mit Zitat antworten Zitat