AT-Kommandos zu Bytes kodieren

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
lacke_
User
Beiträge: 6
Registriert: Freitag 1. Dezember 2017, 16:09

Dienstag 6. Februar 2018, 17:30

Hallo Zusammen,

ich versuche mit Hilfe von AT-Kommandos ein SIM_Modul anzusprechen. Dabei verwende ich folgendes kleines Programm, dass über eine serielle Schnittstelle dazu Verbindung aufnimmt.

Code: Alles auswählen

import serial
import os,time


port = serial.Serial("/dev/ttyS0", baudrate = 9600, timeout = 1)

port.write('AT' + '\r\n')
rcv = port.read(10)
print (rcv)
Als Ergebnis sollte eigentlich "AT OK" ausgegeben werden. Allerdings tritt folgender Fehler dabei auf:

Traceback (most recent call last):
File "/home/pi/SIm.py", line 7, in <module>
port.write('AT' + '\r\n')
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 518, in write
d = to_bytes(data)
File "/usr/lib/python3/dist-packages/serial/serialutil.py", line 63, in to_bytes
raise TypeError('unicode strings are not supported, please encode to bytes: {!r}'.format(seq))
TypeError: unicode strings are not supported, please encode to bytes: 'AT\r\n'


Ich habe es auch schon mit der Kodierung zu Bytes versucht, allerdings auch ohne Erfolg.

Wie sendet man am besten AT-Kommandos? Bzw. Wie kodiert man sie richtig?

Viele Grüße

Lacke
__deets__
User
Beiträge: 3485
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dienstag 6. Februar 2018, 17:37

Code: Alles auswählen

port.write(b'AT\r\n')
Wenn du ansonsten dynamische Strings zu Bytes wandeln willst, dann musst du enkodieren, sprich "encode" aufrufen. Mit einem geeigneten Encoding, im Zweifel mit ASCII (bzw. ascii, also s.encode('ascii') ) anfangen.
Antworten