同样的程序在4台机上面运行,有1台每天会出现1-2次程序未响应。实在找不到问题。如果是硬件原因会引起程序未响应吗?
1条回答 默认 最新
关注 【相关推荐】
- 这个问题的回答你可以参考下: https://ask.csdn.net/questions/351173
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:此应用程序无法启动,因为没有Qt平台插件可以初始化,重新安装应用程序可能会解决此问题
- 您还可以看一下 梅会东老师的Qt高级系列之8:Qt多线程线程池数据同步机制及文件下载器项目实战课程中的 断点续传及配置文件的讲解小节, 巩固相关知识点
- 除此之外, 这篇博客: 解决QT接受串口数据时数据更新不及时,串口数据太多导致程序界面崩溃,串口接收数据过快等问题中的 4) 运行错误,报错 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
上述解决完后,又发现一个新的问题,也不知道时软件的缘故还是程序不对,
read和readAll
函数一次能够接受的最大数据为32个字节。尝试使用64位编译器,在程序中再加一个读串口的程序都没有作用,加的第二次读串口的程序根本就没有进去。由于每次接受32
个字节,每次都是循环到需要的报文处截止,这就导致有效的数据可能出现在第二次接受的数据中,但是由于不是报文头,程序给剔除掉了。导致每次输出的数据越来越少,到最后程序报错:
于是查阅可不可以读取串口的时候读取两次,结果又发现了一个很神奇的函数bytesAvailable()
,通过这个函数,我们为您可以在缓存中的数据达到大于等于33字节的时候再进行读取操作,同时保留补充的字节的语句,终于大功告成了!代码如下:if(portAngle.bytesAvailable()>=33){ // 等数据达到要求再进行读取操作 buffer.append(portAngle.read(33)); while(!buffer.isEmpty() and !(buffer[0]==0x55 and buffer[1]==0x53)){// 对错误数据进行处理,直到满足要求 buffer.remove(0,1); } if (buffer!=""){ buffer.append(portAngle.read(11-buffer.size())); //补充数据,保证所需字段数据完整 ucRxBuffer = reinterpret_cast<unsigned char *>(buffer.data()); angleHandle(ucRxBuffer); // 清空缓冲区 buffer.clear(); } }
后续遇到问题,在更新······
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥15 依据报错在原代吗格式的基础上解决问题
- ¥15 在虚拟机中安装flash code
- ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
- ¥20 verilog状态机方法流水灯
- ¥15 pandas代码实现不了意图
- ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
- ¥25 LT码在高斯信道下的误码率仿真
- ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
- ¥15 yolov5目标检测并显示目标出现的时间或视频帧
- ¥15 电视版的优酷可以设置电影连续播放吗?