Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich bin schon seit einigen Tagen auf der Suche nach einer Lösung. Und zwar möchte ich einen Taupunktspiegel, also einen Feuchtesensor, über die serielle Schnittstelle ansprechen. Über das HyperTerminal ist das auch kein Problem. Ich kann auch zum Teil in meinem LabVIEW-Programm Daten empfangen. Allerdings wird der korrekte Antwort-String nur sehr unregelmäßig ausgelesen. Meist bekomme ich die Antwort "Invalid Command" oder einfach gar nichts. Nach Zufallsprinzip möchte ich eben nur ungern arbeiten. Ich habe auch schon diverse Zeitverzögerungen eingebaut, wie sie hier im Forum empfohlen werden. Laut Sensor-Hersteller soll im Ascii-Setup eine Zeichenverzögerung von 50 msec eingestellt werden. Das irritiert mich, da es im HyperTerminal eben auch ohne diese Einstellung funktioniert. Wie könnte ich denn eine solche Zeichenverzögerung in LV realisieren? Hat da vielleicht jemand eine Idee? Ich lese in einem anderen Programm ein anderes Gerät aus. Das funktioniert einwandfrei. Also an den Visa-Einstellungen kann es meiner Meinung anch nicht liegen. Ich habe mal die Messwerte regelmäßig aufzeichnen lassen und in einem Ausgabefenster anzeigen lassen. Im ANhang habe ich das Programm samt Ergebnis dazugelegt. Wäre toll, wenn da jemand eine Idee hätte. Falls noch Infos fehlen, sagt Bescheid. Im voraus schon mal besten Dank.
aus Finnland? Meine Freundin wohnt in Helsinki. Bist du nur vorübergehend in Tampere oder länger?
Zu deiner Frage.
Mir ist es mal passiert, dass ich das Stringbedienelemnt auf Hex gestellt habe.
Nutzt du den seriellen Prot des PC's oder hast du eine Steckkarte im Rechner? Ich hatte es auch schon einmal, dass der Treiber meiner RS232-Karte dazwischengefunkt hat. Man konnte mit der Karte die wildesten Baudraten einstellen. LEider hat dies die Karte auch gemacht, bis ich die manuelle Einstellung abgeschaltet habe.
ups, da war ich wohl schon lange nicht mehr online und habe es versäumt, mein Profil zu aktualisieren. Aber um Deine Frage noch schnell zu beantworten: ich war ein halbes Jahr in Finnland in Tampere, bin jetzt aber zurück in Deutschland. Auf jeden Fall ist es ein traumhaftes Land, immer wieder gerne zurück. ;-)
back to the problem: den Tipp mit dem String in Hex habe ich zuvor schon ausprobiert. Also mein Befehl stimmt, und eben auch die Antwort - zum Teil. Aber ich fürchte, dass irgendwo etwas nicht mit der Zeit stimmt. Ich habe zwar eine Verzögerung von bis zu einer Sekunde drin vor dem Lesen, aber bekomme trotzdem immer wieder ein "invalid command". Auch mit den Meldungen aus dem NI-Spy komme ich nicht wirklich weiter:
"Es wurden weniger Bytes übertragen als angefordert. Möglicherweise sind noch weitere Daten verfügbar."
Dann bin ich noch ein wenig irritiert, was mein Abschlusszeichen des Antwort-Strings angeht. Laut Sensor-Befehlsblatt soll ein <cr> als Abschluss dargestellt werden. Wenn ich mir den Antwort-String aber in Hex-Darstellung anschaue, dann wird die Antwort mit einem rn abgeschlossen. Und wie könnte ich das in der Visa-Init einstellen? Wenn ich eine Konstante als Abschlusszeichen definiere, dann kann ich nur Zahlenwerte eingeben. Die 13 als CR bzw. die 10 als LF wirken sich nicht wirklich aus. Wie wird das denn dort genau dargestellt? Geschweigedenn dass ich 0xA oder 0xD eingeben könnte. Sorry, bin total verwirrt, vielleicht weiß ja jemand Rat. Danke mal und bis bald.
Du kannst auch die numerische Eingabe auf Hex umschalten.
Ich schalte immer lieber das Abschlusszeichen ab, denn manchmal hat man Befehle, die auch wiederum das Zeichen beinhalten. Jedoch muss man dann natürlich darauf achten was für welche Daten man bekommt und mauss das Abschlusszeichen selber raussuchen.
Versuche es doch mal, indem du das Abschlusszeichen abschaltest und in deinen String von Hand einfügst.
also die nummerisceh Anzeige auf Hex umzustellen, das hat geklappt. Aber was meinst Du mit Abschlusszeichen manuell einfügen? Das kapier ich nicht. Mein Gerät schickt mir ja einen String mit Abschlusszeichen. Nur stimmt eben manchmal der gesamte Antwort-String gar nicht. Aber Du hast mich neugierig gemacht. Erklär doch bitte mal, was Du genau damit gemeint hast. Danke.
ich hatte schon einmal das PRoblem, dass ich ein Hex-File über die serielle Schnittstelle übertragen wollte.
In diesem File konnte also alle beliebigen Zeichen vorkommen und ich hatte das Problem, dass die serielle Schnittstelle die Übertragen immer wieder mitten im File abgebrochen hatte.
Ich wußte, dass der Beginn des File und das Ende markiert waren und zwar mit einer bestimmten Zeichenkette. Leider konnte ich die nicht als Abschlusszeichen einstellen. So habe ich die Erkennung abgeschaltet.
Das senden war auch gar kein Problem.
Den Empfang habe ich so umgebaut, dass ich regelmäßig die Daten von der Schnittstelle abhole und diese Daten immer wieder an einen String anhänge. Nun habe ich in diesen String immer nach der Start- und Endzeichenkette gesucht. Sobald ich beides gefunden hatte, habe ich die Daten aus dem String getrennt und weiterverarbeitet.
wahrscheinlich ist dein Problem schon längst gelöst, ich bin nur gerade zufällig darauf gestoßen.
Du meinst einen Michell OptiDew Vision und genau das ist auch mein Problem gewesen. Das Gerät
ist zu langsam, um den 9600 Bd zu folgen. Es braucht nach jedem Einzelzeichen eine Wartezeit
von 50 ms. D.h. nach dem Senden von y 50 ms warten und dann erst das Abschlusszeichen r.
Oder wenn Du einen Spiegel-Kontrollzyklus mit abcr auslösen willst, erst das a senden, 50 ms warten,
das b senden, 50 ms warten, das c senden, 50 ms warten und dann das r senden.
Ich habe das VISA-Write durch meine VI Zeichenverzögerung.vi ersetzt (hier für LV 7.0)
Ich hoffe, die Datei ist erfolgreich hochgeladen.