基于QT_E的串口通信故障及其解决方案
(2)数据传输不影响主程序的运行;(3)确保数据或文件不丢失。
基于如上功能需求,以PC/104为硬件基础,在Linux虚拟机上先进行内核裁剪[4],内核版本是Linux-2.6.0,在字符设备选项中选用串口选项,配置完后进行编译,再进行文件系统制作和grub配置,最后实现
6]Linux操作系统的移植[5,。串口编程是在Linux的
QT/E多线程主要通过继承QThread线程类来实现,首先重新实现QThread::run()方法,然后在主线程中调用QThread::start()方法来启动该线程。因此在串口通信子线程中应该修改run()函数,使其实现数据双向传输的功能
[10]
。run()函数主要代码如下:
structtermiosoptions;//串口设置结构体fd=open("/dev/ttyS0",O_RDWR|O_NONBLOCK);//非阻塞方式打开串口if(fd==-1)
{printf("erroropenfd\n");}tcgetattr(fd,&options);
cfsetispeed(&options,B9600);//波特率设置cfsetospeed(&options,B9600);
options.c_cflag&=~PARENB;//奇偶校验设置options.c_cflag&=~CSIZE;
options.c_cflag|=CS8;//8个数据位
options.c_lflag&=~(ICANON|ECHO|ECHOE|ISIG);//原始输入模式options.c_oflag&=~OPOST;//原始输出tcsetattr(fd,TCSANOW,&options);while(1)
{inti;chara,b;charbuff;a='@';b='*';i=0;write(fd,&a,1);//写串口
QT/E中完成的。为确保在传输过程中不丢失数据/文件,本文制定了自定义的握手协议,根据实际应用可以选择合适的握手字符。通讯模块程流程图见图2

。
图2程序流程图
由于要求数据传输时不影响主程序的运行,因此串口通信程序在嵌入式Linux系统中以多线程的方式运行。
usleep(3000);//等待串口发送完毕buff='\0';
read(fd,&buff,1);//读串口
qApp->processEvents();//响应用户消息}
该子线程通过使用设备终端文件的方式,实现了COM1读写功能。主线程调用子线程主要代码如下:
Mythreadsend;//定义发送子线程全局对象;voidForm1::testSlot()//发送函数{iopl(3);//开启端口读写权限
send.setTargetWidget(this);/*将send对象的主窗口设置为当前窗口*/
send.start();//启动子线程}
将工程编译后在诊断仪的嵌入式Linux系统上运行,并通过串口线连接至PC机的串口调试助手,串口,调试助手能正确的接收到‘@’程序正常运行;但是当通过PC机的串口调试助手向PC/104串口发送数据时,图3所示的图形化多线程串口程序将出现卡死现象,并且在1~2分钟后出现段错误,最后导致系统崩溃。
2QT/E下多线程操作串口通信故障
Linux系统通过串口终端设备文件来实现对串口
[7,8]
设备的访问。调试发现,在QT/E图形化多线程程
序中使用设备文件方式操作串口时,当串口已关闭,如果上位机再发送数据至PC/104串口,将导致嵌入式Linux系统卡死,并在1~2分钟后出现段错误,最终致使系统崩溃,测试过程如下。
在QT/E下多线程中,通过访问串口终端设备文件来实现串口操作,编写如图3的图形化串口通信程序,该程序运行于嵌入式Linux操作系统,程序由主框、“测试”“发送”架按钮和按钮组成。点击发送按钮可调用串口通信子线程,测试按钮用于测试程序能否够响应键盘、鼠标等消息
[9]

。
图3测试界面程序为确定在QT/E下多线程操作串口时容易出现段
你可能喜欢
- 串口调试工具
- 系统设计
- 单片机串口通信
- 串口通信原理
- 串口通信详解
- 串口通信编程
- 用串口调试工具助手发送数据串进行通信说明2页
- 串口调试工具使用及其相关技巧4页
- 串口调试工具使用3页
- 用串口调试工具助手发送数据串进行通信说明2页
- 利用串口调试工具设置MODEM和拨号(SC-10)5页
- M104B用串口调试工具测试模块类UART串口控制命令2页
- 加热炉的温度调节控制系统设计40页
- 电子系统设计2页
- _语音遥控小汽车系统设计27页
- 航空客运订票系统课程设计22页
- 数字系统设计1页
- 系统设计16页
- 51单片机与PC串口通信程序3页
- 51单片机串口通信笔记5页
- 51单片机与串口通信代码4页
- 80C51单片机串口通信(含原程序)5页
- Java软件与单片机串口通信5页
- PIC单片机自学手记之串口通信3页
- 第六讲 串口通信原理及操作流程62页
- 串口通信原理2页
- 串口通信原理及操作流程62页
- max232串口通信接口的PCB和原理图2页
- 双机串口通信原理图1页
- 单片机原理及应用——双单片机串口通信实验报告4页


