13.09.2010, 13:11
Hallo zusammen,
ich habe mal wieder eine Frage bezüglich der "Ansehnlichkeit" meines VIs bzw vielleicht ist es besser wenn ich frage, ob man das einfacher programmieren kann als ich. Ich sollte vielleicht dazu sagen, dass ich mit Queues, Meldern & Co noch nie vorher gearbeitet habe...
Problemstellung:
Ich kommuniziere über eine NI-CAN PCMCIA-Karte mit externer Hardware. Über ein Interface schicke ich Befehle, über das Andere bekomme ich die Antworten. Jetzt will ich meinen CAN-Traffic mitloggen können. Also nach einem Tastendruck soll ich gefragt werden in welche Datei ich den Traffic schreiben will, und dann soll er so lange mitschreiben, bis ich wieder anhalte. Wenn ich nach 5Minuten wieder weiterloggen möchte, ohne dass das VI beendet ist, soll einfach am Ende der Datei weitergeschrieben werden.
Ich habe das jetzt folgendermaßen gelöst:
- eine Schleife die auf den CAN Befehle schreibt (soll hier nur die echte Schleife simulieren)
- eine Schleife die die Antworten der angeschlossenen Teilnehmer vom CAN liest (soll hier nur die echte Schleife simulieren)
- eine Event-Schleife, die abhängig von meinen Tastendrucks Befehle in Queue1 schreibt
- eine Schleife die Queue2 liest und evtl in eine txt schreibt
- eine Schleife nach Drücken der Stop-Taste oder im Fehlerfall die Queues schließt
Die Lesen/Schreiben-Schleifen sollen wie gesagt mit dem CAN kommunizieren (hier "simuliert" über den Schleifeniterator) und dann die CAN-Daten als Strings in Queue2 schreiben.
Queue 2 wird von der Write txt-Schleife gelesen und die Elemente entfernt.
Queue 1 ist dafür da, allen Schleifen zu sagen, was gerade zu tun ist. Sie wird über eine FGV gepuffert.
Das Ganze funktioniert jetzt endlich so wies soll (nach 2 Tagen Arbeit), aber was mir überhaupt nicht gefällt sind meine 1000000 lokalen Variablen, die ich trotz den Queues noch verwendet habe.
Geht das was ich hier realisieren will auch irgendwie einfacher?
Oder habt ihr sonst Tips für mich?
Vielen Dank schon mal!
Gruß
Dommas
ich habe mal wieder eine Frage bezüglich der "Ansehnlichkeit" meines VIs bzw vielleicht ist es besser wenn ich frage, ob man das einfacher programmieren kann als ich. Ich sollte vielleicht dazu sagen, dass ich mit Queues, Meldern & Co noch nie vorher gearbeitet habe...
Problemstellung:
Ich kommuniziere über eine NI-CAN PCMCIA-Karte mit externer Hardware. Über ein Interface schicke ich Befehle, über das Andere bekomme ich die Antworten. Jetzt will ich meinen CAN-Traffic mitloggen können. Also nach einem Tastendruck soll ich gefragt werden in welche Datei ich den Traffic schreiben will, und dann soll er so lange mitschreiben, bis ich wieder anhalte. Wenn ich nach 5Minuten wieder weiterloggen möchte, ohne dass das VI beendet ist, soll einfach am Ende der Datei weitergeschrieben werden.
Ich habe das jetzt folgendermaßen gelöst:
- eine Schleife die auf den CAN Befehle schreibt (soll hier nur die echte Schleife simulieren)
- eine Schleife die die Antworten der angeschlossenen Teilnehmer vom CAN liest (soll hier nur die echte Schleife simulieren)
- eine Event-Schleife, die abhängig von meinen Tastendrucks Befehle in Queue1 schreibt
- eine Schleife die Queue2 liest und evtl in eine txt schreibt
- eine Schleife nach Drücken der Stop-Taste oder im Fehlerfall die Queues schließt
Die Lesen/Schreiben-Schleifen sollen wie gesagt mit dem CAN kommunizieren (hier "simuliert" über den Schleifeniterator) und dann die CAN-Daten als Strings in Queue2 schreiben.
Queue 2 wird von der Write txt-Schleife gelesen und die Elemente entfernt.
Queue 1 ist dafür da, allen Schleifen zu sagen, was gerade zu tun ist. Sie wird über eine FGV gepuffert.
Das Ganze funktioniert jetzt endlich so wies soll (nach 2 Tagen Arbeit), aber was mir überhaupt nicht gefällt sind meine 1000000 lokalen Variablen, die ich trotz den Queues noch verwendet habe.
Geht das was ich hier realisieren will auch irgendwie einfacher?
Oder habt ihr sonst Tips für mich?
Vielen Dank schon mal!
Gruß
Dommas