LabVIEWForum.de - VISA Funktionen Serial Data

LabVIEWForum.de

Normale Version: VISA Funktionen Serial Data
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Ich vermute einen Fehler in meiner VI, ich möchte einen HEX Code an ein an das
COM 4 - Port angeschlossene Gerät schicken. Und irgendwas funktioniert da nicht.

Ich habe mir das Programm "Serial Port Monitor" runtergeladen um eine Kontroll-
möglichkeit zu haben. Dieser zeigt mir ein unterschiedliches Bild, in seiner Hilfe Funktion
sieht die Darstellung eines gesendeten HEX Codes anders aus, hier eine kurze
Veranschaulichung:

So sollte es aussehen:

Request
02 14 00 05 00 34 05 64 ED ____ ..OK.. (hier sollte halt irgendein Text oder sonstige Schriftzeichen sein)


Und so sieht es bei mir aus:

Request
30 32 20 31 34 20 30 30 20 30 35 20 30 30 20 33 ____ 02 14 00 05 00 3
34 20 30 35 20 36 34 20 45 44 20 ____ 4 05 64 ED

Kann mir jemand helfen?

Lv86_img
Also verstehe ich das richtig?

Du schickst einen Request im hex Format and den Projektor und zwar das hier:
30 32 20 31 34 20 30 30 20 30 35 20 30 30 20 33

Der antwortet dir dann mit dem hier:
02 14 00 05 00 3


Was hättest du den konkret für eine Antwort erwartet, bzw. was steht denn im Manual hinsichtlich der Kommunikation? Irgendeine Standardvariante ala "Bist du eingeschaltet?" -> "Ja, ich bin wach."

Worauf ich hinaus will ist, dass der Projektor hex erwartet (?) und daher höchst wahrscheinlich auch mit hex antwortet...


Gruß SeBa
Laut dem Manual (das leider nicht vollständig ist) sollte es möglich sein beispielsweise
die Version der am Projektor installierten Software zu erhalten.

Write Command: 04 14 00 05 00 34 00 04 06 68 BF

Answer: 05 14 00 06 00 00 00 00 00 01 96 B1

Bedeutung der Answer: Byte 0: subminor, Byte 1: minor, Byte 2: major, Byte 3: reserved. Changing the order, the software version can be written as follows (decimal): 150.1.0.0

BF ist die Checksum.
Kann es sein, dass die VISA Funktion Write den von mir eingegebenen Code als Text
interpretiert und in einen Hex Code umwandelt und diesen an das Serial Port sendet?

Da ich herausgefunden habe wenn ich bei VISA Write hinten bei Ausgabezählwert eine
Anzeige anhänge beim Ausführen des Programms die Zahl 32 angezeigt wird und nicht
11 (Byteanzahl meines Commands)
' schrieb:02 14 00 05 00 34 05 64 ED ____ ..OK.. (hier sollte halt irgendein Text oder sonstige Schriftzeichen sein)
Das ist die Hex-Darstellung von Zahlen, die als binär vorliegen.

Zitat:30 32 20 31 34 20 30 30 20 30 35 20 30 30 20 33 ____ 02 14 00 05 00 3
34 20 30 35 20 36 34 20 45 44 20 ____ 4 05 64 ED
Das ist die Hex-Darstellung eines Strings, der die Hex-Darstellung einer Zahlenfolge enthält. Nämlich genau der oberen.

Zitat:Kann es sein, dass die VISA Funktion Write den von mir eingegebenen Code als Text interpretiert und in einen Hex Code umwandelt und diesen an das Serial Port sendet?
Die VISA-Funktion selbst wandelt nichts um. Die gibt das eins-zu-eins durch, was du anschließt.

Ich empfehle hier immer mittels des Formatbefehls einen String von Hand zusammenzusetzen. In dem Falle des Beispieles würde der heißen: "%02x %s %02x". Das erste %02x isz das STX-Zeichen, also 2. %s ist der String der sich aus 7mal "%02x " zusammen setzt. Das sind die Datenbytes. Das letzte %02x ist die Checksumme.
Du weisst also, wie der String, den du senden willst, in der HEX-Darstellung aussieht. Dann ist es das einfachste, wenn du einfach einen String im FP auf HEX-Darstellung umstellst und dann jedes Buchstaben in der HEX-Form eingibst:
[attachment=22947]

Wenn du zum Lernen erst mal bei deinen Zahlen-Eingaben bleiben willst, dann sollte das Datenformat der Numeric Controls ein U8, kein I32 sein. Und dann musst du einfach diese Eingaben zu einem Array zusammenfassen (noch einfacher, deine Eingabe ist gleich ein Array of U8), und dann per Byte Array To String in einen String umwandeln. Den sendest du dann per VISA-Write.

Umgekehrt verfährst du mit dem empfangenen String.

Gruß, Jens
Referenz-URLs