移远模块使用pyserial时无法执行AT+COPS写命令

问题描述 投票:0回答:1

问题是模块(BG95评估板)总是(当我使用AT+COPS写入命令时)返回:

Error: device reports readiness to read, but returned no data (device disconnected or multiple access on port?)
编辑: 具体来说就是发送后读取串口(b'AT+COPS=0,2 ') 不返回任何内容并给出错误消息。此后无法与串行端口进行任何进一步的交互。但是,随后可以从不同的串行端口访问该设备。

这就是我设置串口的方法:

serial.Serial(port=portname, baudrate=115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=0.5, exclusive=True)

我有:

  • 除 AT+COPS 写入命令、AT+COPS 之外的所有命令都可以使用串行连接吗? FE就像魅力一样。
  • 知道该命令需要长达180秒,我分别将serialPort.timeout变量设置为180!
  • 工作命令,它按照我想要的方式与移远QNavigator一起使用:AT + COPS = 0,2 - 我没有指定其他两个参数,因为我只想更改为操作符格式2的自动模式;操作员选择是自动的,不需要分别值。
  • SIM卡已插入

我尝试过:

  • 设置手动超时,因为尽管有 180 秒的超时,readline() 命令还是很快终止
  • 使用 read(1) 而不是 readline(),因为它不搜索 LF。
  • 使用read_until()
  • 使用serialPort.in_waiting参数,但在AT+COPS命令完成之前返回0。
  • 我的代码有很多不同的变化,没有任何希望的迹象。

令我困惑的是,readline() 命令在最大超时之前就终止了,并出现错误。如果设备未准备好,则不应触发它。对我来说,这意味着设备已准备好应答,但在“确定”时失败 ',我无法理解,因为它适用于所有命令。 我希望我能得到“好的” ' 就像我将超时设置为较高值时的其他 AT 命令一样。 命令因错误而失败后,该端口不再可用,因此我必须重新扫描端口值,通常是 tty4 而不是 tty3,并且可以正常访问。我什至似乎,它改变了中间的提供者,这也可能是我尝试的结果,它只是在响应上失败了,但我不确定。

有人遇到过这个问题,或者知道如何处理吗?

最诚挚的问候, 罗伯特

python pyserial at-command quectel
1个回答
0
投票

原来是电源有问题。

我无法弄清楚为什么它不起作用,直到我继续执行其他任务,例如使用 BattLab-One USB 工具检查功耗。我用它为模块供电,现在它不会使串行端口崩溃,并使用 AT+COPS=0,2 命令提供可靠的输出。我现在将连接电池来为模块供电。当 USB 电源关闭时,串行端口仍然可以工作。

关于BG95 EvalBoard之前的电源;我使用了 USB 分线器,要使用两个 USB 端口的电源,这对于一台便宜的笔记本电脑来说是不够的。但是我使用 QNavigator 的台式机在一个 USB 端口上就足够强大了。

抱歉打扰,希望这篇文章可以帮助别人;如果有必要,请随时删除它。

最诚挚的问候, 罗伯特

© www.soinside.com 2019 - 2024. All rights reserved.