27.11.2014, 21:18
Seiten: 1 2
28.11.2014, 07:57
Hallo knq,
du fragst den CTR0 immer noch in zwei Schleifen ab…
Ich halte es auch für problematisch, einen Task mit 2 Kanälen anzulegen und die Task-Referenz mittendrin abzuzweigen - um einmal nur einen Kanal abzufragen und einmal alle Kanäle im Task. Um es mal mit einem Auto zu vergleichen: du kaufst ein Auto mit Sitzen für 4 Personen, erwartest aber, dass durch Weitergabe des Schlüssels plötzlich nur noch ein Sitz im Auto vorhanden ist…
Auch hier: Lese den Task nur an einer Stelle!
Grundidee hinter meinen Vorschlägen: Die Messung kann IMMER laufen, du musst sie nicht erst in einem Event starten. Was du mit dem Event aber starten kannst, ist die Daten-Auswertung und -speicherung - am besten schön über eine Producer-Consumer-Struktur…
du fragst den CTR0 immer noch in zwei Schleifen ab…
Ich halte es auch für problematisch, einen Task mit 2 Kanälen anzulegen und die Task-Referenz mittendrin abzuzweigen - um einmal nur einen Kanal abzufragen und einmal alle Kanäle im Task. Um es mal mit einem Auto zu vergleichen: du kaufst ein Auto mit Sitzen für 4 Personen, erwartest aber, dass durch Weitergabe des Schlüssels plötzlich nur noch ein Sitz im Auto vorhanden ist…
Auch hier: Lese den Task nur an einer Stelle!
Grundidee hinter meinen Vorschlägen: Die Messung kann IMMER laufen, du musst sie nicht erst in einem Event starten. Was du mit dem Event aber starten kannst, ist die Daten-Auswertung und -speicherung - am besten schön über eine Producer-Consumer-Struktur…
30.11.2014, 15:57
Hi,
ich habe mich die letzten Tage intensiv mit der Consumer Producer Struktur beschäftigt und mein Programm umgebaut.
Es funktioniert jetzt, lediglich eine Sache nicht und zwar ich möchte wenn ich das Programm starte die Ni daq Karte sekundenweise die Temperatur Drehzahl und Druck ausgibt.Ich habe es nur wieder mit den 5 sekunden Button geschafft, da es ja ein Event ist.Guckt es euch an und das wisst ihr was ich meine
Gruß knq
Muss ich mein Problem vlt. mit dem Timeout des Event Cases lösen und ein Producer Case vom Timeout hinzufügen und natürlich die Enum Konstante mit dem Timeout erweitern?
Gruss knq
ich habe mich die letzten Tage intensiv mit der Consumer Producer Struktur beschäftigt und mein Programm umgebaut.
Es funktioniert jetzt, lediglich eine Sache nicht und zwar ich möchte wenn ich das Programm starte die Ni daq Karte sekundenweise die Temperatur Drehzahl und Druck ausgibt.Ich habe es nur wieder mit den 5 sekunden Button geschafft, da es ja ein Event ist.Guckt es euch an und das wisst ihr was ich meine
Gruß knq
Muss ich mein Problem vlt. mit dem Timeout des Event Cases lösen und ein Producer Case vom Timeout hinzufügen und natürlich die Enum Konstante mit dem Timeout erweitern?
Gruss knq
01.12.2014, 09:41
Hallo knq,
Dequeue wartet, bis ein neues Element in der Queue erscheint - oder bis zu einem optionalen TimeOut. Wenn du hier einen TimeOut von 1s vorgibst, kannst du auch dein Ziel erreichen. Die Alternative ist, wie schon von dir bemerkt, das regelmäßige Versenden eines Elements in die Queue, z.B. im TimeOut-Case der Eventstruktur.
Tipp:
Du solltest dein Befehls-Enum (wie so gut wie jedes selbsterstellte Enum) als Typdefinition anlegen. Damit vermeidest du einerseits CoercionDots an den Enqueue-Funktionen und andererseits evtl. komische Effekte später in der Verarbeitung der Enum-Werte…
Zitat:Es funktioniert jetzt, lediglich eine Sache nicht und zwar ich möchte wenn ich das Programm starte die Ni daq Karte sekundenweise die Temperatur Drehzahl und Druck ausgibtPrinzipiell hast du die ProducerConsumer-Struktur gut aufgebaut, ABER: was dich momentan stört, ist der Timeout am Dequeue bzw. der nicht vorhandene Timeout.
Dequeue wartet, bis ein neues Element in der Queue erscheint - oder bis zu einem optionalen TimeOut. Wenn du hier einen TimeOut von 1s vorgibst, kannst du auch dein Ziel erreichen. Die Alternative ist, wie schon von dir bemerkt, das regelmäßige Versenden eines Elements in die Queue, z.B. im TimeOut-Case der Eventstruktur.
Tipp:
Du solltest dein Befehls-Enum (wie so gut wie jedes selbsterstellte Enum) als Typdefinition anlegen. Damit vermeidest du einerseits CoercionDots an den Enqueue-Funktionen und andererseits evtl. komische Effekte später in der Verarbeitung der Enum-Werte…
01.12.2014, 19:43
Guter Tipp. Es geht jetzt alles.
Danke für die Hilfe.
Gruß knq
Danke für die Hilfe.
Gruß knq
Seiten: 1 2