【发布时间】:2015-12-15 05:49:57
【问题描述】:
我正在使用 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.write(t) 中写入时 它给出了一个错误,我什至尝试过
gsm.write(byte(t))
gsm.write(t.encode())
但是,还是不行。
【问题讨论】:
-
您当然需要提供您看到的错误......以及“失败”的含义......您可能还想
print(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?
标签: python serial-port raspberry-pi