线程+定时实现linux下的Qt串口编程
2010-06-26 10:49
转:
线程+定时实现linux下的Qt串口编程
作者:lizzy115 时间:2010,5,14
说明:本设计采用的是线程+定时实现linux下的Qt串口编程,而非网上资料非常多的Qt编写串口通信程序全程图文讲解系列,因为Qt编写串口通信程序全程图文讲解系列是很好实现,那只是在windows下面的,可是在linux下面实现串口的通信并非如此,原因在于QextSerialBase::EventDriven跟QextSerialBase::Polling这两个事件的区别,EventDriven属于异步,Polling属于同步,在windows下面使用的是EventDriven很容易实现,只要有数据就会触发一个串口事件,网上说linux下面需要的是Polling,可是还是不行的,只要串口有数据的时候他会在QByteArray temp = ->readAll(); 这句一直读取数据,没能退出,直到断掉串口的时候才能把接受到的串口数据通过ui->textBrowser->insertPlainText(temp);打印在界面上,一直没能解决这个问题,所以只好采用线程+定时实现linux下的Qt串口编程进行设计。
一、安装环境:
系统平台:Ubuntu-,-27-generic,图形界面
二、软件需求及下地地址:
Qt版本 qt-linux-SDK-
注意:此处使用的是qt-linux-SDK-,编译通过了,之后需要把他移植到qt-embedded-linux-opensource-src-,通过qte编译后移植到开发板中,采用的测试开发板为Micro2440,
下载地址:略
三、程序编写过程
程序编程流程:
先新建一个工程空白工程,再建立Ui文件,通过designer进行Ui界面设计,设计完保存,,,,。
1、 Ui文件的设计:
建立Ui_MainWindow主窗口,在窗口上添加三个QPushButton,分别命名为closeButton、writeButton、readButton,再添加一个QTextBrowser显示串口接收数据,保存退出,。
2、线程程序设计:
编写一个线程程序,其不需要进行界面设计,直接实现线程的管理,实现串口的收发工作,其主要程序及说明如下:
1) ,内容如下:
#ifndef THREAD_H
#define THREAD_H
#include
class Thread:public QThread
{
Q_OBJECT
public:
Thread();
char buf[128];
volatile bool stopped;
volatile bool write_rs;
volatile bool read_rs;
protected:
virtu
linux通讯 来自淘豆网m.daumloan.com转载请标明出处.