关于串口,重启计算机后总是连接不上,用串口调试工具打开一次以后才能连接上

本文描述了一种重启计算机后串口无法正常连接的问题,并详细分析了导致该问题的根本原因在于串口初始化设置不当,特别是StopBits属性被错误地设置为1.5而非预期的1,最终通过调整代码解决了这一故障。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于串口,重启计算机后总是连接不上,用串口调试工具打开一次以后才能连接上的这个问题,以前遇到过后来不知道改了哪里就又没事了。这几天做串口程序,又出现上述问题,郁闷不得了。在网上找到一个跟帖子描述的内容跟我这个毛病差不多,也是不知道怎么以修改就好了。http://bbs.youkuaiyun.com/topics/300087092

我用两台机器互联发现,重启计算机后直接连接发送内容时,另一台计算机接收到的全是乱码。这说明肯定是我的代码有问题。我把每个串口操作的函数都加上出错信息返回,终于发现问题的原因了。

我发现当执行 SetCommState 是程序报错,也就是设置串口的时候出现错误了。再仔细检查发现设置 dcb.StopBits属性时直接赋值为1,然而事实上这并不代表停止位为1,而是1.5。关于StopBits 的描述是这样子的:dcb.StopBits //两个停止位 0,1,2 = 1, 1.5, 2 ,当StopBits 值为0是代表停止位为1,值为1时代表停止位为1.5。而计算机并没有1.5这个设置,因此 SetCommState 报错,也就是初始化串口没有成功。

综上,当发现重启机器后自己的代码串口连接不上,用串口调试软件连接一次后,代码的串口又能够连接了。问题应该在串口初始化上面,懒得监视初始化代码的错误信息,而串口初始化又没有成功。当用别的软件正确设置过对应串口后,自己的代码才能正常连接。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值