Hallo,
ich habe standardmäßig die schnittstelle initialisiert, anschliessend schreibe ich ein kommando, welches ich aus der betriebsanleitung entnommen habe. bei dem gerät handelt es sich um ein spektrometer. leider liegen am port jedoch 0 byte an. was könnte der fehler sein?
die firma verlangt extra 400 dollar für das LabVIEW programm zum auslesen der daten. könnte es sein, dass man erst im gerät die rs232 schnittstelle "freischalten" muss, bevor sie daten sendet?
viele grüße
ps. im anhang findet ihr das proggie...
Es kann viele Gründe haben:
Du sendest kein Abschlusszeichen
Die Schnittstelle ist falsch konfiguriert
Du musst das Gerät auf Remote Modus umschalten
Du musst länger warten bis die Antwort kommt
und noch...
Hast du's schon mal übers Hyperterminal versucht? Und hast du schon mal versucht, an deinen Befehl ein CRLF oder CR oder LF anzuhängen?
' schrieb:Hast du's schon mal übers Hyperterminal versucht? Und hast du schon mal versucht, an deinen Befehl ein CRLF oder CR oder LF anzuhängen?
Davon ausgehend dass Du die richtigen Portparameter hast, hat Achim wahrscheinlich den Nagel auf den Kopf getroffen. Versuch mal in Hyperterminal und denke daran, dass Hyperterminal im Moment wo Du Enter betätigst automatisch noch ein CR/LF (ist ja eigentlich was die Enter Taste ist unter DOS/Windows) an das Kommando hängt.
LabVIEW hängt nichts automatisch an, also musst Du schon selber dafür sorgen dass eines oder beide dieser Character an das Kommando angefügt wird. Die meisten Instrumente warten nämlich auf einen dieser Character bevor sie überhaupt damit beginnen um ein Kommando zu dekodieren und eventuel auszuführen.
Rolf Kalbermatter
Man könnte es eventuell mit Hyperterninal probieren, aber nur dann wenn es ein ASCII-Protokoll ist. Ansonsten mit deinem VI weiterprobieren bis es klappt.
' schrieb:Hast du's schon mal übers Hyperterminal versucht? Und hast du schon mal versucht, an deinen Befehl ein CRLF oder CR oder LF anzuhängen?
wie fügt man ein LF befehl bzw. ein CR ein?---> einfach bei write? also befehlCR ?
grüße
' schrieb:Man könnte es eventuell mit Hyperterninal probieren, aber nur dann wenn es ein ASCII-Protokoll ist. Ansonsten mit deinem VI weiterprobieren bis es klappt.
hmmm, kenn mich zwar damit nicht so aus, aber ich probier das mal aus
' schrieb:wie fügt man ein LF befehl bzw. ein CR ein?---> einfach bei write? also befehlCR ?
grüße
Entweder machst du hinter deinem eingegebenen Befehl noch mal per Tastatur ein "Return", oder du hängst eine CRLF-Konstante (Palette Strings) an den zu schreibenden Befehl (mit der Funktion Concatenate String/Strings verketten)
Ich bevorzuge die zweite Variante...es ist nämlich nicht gesagt, dass ein Benutzer immer "Return" drückt!
' schrieb:wie fügt man ein LF befehl bzw. ein CR ein?---> einfach bei write? also befehlCR ?
grüße
Also CR steht für Carraige Return und LF für Line Feed. Du kannst das so tun wie Achim es beschrieben hat, aber solltest dabei nicht vergessen dass in LabVIEW ein Zeilenumbruch mit der Entertaste halt nur ein LF ist, viele Instrumente aber lieber einen CR oder am Besten gleich beides sehen wollen.
Selber mache ich das immer explizit im Code selber. Die Variante mit der Zeilenumbruchkonstante von Achim funktioniert gut, zumindest unter Windows. Unter Unix steht diese Konstante aber nur für den CR Character und unter Mac nur für den LF Character.
Ich tue das immer indem ich mit der rechten Maustaste "Display Codes" im Menu enable und dann einfach rn in den String einfüge.
Rolf Kalbermatter
es funktioniert, ich musste lediglich ein f hinter den befehl anfügen.
die zeichen, die ich empfange sind mehr als kauderwelsch.
in der anleitung steht z.B, wenn man den befehl GAC eingibt dann, ich zitiere:
Antwort: 256 equidistant ACF-values as a row of 512 Byte with the following struckture:
1.Byte
00 ...FF
high byte of 1. ACF value
2. Byte
00...C0
low byte of 1. ACF value
(only bit 7 and 6 significant)
.
.
.
511. Byte
00..FF
high byte of 256. ACF value
512. Byte
low byte of 256. ACF value
(only bit 7 and 6 significant)
Um die ACF Daten zu bekommen, müsste es dann reichen, jedes 2. byte in z.B ein cluster zu schreiben, und danach mittels hex-->num konverter den wert extrahieren?
danke und grüße