21.09.2015, 14:29
21.09.2015, 14:40
der Inhalt der 3 Bytes sind ja <DATA1><DATAX><CHKSUM>. das eben ohne diese Klammern aber wie bekomme ich das raus, was da für werte drin stecken, kann man das irgendwie anzeigen lassen? Ich bin hier am verzeweifeln so langsam
21.09.2015, 15:00
Hallo Pati,
Lösungen:
1. String-Anzeige, wie schon öfter erwähnt in Hex- oder \-Codes-Display.
2. String in U8-Array umwandeln, dann Arrayanzeige in Hex-Anzeige
Wenn du die zweite Lösung nimmst, kannst du auch sehr einfach die gewünschten Bytes per IndexArray auslesen…
Zitat:kann man das irgendwie anzeigen lassen?Danach hast du bisher nicht gefragt…
Lösungen:
1. String-Anzeige, wie schon öfter erwähnt in Hex- oder \-Codes-Display.
2. String in U8-Array umwandeln, dann Arrayanzeige in Hex-Anzeige
Wenn du die zweite Lösung nimmst, kannst du auch sehr einfach die gewünschten Bytes per IndexArray auslesen…
21.09.2015, 15:12
Bei deinem ersten Lösungsvorschlag wird bei mir gar nichts angezeigt, da passiert einfach nichts und bei deinem 2 Vorschlag versuche ich es zu verbinden, aber die Verbindungen passen nicht.
Könntest du mir eventuell kleine Beispiele dazu zeigen? Danke für deine Geduld
Könntest du mir eventuell kleine Beispiele dazu zeigen? Danke für deine Geduld
21.09.2015, 15:20
Hallo Pati,
zur 2. Lösung:
[attachment=54115]
Hast du schon mal "Debugging" ausbprobiert?
Wieviele Zeichen liest du vom seriellen Port?
Was zeigt dir eine Sonde an?
zur 2. Lösung:
[attachment=54115]
Zitat:Bei deinem ersten Lösungsvorschlag wird bei mir gar nichts angezeigt, da passiert einfach nichtsWenn in deinem Stringindicator NICHTS angezeigt wird: bist du dir sicher, überhaupt Daten empfangen zu haben?
Hast du schon mal "Debugging" ausbprobiert?
Wieviele Zeichen liest du vom seriellen Port?
Was zeigt dir eine Sonde an?
21.09.2015, 15:32
Du solltest dringend zwischen VISA-Schreiben und VISA-Lesen eine Wartezeit einbauen. So schnell wird deine Pumpe nicht antworten.
Alternativ solange "Bytes at Port" ausführen, bis das Ergebnis >=3 ist.
Außerdem solltest du bei VISA Configure Serial Port den "Termination Char" deaktivieren, standardmäßig ist der nämlich aktiviert, und das passt nicht bei deinem Kommunikationsprotokoll.
Gruß, Jens
Alternativ solange "Bytes at Port" ausführen, bis das Ergebnis >=3 ist.
Außerdem solltest du bei VISA Configure Serial Port den "Termination Char" deaktivieren, standardmäßig ist der nämlich aktiviert, und das passt nicht bei deinem Kommunikationsprotokoll.
Gruß, Jens
22.09.2015, 08:02
Das mit dem Debugging war ein sehr guter Tipp Ich wusste gar nicht, dass es so etwas gibt.
Das mit dem Schreibpuffer klappt, ich sende der Pumpe ein Befehl von 10 Byte und die Pumpe reagiert da drauf, als Ausgabezählwert werden 18 Byte angezeigt.
Bei der Ausführung von Bytes at Port wird nichts angezeigt, da kommt nur ein F an bei der Case-Struktur. Also ist da irgendwo schon ein Fehler, da müssten ja eigentlich die 3 Bytes ankommen, wenn ich das richtig verstanden habe.
Ich habe wohl irgendwo einen Fehler bei der Deaktivierung vom Endzeichen.
Das mit dem Schreibpuffer klappt, ich sende der Pumpe ein Befehl von 10 Byte und die Pumpe reagiert da drauf, als Ausgabezählwert werden 18 Byte angezeigt.
Bei der Ausführung von Bytes at Port wird nichts angezeigt, da kommt nur ein F an bei der Case-Struktur. Also ist da irgendwo schon ein Fehler, da müssten ja eigentlich die 3 Bytes ankommen, wenn ich das richtig verstanden habe.
Ich habe wohl irgendwo einen Fehler bei der Deaktivierung vom Endzeichen.
22.09.2015, 09:08
THINK Dataflow!
Das Warten hast du ohne Datenfluss hinzugefügt, das wird nicht zwischen Schreiben und Lesen ausgeführt, sondern parallel dazu.
Gruß, Jens
Das Warten hast du ohne Datenfluss hinzugefügt, das wird nicht zwischen Schreiben und Lesen ausgeführt, sondern parallel dazu.
Gruß, Jens
22.09.2015, 09:25
Wie soll das funktionieren, dass ich das Timeout mit dem Datenfluss verbinden? I dont know ...
22.09.2015, 09:48