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.