【问题标题】:string writing in python serial Port on Raspberrypi在Raspberry Pi上的python串行端口中写入字符串
【发布时间】: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


【解决方案1】:

您可以尝试将此代码与 Python 中的标准 os 模块一起使用:

import os

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

最好的问候

【讨论】:

  • 另外,你可以使用 pyserial。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多