Hallo Leute!
Benütze ein python script um mit einem µC über die serielle Schnittstelle zu kommunizieren. Dazu benutze ich die Klasse "serialwin32.py", in der ich aber bis jetzt nur das Objekt
" def write(self, s): ("""Output the given string over the serial port.""") "
gefunden habe. Ich kann mit dieser Funktion nur z.b. einen Ascii String senden z.b. "a", über die serielle wird dann hexadezimal 0x61 gesendet. Jetzt will ich aber keine Strings senden, sondern direkt 0x61. Hätte gerne eine Funktion, welche eine Liste von Bytes über die serielle schickt! Habe es auch schon mit der Funktion "Hex2Ascii" versucht, jedoch enthält diese Funktion nur den Standard - ASCII Satz bis 7F und alles was darüber ist, wird wieder zu einem Leerzeichen (0x00).
Ich hoffe, dass mir jemand helfen kann...
lg
hex bytes statt ascii strings mit pyserial senden??
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo andi!andi.huber hat geschrieben:Jetzt will ich aber keine Strings senden, sondern direkt 0x61.
Willkommen im Python-Forum!
Du kannst deine Bytes im Bytestring auch hexadezimal angeben.
Code: Alles auswählen
>>> s = "\x61"
>>> s
'a'
>>>
Code: Alles auswählen
import serial
ser = serial.Serial("COM1")
ser.write("\x61")
ser.close()
Gerold

Zuletzt geändert von gerold am Freitag 23. November 2007, 11:56, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- User
- Beiträge: 3
- Registriert: Freitag 23. November 2007, 10:02
super danke, haut hin!
sehr schnelle beantwortung...wirklich klasse...
sehr schnelle beantwortung...wirklich klasse...
-
- User
- Beiträge: 3
- Registriert: Freitag 23. November 2007, 10:02
Habe eine Liste command=[0x26,0x40,0x40] und würde diese HexWerte gerne transparent über die serielle Schnittstelle schicken. Nun habe ich versucht mir einen String zusammenzubauen, d.h. aus jedem HexWert soll ein Ascii String entstehen....
for cnt in range(0, len(command), 1):
string_command="\x"+command[cnt]
Leider haut dies nicht hin, da er jetzt folgendes macht:
string_command="\x26\x40\x40"
und nicht:
string_command="&@@"
hmm. gibs da ne lösung??
danke im vorraus für anregungen oder sogar lösungsvorschläge
for cnt in range(0, len(command), 1):
string_command="\x"+command[cnt]
Leider haut dies nicht hin, da er jetzt folgendes macht:
string_command="\x26\x40\x40"
und nicht:
string_command="&@@"
hmm. gibs da ne lösung??
danke im vorraus für anregungen oder sogar lösungsvorschläge
Das kann so nicht klappen. die \ im string werden zur "compilezeit" interpretiert.
Was du möchtest, ginge so:
chr nimmt eine Zahl und gibt dir das dazugehörende Zeichen. die Umkehrfunktion dazu wäre ord(x)
(tipp: nutze die code-tags der forumssoftware)
Was du möchtest, ginge so:
Code: Alles auswählen
for cmd in commands:
string_command = chr(cmd)
(tipp: nutze die code-tags der forumssoftware)