Seite 1 von 1

serielle daten senden

Verfasst: Samstag 1. November 2014, 20:49
von mad23
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?

Re: serielle daten senden

Verfasst: Samstag 1. November 2014, 21:14
von BlackJack
@mad23: Was meinst Du mit ”verpacken”?

Code: Alles auswählen

variable = b'123'
ser.write(variable) 

Re: serielle daten senden

Verfasst: Samstag 1. November 2014, 21:22
von mad23
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...

Re: serielle daten senden

Verfasst: Samstag 1. November 2014, 21:27
von 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`.

Re: serielle daten senden

Verfasst: Samstag 1. November 2014, 21:37
von mad23
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.

Re: serielle daten senden

Verfasst: Samstag 1. November 2014, 22:10
von 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.

Re: serielle daten senden

Verfasst: Sonntag 2. November 2014, 14:16
von mad23
@BlackJack
gibt es hier ein gut dokumentiertes Beispiel?

Re: serielle daten senden

Verfasst: Sonntag 2. November 2014, 15:51
von EyDu

Code: Alles auswählen

bytes([123])

Re: serielle daten senden

Verfasst: Sonntag 2. November 2014, 16:23
von mad23
@EyDu
Danke. So funktioniert es.