Raspberrypi上python串行端口的字符串写入

Raspberrypi上python串行端口的字符串写入,python,serial-port,raspberry-pi,Python,Serial Port,Raspberry Pi,我正在使用python语言在RPi中实现SIM900接口。 但是,在port.write()函数中发送字符串时出现问题 这是我的密码: # 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,“A

我正在使用python语言在RPi中实现SIM900接口。 但是,在port.write()函数中发送字符串时出现问题

这是我的密码:

# 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中写入时。写入(t) 它给出了一个错误,我甚至用

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

但是,它仍然不起作用。

您可以尝试在Python标准的操作系统模块中使用以下代码:

import os

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

致以最诚挚的问候

您肯定需要提供您看到的错误。。。“失败”是什么意思。。。您可能还希望
打印(repr(t))
以查看实际的表示AP是否包含双引号?否则你必须添加它们…AP是字符串,如果我包含双引号t3=“AP”只存储AP而不是AP的内容!!!我试着运行这个,但是
t
没有按图所示打印。它不会打印包含
TATA.DOCOMO.INTERNET
的双倒逗号。根据给定的
AP
输入,它打印
'AT+SAPBR=3,1,“APN”,TATA.DOCOMO.INTERNET\r\n'
。这与
port.write(…)
中的不同。我尝试更改了
t2=''APN'、\''
t4='\'\r\n'
。执行此操作时,它会打印
'AT+SAPBR=3,1,“APN”,“TATA.DOCOMO.INTERNET”\r\n'
,这与
port.write
相同。您使用的python版本是什么?此外,您也可以使用pyserial。