Daten aus Textfile über SPI versenden

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
pemozo
User
Beiträge: 1
Registriert: Mittwoch 17. April 2019, 18:11

Hallo,

ich bin momentan dabei aus einem Textfile zu lesen. In diesem Textfile steht in jeder Zeile ein 16 bit word. Diese möchte ich mit Hilfe von pyftdi versenden. Jedoch habe ich das Problem, dass ich über die serielle Schnittstelle keine 16 bit versenden kann sondern nur 8 bit. Gibt es eine Möglichkeit die 16 bit zu splitten?
Ich muss noch erwähnen, dass ich die jeweiligen Zeilen in Integer umwandeln muss.

Code: Alles auswählen

 with open(filename2+".txt","r") as txtFile:
        lines = txtFile.readlines()[2:]
        ##integerLines = [int(x,0) for x in lines]
        ##integerLines = bytes(integerLines)
        integerLines = [int(x) for x in lines
Wäre für Tipps sehr dankbar.
heiner88
User
Beiträge: 64
Registriert: Donnerstag 20. Oktober 2016, 07:29

Den File binär einlesen: open(.... "rb").
Hier zwei Funktionen zum Wandeln:

(1024).to_bytes(2, byteorder='big') # or 'little'

int.from_bytes(b'\x00\x10', byteorder='big')
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@heiner88: Wenn es sich um eine Textdatei handelt, macht es eher weniger Sinn die als Binärdatei zu öffnen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
heiner88
User
Beiträge: 64
Registriert: Donnerstag 20. Oktober 2016, 07:29

"In diesem Textfile steht in jeder Zeile ein 16 bit word"
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

@heiner88: Deine Glaskugel ist deutlich besser als unsere, wenn du weisst, wie das da steht. Du unterstellst binaere Repraesentation, womit das ein Widerspruch zur Aussage "Textfile" ist. Es kann genauso gut eine hexadezimal ascii codierte Zahl sein, oder irgendetwas anderes.

@pmeozo: kannst du uns mal einen Ausschnitt deiner Textdatei zeigen?
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@heiner88: In jeder *Zeile*, das kann also eigentlich nicht binär sein, sonst gäb's keine Zeilen und man bekäme auch Probleme wenn eine Zahl als Low- oder Highbyte ein Zeilenende-Zeichen wäre.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich vermute, dass in jeder Zeile eine Dezimalzahl im Bereich 0 bis 65535 oder -32768 bis +32767 steht. Die kann man dann mit einer der beiden Funktionen, die heiner77 gezeigt hat in zwei Bytes umwandeln, die dann über die serielle Schnittstelle versandt werden kann. Die Byteorder wäre da natürlich wichtig zu beachten.
Antworten