AT-Kommandos zu Bytes kodieren

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

AT-Kommandos zu Bytes kodieren

Beitragvon lacke_ » 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
Benutzeravatar
__deets__
User
Beiträge: 2162
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: AT-Kommandos zu Bytes kodieren

Beitragvon __deets__ » Dienstag 6. Februar 2018, 17:37

  1. 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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder