Software landet in einem fehlerhaften Zustand und kommt nicht mehr raus von diesem Zustand.

Gast #3878700
Lesenswert?

folgende Anwendung habe ich:
- Messungen von unterschiedlichen Parameter (Strom, Spannung, ....) 
mithilfe einen PIC Mikrocontroller.
- SW ist so aufgebaut: Firmware + Visuall Studio 2008
- Kommunikationsart zwichen Firmaware und Visual Studio ist USB 
Schnittstelle (HID class.dll)
- Progrmmiersprache ist C++
--> Die Kommunikation mit der Firmware funktionniert  fast immer gut .
Die SW landet in der oben genannten Zustand sehr selten.
Ich kann das Problem nicht nachvollziehen warum oder wie ?
Ich habe folgende Versucht:
Die SW (in debug Modus) schritt für schritt (F10) zu debuggen und zu 
gucken was für Werte bekomme ich.
Es scheint alles Okay zu sein und die SW landet nicht mehr in 
fehlerhaften Zustand aber wenn ich direkt danach die SW normal starte 
(nicht in debug Modus)
Das Problem tritt wieder neue und ich muss das ganze neue anfangen (in 
debug Modus--> Problem tritt nicht mehr aber wieder direkt danach 
Problem ist wieder da).
Um das Problem zu lösen muss ich die SW beenden und wieder starten dann 
ist wieder alles gut.

Ich weiss dass ihr von der ferne mir gar nicht sagen können aber ich 
wollte fragen, ob ihr solche Fälle auch erlebt habt?

Danke in voraus
#3878719
Lesenswert?

Kommunikation ist normalerweise Zustandsbasiert. (schreibst du ja auch 
in der Überschrift). Du hast also 2 Zustandsautomaten, einer auf der 
Client und einer auf der Serverseite.
Um den Fehler zu finden musst du herausfinden in welchem (falschen) 
Zustand sich Client und Server befinden wenn "nichts mehr geht"
Um das herauszufinden hat sich tracen als gute Möglichkeit erwiesen. 
Also das Mitschreiben in eine Datei was wann passiert, zumindest auf dem 
PC. Auf dem µC kann man evt. eine SD Karte zum tracen benutzen oder in 
einem primitiven Fall mehrere Ports, die man auf Ausgang schaltet und je 
nach Zustand eine eindeutige ID rausschreibt.
Viel Erfolg
Gast #3879488
Lesenswert?

Said schrieb:
> Zwei Sachen sind mir aufgefallen:
> 1) In Normalen Durchlauf (ohne Fehler)
> Nach jede Kommando folgt eine Antwort
> 2) Problem ist aufgetreten:
> Kommando werden mehrmals geschickt und die Antwort von jede Kommando
> folgt erst später ...

Der Detailgrad meiner Antwort entspricht Deiner Problembeschreibung:
1) Der zweite Fall ist typisch für einen Fehler.

Gruß Klaus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren