Vermeiden von Globalenvariablen aber wie? - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Vermeiden von Globalenvariablen aber wie? (/Thread-Vermeiden-von-Globalenvariablen-aber-wie) |
Vermeiden von Globalenvariablen aber wie? - Cardinal1664 - 22.01.2009 17:25 Ja das Übertragungsprotokoll kenne ich der MCU gibt in Programmier-Modus entweder ACK oder NAK zurück! Ich benutze Bytes On Port weil dies die Einzige Funktion ist die ich bis jetzt kenn um eine gewisse Anzahl bytes zu lesen! OK ich werde mal Probieren das VI umzuschreiben! Hat da vieleicht noch jemand ein kleines beispiel dazu? Danke für eure hilfe! Vermeiden von Globalenvariablen aber wie? - jg - 22.01.2009 17:26 ' schrieb:@ Jens:Da stimme ich dir zu. Aber diese Leseschleife mit Bytes at Port, die so auf den ersten Blick solange mit "höchster" Geschwindigkeit läuft, bis ein Byte ausgelesen wurde... Deswegen auch das Edit 2 mit den VISA-Event-VIs, im Prinzip ja ähnlich wie du es vorschlägst. ' schrieb:@Cardinal, ich denke du solltest deine Kommunikation auf eventgesteuert umschreiben. Bytes On Port ist keine besonders gute Wahl. Du kennst doch das Übertragungsprotokoll, somit weisst du auch wie viele Zeichen du lesen willst, warum benutzt du denn noch Bytes On Port? Vermeiden von Globalenvariablen aber wie? - jg - 22.01.2009 17:30 ' schrieb:Ja das Übertragungsprotokoll kenne ich der MCU gibt in Programmier-Modus entweder ACK oder NAK zurück!1. (in diesem Fall wahrscheinlich kompliziertere) Möglichkeit: Hast du mal geschaut, ob du die "VISA-Event-VIs" in LV6.1 hast? 2. Möglichkeit: Da du nur ein Zeichen zurückerwartest, direkt eine 1 am Read-Eingang anschließen. Das VI wartet dann, bis ein Zeichen anliegt. Gruß, Jens Vermeiden von Globalenvariablen aber wie? - Cardinal1664 - 22.01.2009 17:31 Ja VISA Events gibts in LV6.1! Vermeiden von Globalenvariablen aber wie? - eg - 22.01.2009 17:34 Ganz einfach. So wie ich es verstehe ist es einfaches ASCII Übertragungsprotokoll und sehrwarscheinlich kommt nach ACK oder NACK noch ein Zeilenende. Somit kannst du bei der Konfiguration der Schnittstelle Termination Character auf Zeilenende setzen (wird auch defaultmäßig gemacht). Dann beim Lesen kannst du eine große Zahl (muss unbedingt größergleich der erwarteten Antwort sein) z.B. 10 Bytes einstellen. Das Lesen wird automatisch abgebrochen sobald ein Zeilenende empfangen wird oder die angegebene Anzahl Zeichen ausgelesen wird. Beim Lesen werden keine CPU Ressourcen gebraucht, es können also in dieser "Wartezeit" andere von deinen 8 Tasks bedient werden. Vermeiden von Globalenvariablen aber wie? - jg - 22.01.2009 17:39 ' schrieb:Ja VISA Events gibts in LV6.1!Für sowas braucht man folgende VIs: [attachment=16282] Das 1. VI definiert das Event "Serial Character", das 2. VI wartet dann auf das Event "Serial Character" (wird ausgelöst, wenn ein Zeichen am Serial Port anliegt), und das 3. zerstört das Event wieder. VI1 & VI3 brauchst du natürlich nur am Anfang und am Ende der gesamten Kommunikation, VI2 kannst du quasi anstelle von "Bytes at Port" verwenden, es wartet halt so lange, bis mind. ein Byte am Port anliegt. Aber wie schon oben gesagt, da du nur einen Buchstaben zurückbekommst, ist das nicht unbedingt nötig. Gruß, Jens Vermeiden von Globalenvariablen aber wie? - Cardinal1664 - 22.01.2009 17:42 Nach dem ACK oder NACK kommt kein Zeilenende ist nur HEX 06 oder 15! Vermeiden von Globalenvariablen aber wie? - eg - 22.01.2009 17:43 Umso besser, dann musst du Termination Char abschalten und beim VISA Read 1 Byte einstellen. Hier siehst du ein Beispiel für einen komplexeren binären Parser. Wie du sehen kannst wird überall eine konkrete Zahl für Bytes To Read eingestellt. Vermeiden von Globalenvariablen aber wie? - jg - 22.01.2009 17:44 ' schrieb:Umso besser, dann musst du Termination Char abschalten und beim VISA Read 1 Byte einstellen.@eg: Schön, dass wir uns einig sind. s. Beitrag #33 Vermeiden von Globalenvariablen aber wie? - eg - 22.01.2009 17:47 ' schrieb:@eg: Schön, dass wir uns einig sind. s. Beitrag #33 :Dsorry hab's verpasst. Habe in dieser Zeit meine Antwort geschrieben. Übrigens, wir sind schon weit vom Thema, besser ein neues Thema aufmachen. |