Qt 串口编程

Qt作为跨平台的GUI类库,它为我们提供了几乎能够想象得到的所有功能。但Qt没有为我们提供串口操作类,一般都是使用第三方提供的qextserialport类,我们可以在: http://sourceforge.net/projects/qextserialport/files/ 下载。

    

    Windows下,我们只需要使用以下文件:qextserialbase.cpp、qextserialbase.h、qextserialport.cpp、qextserialport.h、win_qextserialport.cpp、win_qextserialport.h

    Linux下,我们需要使用以下文件:qextserialbase.cpp、qextserialbase.h、qextserialport.cpp、qextserialport.h、posix_qextserialport.cpp、posix_qextserialport.h

    用粉色标示的两个代码文件在不同的操作系统下有所不同!

    下面简单描述一下该类是如何使用的。

    一、创建Qt工程,加入文件,如图

 

   二、dialog.h、dialog.cpp为QDialog的派生类,在该类声明中做如下处理

dialog.h

... ...  

#include  "win_qextserialport.h"

#include "qextserialbase.h"
#include "qextserialport.h"
... ...
class Dialog : public QDialog
{
    Q_OBJECT
public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
private:
    Ui::Dialog *ui;
    Win_QextSerialPort *myWinCom;      // 定义串口操作对象指针
    struct PortSettings myComSettings; // 定义串口配置信息结构体变量
    ... ...
    int SendCounter,ReceiveCounter;
    ... ...
    void getComSettings();             // 串口配置设定函数,串口配置内容存放在myComSettings中
    ... ...
private slots:
    void readMyWinCom();               //定义串口数据读处理过程(槽) 
    void opencloseDeal();              //串口打开关闭操作
    ... ...
};
 
dialog.cpp
 
... ...
void Dialog::readMyWinCom()
{
    this->ReceiveCounter += this->myWinCom->size();//获取串口缓冲区中数据长度
    QByteArray temp = this->myWinCom->readAll();   //读取串口数据
    ... ...
}
void Dialog::opencloseDeal()
{
    ... ...
    this->getComSettings();
    this->myWinCom = new Win_QextSerialPort(ui->comComboBox->currentText(),
                                                myComSettings,QextSerialBase::EventDriven);
    if (this->myWinCom->open(QIODevice::ReadWrite)== true)
    {
        this->connect(myWinCom,SIGNAL(readyRead()),this,SLOT(readMyWinCom()));
        ... ...
    }
    ... ...   
}
... ...
void Dialog::getComSettings()
{
    this->myComSettings.FlowControl = FLOW_OFF;
    this->myComSettings.Timeout_Millisec = 500;
    ... ...
}
... ...
 
在Qt中,串口的使用过程大概如上,根据上述过程,本人实现了串口调试助手软件,该软件可以进行16进制数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值