LabVIEWForum.de - Programm bleibt hängen bei zweitem Durchlauf

LabVIEWForum.de

Normale Version: Programm bleibt hängen bei zweitem Durchlauf
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich bin relativ neu bei Labview (angefangen Mitte November) und habe im Rahmen meines Studiums eine Aufgabe gestellt gekriegt und hänge gerade ein bisschen fest.

Es geht um folgendes: Es soll ein "Chat"-Programm entwickelt werden, bei dem die Kommunikation über Soundkarte und Mikrofon erfolgt. Die Töne die übertragen werden sollen, sind DTMF-Signale. Den Coder und Transmitter habe ich soweit fertig und dieser funktioniert auch (denk ich mal, schaut auf jedenfall nicht schlecht aus). Probleme habe ich aktuell beim Empfänger [attachment=47592]:

1. Wenn ich diesen laufen lasse und test weise einen DTMF-Ton über Mikrofon aufnehme, erhalte ich vom "Extract Multiple Tone Information.vi" oft nur eine Frequenz in diesem Ton statt zwei.

2. Wenn ich einen weiteren Ton aufnehme bleibt das Programm ohne Fehlermeldung hängen und ich muss Labview komplett abschießen.

Im ersten gelben Block [attachment=47593] nehme ich die Initialisierung vor und im zweiten gelben SubVI befindet sich mein Decoder (welcher noch nicht ganz funktioniert).

Der Ablauf (stoppen der Schleifen etc.) ist noch nicht 100%ig richtig, mir geht es aber in erster Linie darum, zu erfahren warum es sich ständig komplett aufhängt.

Ich hoffe mir kann da jemand weiter helfen!

Viele Grüße.
THINK Dataflow und schau dir dein VI vielleicht einmal im Highlight-Modus an.

Die innere FOR-Schleife wird im Normalfall NIE beendet:
[attachment=47594]
denn du gibst nie einen aktuellen Wert des Button Transmit Mode an die innere For-Schleife weiter, immer nur den Wert VOR Start der Schleife.

EDIT: Korrektur: Die FOR-Schleife wird natürlich zwecks Auto-Indexing schon beendet, aber nicht vorzeitig, so wie das vielleicht geplant war.


Gruß, Jens
Wenn ich es im Highlight Modus laufen lasse bleibt es beim Sound Input Read hängen und es macht nicht mehr weiter -.-. Das ist leider mein Hauptproblem irgendwie, dass ich im Highlight Modus eben nicht weiter komme Sad
Wenn du schon beim Sound Input Read hängen bleibst, wie kommst du dann an den Punkt "Extract Multiple Tone Information.vi"?
Jetzt widersprichst du dir.

Gruß, Jens
Das ist ja das merkwürdige -.- Er bleibt da nur im Highlight Modus hängen -.-
Lad doch mal deine beiden VIs hoch, ich habe keine Lust, das nachzuprogrammieren.

Hier übrigens noch eine Unschönheit, eine Race-Condition:
[attachment=47595]
Du kannst nicht vorhersagen, welchen Wert der Draht nach "threshold" wirklich hat. Again think dataflow.

Gruß, Jens
Das müssten alle Dateien sein. Der Decoder in "receive.vi" funktioniert noch nicht wirklich, aber das hat eher logische Gründe und mit dem habe ich mich noch nicht richtig befasst beim Fehler suchen.
Zumindest bekomme ich sporadisch auch das Hängenbleiben, aber irgendwann kommt auch eine Fehlermeldung aus "Sound Input Read".
Das Problem dürfte in diesem Punkt der Hilfe zu "Configure Sound Input" begründet sein

"number of samples/ch specifies the number of samples per channel in the buffer. Use a large number of samples for continuous operations. Use a smaller number of samples if you want to use less memory. "

Aktuell verwendest du bei einer Samplerate 8000 Samples/s immer nur 800 Werte, das ist zu wenig.

Bei 8000 + 8000 hatte ich keine Probleme.

Gruß, Jens
(und vergiss den Dataflow nicht, im Upload listen3.vi kannst du While-Schleife wirklich nicht manuell beenden!)
Ah alles klar! Danke.

Jetzt wird es aber mit einer großen Sampleanzahl wohl nicht so funktionieren wie ich mir dachte...wollte nämlich immer nur Abschnittweise aufnehmen und wenn ein DTMF Symbol erkannt wurde warten, bis das nächste kommt. Das wird aber so wohl nicht gehen -.-

Um das Problem mit dem Dataflow werde ich mich jetzt kümmern (oder es versuchen ^^). Mein größeres Interesse lag wie schon gesagt erst einmal in dem Problem mit dem hängen bleiben.

Danke nochmal und falls es nochmals irgendwo zicken sollte, melde ich mich Smile
Hmpf...also mit 8kHz Samplingrate und 8k Samples werden jetzt zwar beide Frequenzen vom DTMF-Ton aufgenommen aber sobald der Decoder verlassen wird und es wieder zum Read kommt hängt sich wieder alles auf -.- Das selbe auch im Highlight Modus.

Muss ich das Clear vielleicht innerhalb der For-Schleife machen?
Vom Ablauf her soll es so sein:
1. Es wird eine Nachricht aus zwei DTMF-Signalen übertragen für einen Buchstaben (Least Significant Nibble und Most Significant Nibble)
2. Gleich im Anschluss an das LSN kommt das MSN und dann soll eine Pause kommen und für den nächsten Buchstaben wieder LSN und gleich darauf MSN
3. Im Empfängermodus soll nun während decodiert wird auch natürlich aufgenommen werden, sonst verpasse ich einen Ton.

Meine Idee war nun immer nur ganz kurz aufzuzeichnen und wenn ein Ton erkannt wurde eine kurze Zeit zu warten, deswegen auch das Wait im True Case, um nicht wieder den gleichen Ton oder halt das gleiche Nibble zu decodieren sondern zur nächsten aufgenommen Frequenz zu springen.
Und nun muss ich doch den Buffer löschen sobald ich einen Ton aufgenommen habe sonst hängt es sich auf oder liege ich da falsch? Also das Clear in den Case?


EDIT:EDIT:

Nun hängt es sich zwar nicht mehr auf, aber ich kriege Fehler 4801 -.-
Seiten: 1 2
Referenz-URLs