serielle daten senden

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
mad23
User
Beiträge: 7
Registriert: Samstag 1. November 2014, 20:38

Hallo Zusammen,
ich möchte via Serieller Schnittstelle daten an ein Arduino senden. Ich nutze hierzu Python 3.2.3. Das senden via ser.write(b '123') funktioniert ohne Probleme. Ich möchte jedoch die Zahl bzw. den String in eine Variable "verpacken". Wie muss der Code angepasst werden?
BlackJack

@mad23: Was meinst Du mit ”verpacken”?

Code: Alles auswählen

variable = b'123'
ser.write(variable) 
mad23
User
Beiträge: 7
Registriert: Samstag 1. November 2014, 20:38

Nun, wenn ich folgendes als Anweisung eingebe: ser.write(Data).Data enthält eine Zahl. So gibt es eine Fehlermeldung. Objekt of Type has no len...
BlackJack

@mad23: Ja, Du kannst nur Bytes über eine serielle Schnittstelle verschieben. Genau wie bei Dateien. Du musst die Zahl halt in ein Bytes-Objekt umwandeln. Da kommt es jetzt darauf an was Du tatsächlich übertragen möchtest. Ein Byte mit dem Wert der Zahl oder eine Bytefolge die die Ziffern der Zahl als Bytewerte der ASCII-Werte für die Ziffern enthält. Im ersten Fall rufst Du `bytes()` mit einer Liste auf die diese Zahl als einziges Element enthält, im anderen Fall wandelst Du die Zahl erst in eine Zeichenkette um und kodierst die dann als `bytes`.
mad23
User
Beiträge: 7
Registriert: Samstag 1. November 2014, 20:38

Hallo BlackJack,
ich möchte gern die Zahl z.B 123 senden. Wie wandle ich diese in Byte um. Da die Variable nun mal variabel ist könnte es auch die Zahl 12 sein.
Kurzum das Python Programm soll den Inhalt der Variablen an die Serielle Schnittstelle senden.
BlackJack

@mad23: Na das habe ich doch geschrieben: `bytes()` mit einer Liste aufrufen die genau diese eine Zahl als Element enthält. Wie die Zahl in die Liste kommt, also ob Du da eine literale Zahl oder einen Namen verwendest ist doch egal.
mad23
User
Beiträge: 7
Registriert: Samstag 1. November 2014, 20:38

@BlackJack
gibt es hier ein gut dokumentiertes Beispiel?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Code: Alles auswählen

bytes([123])
Das Leben ist wie ein Tennisball.
mad23
User
Beiträge: 7
Registriert: Samstag 1. November 2014, 20:38

@EyDu
Danke. So funktioniert es.
Antworten