PyVisa und Charkter > 128
Verfasst: Montag 13. Oktober 2008, 13:11
Hallo Leute,
ich schreibe eine Gerätesteurung mit PyVisa (auf Windows XP), weil darin gleichzeitig die GPIB-Unterstützung implementiert ist. Da ist ein Problem aufgetaucht ist, dessen Lösung ich nicht kenne; im Internet habe ich auch nichts dazu gefunden.
Es dreht sich um eine serielle Schnittstelle, über die Zeichenketten aus Charakteren ("Bytes") geschickt werden. Gerätebefehle werden so durch Zahlen ziwschen 30 und 255 als Bytes geschickt. Jedes einzelne Zeichen dieser Zeichenkette muß interpretiert werden (z.B. mit ord). Da taucht folgendes Problem auf: es gibt eben Befehle mit Werten größer als 128, z.B.130 (\x82), das von PyVisa als -2 und dann als 2 interpretiert wird : Das Lesen des Buffers aus der Schnittstelle wird abgebrochen, vermutlich weil das Zeichen größer als 128 ist (ähnliches passiert mit allen Befehlen größer als 128). Beim nächsten Lesen aus der Schnittstelle wird dann der Rest gelesen. Das Problem hängt wohl mit dem Zeichensatzcoding zusammen (soviel habe ich im Internet herausgefunden). Dort wird allerdings immer nur um Unicode und Darstellbarkeit von Zeichen etc. diskutiert. Ich möchte allerdings kein Zeichen (im Sinne einer Schrift) dargestellt haben, sondern die 130 als 130 erkannt haben (wenn 130 als -2 gelesen wird, liegt das am Vorzeichenbit; in C gibt es dafür die Variable unsigned char). Kennt jemand dafür eine Lösung?
MfG
Holger
ich schreibe eine Gerätesteurung mit PyVisa (auf Windows XP), weil darin gleichzeitig die GPIB-Unterstützung implementiert ist. Da ist ein Problem aufgetaucht ist, dessen Lösung ich nicht kenne; im Internet habe ich auch nichts dazu gefunden.
Es dreht sich um eine serielle Schnittstelle, über die Zeichenketten aus Charakteren ("Bytes") geschickt werden. Gerätebefehle werden so durch Zahlen ziwschen 30 und 255 als Bytes geschickt. Jedes einzelne Zeichen dieser Zeichenkette muß interpretiert werden (z.B. mit ord). Da taucht folgendes Problem auf: es gibt eben Befehle mit Werten größer als 128, z.B.130 (\x82), das von PyVisa als -2 und dann als 2 interpretiert wird : Das Lesen des Buffers aus der Schnittstelle wird abgebrochen, vermutlich weil das Zeichen größer als 128 ist (ähnliches passiert mit allen Befehlen größer als 128). Beim nächsten Lesen aus der Schnittstelle wird dann der Rest gelesen. Das Problem hängt wohl mit dem Zeichensatzcoding zusammen (soviel habe ich im Internet herausgefunden). Dort wird allerdings immer nur um Unicode und Darstellbarkeit von Zeichen etc. diskutiert. Ich möchte allerdings kein Zeichen (im Sinne einer Schrift) dargestellt haben, sondern die 130 als 130 erkannt haben (wenn 130 als -2 gelesen wird, liegt das am Vorzeichenbit; in C gibt es dafür die Variable unsigned char). Kennt jemand dafür eine Lösung?
MfG
Holger