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 habe eine weitere Frage bezüglich Erfassung der Daten, die Ich von der RS 232 Schnittstelle erhalten soll.
Nach Senden der Befehle Start Measuring (0d3030303030303030353032450c303030300a) und Start Transmitting (0d3030303030303030353033300c303030300a), die Ich untereinander in die Hex-String Box eingebe, sendet ein Sensor Telegramme der Form 0D343534353031303233303146DED29540A3A3EE400C464133450A, diese sollen auch als Normalanzeige angezeigt und weiterverarbeitet werden.
Das Problem liegt darin, dasss der Sensor mir keine Daten schickt, obwohl Ich das über Hyperterminal versucht habe und das hat funktioniert (sendet mir Daten).
Woran könnte das liegen? Ist die Wartedauer zu lang oder zu kurz? Der Sensor sendet kontinuierlich (80 Hz ist die Abtastrate).
Zitat:Das Problem liegt darin, dasss der Sensor mir keine Daten schickt, obwohl Ich das über Hyperterminal versucht habe und das hat funktioniert (sendet mir Daten). Woran könnte das liegen? Ist die Wartedauer zu lang oder zu kurz?
- Liegt das vielleicht daran, dass in deiner Schleife überhaupt keine Wartezeit vorhanden ist?
- Oder daran, dass du zwar ein TermChar konfigurierst, dann aber trotzdem fälschlicherweise BytesAtPort verwendest? Wurde dir nicht schon mal empfohlen, auf BytesAtPort zu verzichten?
Du hast Recht, mir wurde empfohlen den "Byte at Port" zu entfernen. Habe Ich auch gemacht, aber leider trat bei mir bei einer Byte Zahl größer 1 ein Zeitüberschreitungsfehler ein. Daher habe Ich das Element wiedereingefügt.
und jetzt fragst du den seriellen Port so schnell ab, dass du immer wieder leere Strings aus dem noch leeren Buffer liest - und dich darüber wunderst, dass der Sensor keine Daten liefert...
Zitat:leider trat bei mir bei einer Byte Zahl größer 1 ein Zeitüberschreitungsfehler ein
Vielen Dank für deinen Tipp. Ich habe eine Frage zur Umwanldung von ASCII in Hex. Ich erhalte vom Sensor Telegramme in ASCII, die x und y Koordinatenverschiebungen enthalten. Dank eurer Hilfe konnte Ich aus der Hex Schreibweise diese in float umwandeln, da Ich die Position der Informationen im Telegramm in Hex-schreibweise (Normalanzeige) kenne. Diese beiden float-Zahlen schreibe Ich in einer Datei in zwei Spalten auf.
Das Problem ist, dass die gesendeten ASCII-Telegramme lang sind und Ich diese nicht mit "Typumwandlung" in Hex-Schreibweise umwandeln kann. Ich habe versucht das über eine Schleife zu lösen. Aber die Umwandlung klappt nicht, wie Ich sie gerne hätte. Die Umwandlung sollte in der Hex-Schreibweise beispielsweise wie folgt aussehen 0D343534353031303233303146DED29540A3A3EE400C464133450A.
Der Sensor wird mit 80 Hz abgetastet, ist da eine Schleife sinnvoll oder gibt es eine schnellere Lösung?
Danke für dein VI. Ich habe es gerade ausprobiert und erhalte am Ausgang der Umwandlung keine Hex-Schreibweise des gesendeten ASCII Telegramme, sondern weiterhin ASCII-Zeichen. Müsste ich noch etwas anpassen?
Prama
05.03.2013, 15:49 (Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2013 15:52 von GerdW.)
Zitat:erhalte am Ausgang der Umwandlung keine Hex-Schreibweise des gesendeten ASCII Telegramme, sondern weiterhin ASCII-Zeichen.
Vielleicht solltest du noch mal klar definieren, was Input und Output sein soll.
Die oben gezeigte Routine erwartet einen String, der ASCII-Zeichen aus dem Bereich {0-9, A-F} enthält und rechnet diesen um. Der Output enthält Bytes (die du in Hex-Display anschauen solltest!), die jeweils 2 Zeichen aus dem Inputstring entsprechen. Das sollte deinem Wunsch entsprechen:
mein Input besteht aus ASCII-Zeichen, die auch non printable Zeichen enthalten, z.B. 45450102301FÞÒ•@££î@FA3E (in Normalanzeige). Dieses Telegramm möchte Ich in Hex-Schreibweise haben, nämlich in dieser Darstellung (Normalanzeige) 0D343534353031303233303146DED29540A3A3EE400C464133450A. Dieses Hex-Telegramm möchte Ich ab der 26.Stelle in ein String mit 16 Zeichen teilen. Dies habe Ich schon in meinem oben hochgeladenen VI realisiert. Nur bräuchte Ich hierfür die oben angegebene Hex-Darstellung (0D343534353031303233303146DED29540A3A3EE400C464133450A) der vom Sensor gesendeten ASCII-Telegramme.