Umwandeln von ASCII in Binärdaten

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.
Loisel

Umwandeln von ASCII in Binärdaten

Beitragvon Loisel » Freitag 3. September 2004, 11:11

Hallo,
ich bekomme je zwei byte über die ser. Schnittstelle von einem MC, diese Daten will ich nun um sie weiterverarbeiten zu können in binär oder int Zahlensysteme umwandeln.


import serial
import binascii

ser = serial.Serial(0)
s = ser.read(2)
print s
w = binascii.a2b_qp(s)

print s
print w
ser.close()

Ausgabe: 3x das gleiche ASCII Paar, habe bereits schon einige andere binascii Funktionen ausprobiert, müsste meines Erachtens mit der _qp Fkt. hinhauen.
Hat von euch jemand Erfahrungen mit dieser Thematik.
Wäre sehr dankbar.

Stefan
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Beitragvon joerg » Freitag 3. September 2004, 13:31

Vielleicht suchst Du sowas wie unpack() aus dem Modul struct?

HTH

Jörg
"Sie sind nicht berechtigt, unrechtmäßige Kopien dieses Datenträgers zu erstellen." - Microsoft-Weisheit auf einer CD von MS-VisualC++-6.0
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Freitag 3. September 2004, 13:37

Hi Stefan,

also erstmal print wandelt Typen vor der Ausgabe, wenn es nicht schon Strings sind in Strings um.

Code: Alles auswählen

print 12

ergibt die gleiche Ausgabe wie

Code: Alles auswählen

print "12"


zunächst ist mal interessant, was für Bytes du da bekommst, sind das die zeichen "1" und "2" oder "/x01" und "/x02" ?
im ersten fall ists einfach

Code: Alles auswählen

import serial


ser = serial.Serial(0)
s = ser.read(2)
print s
w = int(s)

print "s ist vom Type %s und hat den Wert %s" % (type(s), repr(s))
print "w ist vom Type %s und hat den Wert %s" % (type(w), repr(w))

ser.close()

im 2. Fall gehts so

Code: Alles auswählen

import serial

ser = serial.Serial(0)
s = ser.read(2)
print s
w = ord(s[0])*256+ord(s[1])

print "s ist vom Type %s und hat den Wert %s" % (type(s), repr(s))
print "w ist vom Type %s und hat den Wert %s" % (type(w), repr(w))

ser.close()


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
LOISEL

Beitragvon LOISEL » Samstag 4. September 2004, 11:22

Also erstmal vielen Dank Dookie,
funktioniert einwandfrei. Ich glaube man muss mit dem Tutorial doch schon sehr vertraut sein, um sowas zu finden ;-)

Ich hab nochmal kurz ne Frage: weiss jemand ob es schon fertige Programmfragmente für Python gibt, die Werte über der Zeit auf einer Skala darstellen, (Schreiber --> siehe Excell oder so).

Melde mich aber nochmal, da ich die nächsten Tage leider andersweilig beschäftigt bin.

Dank im Vorraus


Stefan

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder