Bei meiner Anwendung handelt es sich um einen etwas komplizierten Aufbau:
Es gibt eine Server/Client Struktur. Darunter ist ein Client, der sich komplett um Arduino kümmert.
Nun habe ich 5 Arduino Platinen, wo ich je ein Arduino Nano verwende an einem USB HUB der wiederum am Banana PI angeschlossen ist.
Die Platinen haben unter anderem Verschiedene Sensoren einige haben LCD'S und Tasten.
Der Arduino Client zeigt nun auf den LCD Informationen an. Es gibt eine Art Beschreibungs Sprache. Es gibt mehrer Seiten pro LCD.
D.H. wenn ich auf eine Taste drücke, wird z.b. die nächste Seite Angezeigt oder die vorherige.
Genau das Funktioniert nach einigen Tagen/Wochen nicht mehr.
Seit Wochen suche ich nun die Ursache. Inzwischen habe ich alle Relevanten Code Teile in tray/except Blöcken gepackt.
Ich log zwar einiges, aber noch habe ich die Ursache nicht gefunden.
hier noch zwei Code Auszüge, die mir Relevant erscheinen:
Hier Installisiere ich das ganze. Jede Arduino Platine ist ein eigener Thread.
Code: Alles auswählen
// ThreadTimer.SynMod:=false;
if (not FileExists(Device)) or (not Enabled) then begin
if Assigned(BlockSerial) then begin
// writeln('Socket Closed!!!');
FreeAndNil(BlockSerial);
BlockSerial:=nil;
end;
end
else begin
if not Assigned(BlockSerial) then begin
// writeln('Verbunden mit "',Device,'"');
if Assigned(BlockSerial) then begin
BlockSerial.Free;
BlockSerial:=nil;
end;
BlockSerial:=TBlockSerial.Create;
BlockSerial.LinuxLock:=False;
BlockSerial.RaiseExcept:=False;
// BlockSerial.ConvertLineEnd:=True;
BlockSerial.Connect(Device);
sleep(1000);
BlockSerial.Config(9600,8,'N',SB1,false,false);
sleep(500);
TimerEvent1;
end;
end;
Das Sleep ist wichtig, weil es sonst nicht geht.
Code: Alles auswählen
var
signal:string;
begin
if (Assigned(BlockSerial)) then begin
// if BlockSerial.CanRead(1) then begin
signal := BlockSerial.Recvstring(1);
if BlockSerial.LastError <> 0 then exit;
// writeln('signal:',signal);
DoOnData(Trim(signal),DeviceIndex);
sleep(100);
// end;
end;
Nun meine Frage:
Wer hat schon ähnliche Erfahrungen gemacht mit USB bzw. Synapse?
Sieht jemand auf Anhieb einen Fehler in den gezeigtem Code?
Falls nicht, muss ich eine kleine Test Anwendung schreiben und ca 1 oder 2 Wochen Warten.
Edit01: Ich weiß nicht warum das FORUM mit Google Chrome Probleme hat oder Google-Chrome Probleme mit dem Forum hat.
Ich hatte eine schöne Frage Formuliert.... und der letzte Teil wurde offenbar verschluckt.