2015-12-15 6 views
5

私はPython言語を使ってRPiにSIM900インターフェイスを実装しています。 しかし、port.write()関数で文字列を送信する際に問題があります。ここでPythonで文字列を書くserial Raspberrypiのポート

は私のコードです:上記の行がうまく機能

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

...

は今私の要件は、コマンドラインから読み取る必要があり、文字列TATA.DOCOMO.INTERNETであり、私はその文字列を追加する必要がありますb'AT+SAPBR=3,1,"APN","xxxx"\r\n'となります。

しかし、私は変数にAPN名を読みしようとしていますし、次のように動作していない付加した後、コード行が

# 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 

あるPythonで、それの出力は次のとおりです。

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

は、それは私が必要とするラインのように見えますが、私はそれがエラーになります gsm.write(T)に書くとき、私も

gsm.write(byte(t)) 
gsm.write(t.encode()) 
0で試してみました

しかし、それでも動作しません。

+1

あなたは確かにあなたが見ているものを誤り提供する必要があるだろう...と何が手段を「失敗しました」 ...実際の表示を見るには 'print(repr(t))'したいかもしれません –

+0

二重引用符をAPが含んでいますか?そうでない場合は、それらを追加する必要があります... – jsphpl

+0

APは文字列です。二重引用符を使用すると、「AP」はAPの内容ではなくAPのみを保存します。 – cvk

答えて

0

あなたはPythonでOS標準モジュールでこのコードを使用してみてください可能性があります

import os 

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

敬具

+0

また、pyserialを使用することもできます。 –

関連する問題