SerialException:Cannot configure port something went wrong

 2023-09-05 阅读 73 评论 0

摘要:完整报错 SerialException:Cannot configure port something went wrong, Original message: OSError(22, '参数错误', None, 87) 解决办法 波特率错误,没错, 当时按照网上 modbus_tk 模块例子写的, 所以完全没有注意到波特率值与协调商定好的不一致, 因为当时已经可以

完整报错

SerialException:Cannot configure port something went wrong, Original message: OSError(22, '参数错误', None, 87)

解决办法

波特率错误,没错, 当时按照网上 modbus_tk 模块例子写的, 所以完全没有注意到波特率值与协调商定好的不一致, 因为当时已经可以成功的读写了(当时用的是usb串口进行的调试), 而经过我反复测试发现, usb串口连接使用波特率使用19600 没有报错, 而工业电脑上集成的串口波特率使用19600 就报我上面提的错误。因为我们当时商定的波特率是 19200。所以我波特率改为19200就直接成功了

其他(我排查的步骤)

这个垃圾问题我一步一步排查,首先当时是排查为什么报错,百度一番没找到, 谷歌一番又没找到, 然后我想到了可能是usb串口与工业电脑集成的串口有所区别, 然后我在工业电脑上接入了usb串口, 果不其然代码可以成功运行了, 这个时候我觉得可能是 COM1这种串口的名字在usb串口和工业电脑集成串口不一致导致的, 所以简单写了一个测试程序

import serialPORT = str(input("输入连接串口号:"))
serialFd = serial.Serial(PORT,9600,timeout = 6,bytesize=8, parity='N', stopbits=1)
print ("check which port was really used >",serialFd.name)

结果我惊讶的发现,无论usb串口还是集成串口都可以成功连接, 这个时候我目标就已经转向了波特率这个参数,所以我写了下面这个测试程序

import serialPORT = str(input("输入连接串口号:"))
b = int(input("波特率:"))
serialFd = serial.Serial(PORT,b,timeout = 6,bytesize=8, parity='N', stopbits=1)
print ("check which port was really used >",serialFd.name)

结果发现果然是波特率影响的报错, 然后我查看了软件连接的波特率
在这里插入图片描述
果然和我写的波特率不一致, 我哭笑不得。很多错误都是低级错误,但是报错却很难查到
所以你看到这篇文章希望可以节约你的时间,这个垃圾问题浪费了我一个小时的时间。

最后

其实核心的一个问题就是为什么 usb串口使用波特率使用19600不会报错,而工业电脑集成的串口就必须与协调的一致才可以。我当时不知道两者有区别,所以才会浪费这么长时间
如果有明白人希望给我简单的说一下, 我不是专门搞这玩意的。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/870.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息