ich wende mich heute mit mit bezüglich der Function Recvstring an euch.
Vorweg, ich habe/will mir einen PortScanner bauen, der mir meine angeschlossen Matrix-Boards scant.
Soweit auch alles schick.
Daten Ports werden alle abgefragt und wenn ttyUSB* nicht erreichbar, wird das TBlockSerial auch geschlossen.
Bei vorhandenem ttyUSB wird ein Datensatz gesendet. In diesem Fall $<a>
Das der Befehl auf meinem M328p ankommt und verarbeite wird, seh ich positiv in der Console, da ich da genau die antwort erhalte, welche gewünscht wird.
Nun wollte ich diese Antwort aber auch in der Form2.Caption anzeigen lassen, jedoch erhalte ich bei dem Aufruf Form2.Caption := USB[Module].Recvstring(2000); einen Leerstring.
Hat von euch jemand eine Idee, wo der der Datensatz verloren geht?
Code: Alles auswählen
procedure TForm2.InitTimerTimer(Sender: TObject);
begin
// Kontroll-Ampel defaullt auf GELB schalten
USB_Connect[Module].State := slYELLOW;
// Prüfe ob LCK-File vorhanden.
// Wenn ja, löschen selbiger (zB. da Programmabsturz die File nicht gelöscht hat)
if FileExists('/var/lock/LCK..ttyUSB' + intToStr(Module-1)) then DeleteFile('/var/lock/LCK..ttyUSB' + intToStr(Module-1));
Setlength(TX_Send, 255);
// Erstelle USB[x] und prüfe auf Erreichbarkeit
// Wenn erreichbar, setze Kontroll-Ampel auf GRÜN
// andernfalls ROT;
USB[Module] := TBlockSerial.Create;
try
try
USB[Module].Config( 9600, 8, 'N', SB1, false, false);
USB[Module].Connect(Port + IntToStr(Module-1));
Caption := Port + IntToStr(Module-1) + '|' + IntToStr(USB[Module].LastError) + ' ' + USB[Module].LastErrorDesc;
if USB[Module].LastError = 0 then begin
_USB[Module].Connect:= True;
_USB[Module].Error := False;
USB_Connect[Module].State:= slGREEN;
USB[Module].SendString('$<a>');
Form2.Caption := USB[Module].Recvstring(2000);
end
else begin
USB_Connect[Module].State:= slRED;
MCURun.Enabled := False;
end;
except
USB[Module].Free;
end;
finally
Statusbar1.Panels[1].Text := USB.LastErrorDesc + ' | ' + Port + IntToStr(a);
end;
if Module = 1 then begin
InitTimer.Enabled := false;
end;
dec(Module);
end;