Hallo,
also ich bekomme nach einer Anfrage vom PC vom Controller ein Kalibrationsprotokoll geschickt. Nun erhalt ich immer an meinem COM-Port abwechselnd einmal ein 14 Byte langes Protokoll und dann aber wieder 0 Byte. Nach ca. 5 Sekunden schickt er dann nix mehr.
Wie kann ich nun es so gestalten, dass eine Schleife um den Kalibriervorgang gelegt wird, welche sich dann beendet, wenn nix mehr zum PC geschickt wird? Also wenn die Übertragung vom Controller zum PC zur Ruhe gekommen ist.
Danke
Bye
Hallo!
Du schreibst: >> ...eimanl...14 Byte..dann... 0 Byte. ..dann nix mehr<<
Ich sehe erstmal keinen Unterschied zwischen 0 Byte und Nichts.
Aber egal. Du kannst eine Schleife drumherum legen, die entweder nach 5 Sekunden abbricht, oder du zählst die empfangenen Bytes und brichst die Schleife dann beim Überschreiten von 13 Bytes ab....
Es gibt da einige Möglichkeiten. Deine Beschreibung ist aber noch zu ungenau, um dir eine konkrete Lösung zu nennen. Vielleicht beschreibst du erstmal, worum es genau geht, wie oft gesendet wird, was gesendet wird, wie du dir den prinzipiellen Programmableuf vorstellst usw.
Ich kann aus deinen Angaben nicht erkennen, ob die Kalibrierungsdaten nur einmalig oder mehtmalig gesendet werden und was nach der Kalibrierung passieren soll.
Also, ich mache es so.
Gruss
ja aber. Also ich empfange 14byte dann im nächsten Datensatz 0Byte dann wieder 14 und dann wieder 0 Byte und dann nach einer längeren Zeit ist der Controller fertig mit senden und dann sendet er nix mehr also seh ich dann immer 0 Byte am Port.
Wenn ich aber nach 0 Byte suche dann nimmt er schon das 0Byte zwischen den 2 wo 14bytes gesendet wird und ich will aber erst dann abbrechen wenn alles geschickt ist.
Da kannst du ein bisschen an der wartezeit drehen.
Gruss
was ist denn, wenn du in dem von eugen geposteten VI die Loop Condition auf "Stop if True" änderst und einen Schieberegister einbaust, in dem du die "Bytes @ Port" aufaddierst. Dann kannst du die Schleife doch bei 28 abbrechen?!
zusätzlich kannst du da noch ein CASE einbauen, damit nur bei "Bytes @ Port" größer Null VISA-Read ausgeführt wird.
Würde das nicht funktionieren? Dann spielt auch das Timing keine große Rolle mehr und du bekommst keine Probleme mit Timeouts.
Nisse