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

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:

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
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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]#!/usr/bin/env python
import this[/code]
LOISEL

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
Antworten