达内LOGO和北京达内网址达内科技培训项目:Java培训 3G培训 Android培训 软件测试培训北京达内服务电话
IT培训
解决Qt启动串口无法使用的问题

     问题描述:
   
    Qt程序没启动之前,串口能正常收发数据,Qt程序一启动,串口数据全零。
   
    猜想:
   
    硬件:串口与LCD控制器端口复用
   
    软件:主程序线程编程方式存在bug;   Qt程序共享内存机制等干扰串口数据;   Qt初始化环境变量对串口占用;
   
    解决过程:
   
    用万用表检测串口各端口与LCD控制器各端口是否复用,结果表明,没有复用
   
    修改主程序线程运行方式,Qt运行之后串口数据依然全零。而且在命令行下输入
   
    echo hello > /dev/ttyS0 数据依然全零,表明问题根源在于串口本身,而不是线程无法运行。
   
    编写最简单的Qt界面程序运行,串口数据全零。说明只要Qt程序一运行,串口就无法正常工作,问题不在共享内存机制上。
   
    尝试只初始化Qt环境变量而不运行Qt程序,串口收发正常,表明问题不在环境变量。
   
    最终结果:Qt程序启动干扰了串口的波特率,把波特率重新设置为115200可正常工作。
   
    具体措施:在命令行输入setty /dev/ttyS2 115200,或者在脚本中添加sleep 5
   
    setty /dev/ttyS2 115200   (在脚本中加上sleep 5是因为Qt程序启动需要一定时间,要等Qt程序启动完成再设置波特率,不然设置完波特率后Qt程序正在启动着依然会干扰波特率)

原文链接:http://c.chinaitlab.com/basic/891835.html

苏州IT培训  
http://www.sztarena.org/

 

 

本页标签: Qt启动
客服系统