Seite 1 von 1

AT-Kommandos zu Bytes kodieren

Verfasst: Dienstag 6. Februar 2018, 17:30
von lacke_
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

Re: AT-Kommandos zu Bytes kodieren

Verfasst: Dienstag 6. Februar 2018, 17:37
von __deets__

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.