Hi,
sorry dass ich mich so lange nicht gemeldet habe, ich konnte einige Zeit nicht an meinem Projekt weiterarbeiten...
Da die Übertragung umso langsamer war, je länger ich den read-buffer eingestellt habe, habe ich mir einen neuen Lösungsansatz überlegt. Ich hab es jetzt so gemacht wie am Mikrocontroller. Dort hab ich es ich C geschrieben, das war nicht so schwer, irgendwie komm ich mit Labview nicht so richtig klar...
Im Anhang ist das VI, für meine Frage interessant ist die Schleife die mit "VISA READ" beschriftet ist.
Der Buffer ist auf 3 Byte eingestellt, somit kann maximal ein Befehl im Buffer stehen.
Es wird jetzt immer überprüft, ob die 3 Byte im Buffer die "Start-Sequenz" von einem Befehlssatz ist. Das ist der Fall wenn alle 3 Byte 255 sind.
Ist dies der Fall, wird die aktuelle Anzahl an ausgelesenen Bytes in einem Schieberegister gespeichert. Dieser gespeicherte Wert wird dann von der Anzahl der ausgelesenen Bytes abgezogen. Man erhält also eine Art Zähler, der die nach der Start-Sequenz empfangenen Bytes durchnummeriert.
Diesen Zähler nehme ich dann als Index-Wert für die Funktion "Insert Into Array", und das Byte das gerade an Position [0] im Buffer ist nehme ich als Wert der ins Array geschrieben werden soll.
Leider funktioniert das ganze aber nicht so wie es soll...
Im Array steht immer nur auf Position [0] etwas, und dort nichtmal das richtige :-(
Es springt immer zwischen 0, 255 und dem Wert der empfangen werden soll hin und her...
Aber prinzipiell sollte es doch funktioniert glaube ich.
Mein Problem ist glaube ich, dass ich nicht genau verstehe wie der Visa Read Buffer und der "return count" funktioniert.
Ich habe das bis jetzt so aufgefasst:
z.B. Buffergröße 3, die Bytes die empfangen werden: 255 64 23 89 121 90 22
Read Buffer wird so aufgebaut:
Buffer | return count
[] [] [255] 1
[] [255] [064] 2
[255] [064] [023] 3
[064] [023] [089] 4
[023] [089] [121] 5
[089] [121] [090] 6
[121] [090] [022] 7
usw...
Dass der "return count" nicht so aufgebaut wird habe ich jetzt schon herausgefunden, der steht nämlich bei mir immer konstant auf 3. Aber so verstehe ich nicht was der bringen soll... ich bräuchte eigentlich genau so eine fortlaufende Nummer wie ichs beim Beispiel aufgeschrieben habe, dann würde mein Konzept denke ich mal funktionieren.
Stimmt das so wie ich denke dass der Read Buffer aufgebaut wird? Das meinte ich übrigens in meinem letzten Post mit "von rechts nach links".
lg Christoph
Anhang ist LabVIEW Version 8.6 Englisch.
rs232_alternativ.vi (Größe: 66,42 KB / Downloads: 292)