2015-12-15 10 views
5

Ich implementiere SIM900-Schnittstelle in RPi mit Python-Sprache. Es gibt jedoch ein Problem beim Senden einer Zeichenfolge in der Funktion port.write().Zeichenfolge schreiben in Python seriellen Port auf Raspberrypi

Hier ist mein Code:

# This line has to write on serial port 
port.write(b'AT+SAPBR=3,1,"APN","TATA.DOCOMO.INTERNET"\r\n') 

Die obige Linie gut funktioniert ...

Jetzt ist meine Anforderung der String TATA.DOCOMO.INTERNET, die von der Kommandozeile lesen hat, und ich brauche diese Zeichenfolge anhängen mit b'AT+SAPBR=3,1,"APN","xxxx"\r\n'.

Aber wenn ich versuche, den APN-Namen in die Variable zu lesen und nach dem Anhängen funktioniert nicht, sind die Codezeilen

# AP ="TATA.DOCOMO.INTERNET"-string read from serial input 
AP = gsm.read() 
t1 = "AT+SAPBR=3,1," 
t2 = '"APN",' 
t3 = AP 
t4 = '\r\n' 
t = t1 + t2 + t3 + t4 

Der Ausgang der es in Python ist wie folgt:

AT+SAPBR=3,1,"APN","TATA.DOCOMO.INTERNET"\r\n' 

es sieht aus wie die Linie, die ich brauche, aber wenn ich in gsm.write (t) schreiben es einen Fehler gibt, habe ich sogar mit

gsm.write(byte(t)) 
gsm.write(t.encode()) 
0 versucht

Aber es funktioniert immer noch nicht.

+1

Sie würden auf jeden Fall liefern müssen, welche Fehler Sie sehen ... und was „nicht“ bedeutet ... möchten Sie vielleicht auch 'print (repr (t))', um die tatsächliche Darstellung zu sehen –

+0

enthält AP die Anführungszeichen? andernfalls müssen Sie sie hinzufügen ... – jsphpl

+0

AP ist string, wenn ich doppelte Anführungszeichen t3 = "AP" speichere nur AP nicht Inhalt von AP !!! – cvk

Antwort

0

Sie können versuchen, diesen Code mit os-Modul, das Standard in Python:

import os 

os.system(b'echo -e "AT+SAPBR=3,1,\"APN\",\"TATA.DOCOMO.INTERNET\"\r\n" >> ttyAMA0') 

Mit freundlichen Grüßen

+0

Sie können auch Pyserial verwenden. –

Verwandte Themen