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;


 
  das letzte mal damit beschäftigt, So mit kann ich dir auch nicht sagen, an welchem Bsp ich mich damals orientiert hatte.
 das letzte mal damit beschäftigt, So mit kann ich dir auch nicht sagen, an welchem Bsp ich mich damals orientiert hatte. Verein
Verein 
 Links
Links Suche
Suche