String Problem mit py2exe

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
benny
User
Beiträge: 9
Registriert: Mittwoch 12. Dezember 2007, 16:02

Hallo Zusammen,

ich versuche gerade eine serielle Schnittstelle wie folgt anzusprechen (code ist etwas verkürzt):

Code: Alles auswählen

ser = serial.Serial(...)
pos = berechnePosition() # Wert von 0-100 (integer)
msg = '\x01\x02\x03' + unichr(pos) # UnicodeDecodeError Fehlermeldung
ser.write(msg)
Das Funktioniert auch wunderbar - nur nicht mit py2exe. Dort bekomme ich eine Fehlermeldung:
UnicodeDecodeError('ascii','\x01\x02\x03', 0, 1, 'ordinal not in range(128))....
Aus anderen Beiträgen habe ich schon erfahren das py2exe nicht automatisch die encodings mit einbindet. Das habe nachgeholt - allerdings scheint das hier nicht das Problem gewesen zu sein.

Hat jemand eine Ahnung was es sein könnte, oder wie ich meinen seriellen String auch anders bauen könnte?

Danke im voraus!

Benny
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Funktioniert vielleicht:

Code: Alles auswählen

msg = '\x01\x02\x03%d' % pos
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Schon versucht?

Code: Alles auswählen

msg = ('\x01\x02\x03' + unichr(pos)).encode('ascii')
MfG
HWK
benny
User
Beiträge: 9
Registriert: Mittwoch 12. Dezember 2007, 16:02

HWK hat geschrieben:Schon versucht?

Code: Alles auswählen

msg = ('\x01\x02\x03' + unichr(pos)).encode('ascii')
MfG
HWK
jip, das wars :D

danke dir!

b.
BlackJack

Und was bitte ist der *Sinn* davon hier *Unicode* zu verwenden!?

Code: Alles auswählen

message = '\x01\x02\x03' + chr(pos)
# oder
message = '\x01\x02\x03%c' % pos
Und der Kommentar mit Wert von 0-100 kann irgendwie nicht stimmen, weil man dabei keinen Fehler mit Unicode bekommen dürfte.
Antworten