问题是模块(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)
我有:
我尝试过:
令我困惑的是,readline() 命令在最大超时之前就终止了,并出现错误。如果设备未准备好,则不应触发它。对我来说,这意味着设备已准备好应答,但在“确定”时失败 ',我无法理解,因为它适用于所有命令。 我希望我能得到“好的” ' 就像我将超时设置为较高值时的其他 AT 命令一样。 命令因错误而失败后,该端口不再可用,因此我必须重新扫描端口值,通常是 tty4 而不是 tty3,并且可以正常访问。我什至似乎,它改变了中间的提供者,这也可能是我尝试的结果,它只是在响应上失败了,但我不确定。
有人遇到过这个问题,或者知道如何处理吗?
最诚挚的问候, 罗伯特
原来是电源有问题。
我无法弄清楚为什么它不起作用,直到我继续执行其他任务,例如使用 BattLab-One USB 工具检查功耗。我用它为模块供电,现在它不会使串行端口崩溃,并使用 AT+COPS=0,2 命令提供可靠的输出。我现在将连接电池来为模块供电。当 USB 电源关闭时,串行端口仍然可以工作。
关于BG95 EvalBoard之前的电源;我使用了 USB 分线器,要使用两个 USB 端口的电源,这对于一台便宜的笔记本电脑来说是不够的。但是我使用 QNavigator 的台式机在一个 USB 端口上就足够强大了。
抱歉打扰,希望这篇文章可以帮助别人;如果有必要,请随时删除它。
最诚挚的问候, 罗伯特