用widget类新建一个窗口
其中的TextBrowser 部件用来显示接收到的数据,
Line Edit部件用来输入要发送的数据,
Push Button按钮用来发送数据。我们保持各部件的属性为默认值即可。
引入第三方的类 qextserialport-1.2win-alpha.zip
加入
qextserialbase.cpp和qextserialbase.h以及win_qextserialport.cpp和win_qextserialport.h
myCom.h
#ifndef MYCOM_H
#define MYCOM_H
#include <QWidget>
#include "win_qextserialport.h"
namespace Ui {
classmyCom;
}
class myCom : public QWidget
{
Q_OBJECT
public:
explicitmyCom(QWidget *parent = 0);
~myCom();
private:
Ui::myCom*ui;
Win_QextSerialPort *myCom1;
private slots:
voidon_pushButton_clicked(); //”发送数据”按钮槽函数
voidreadMyCom(); //读取串口
};
#endif // MYCOM_H
myCom.cpp
#include "mycom.h"
#include "ui_mycom.h"
myCom::myCom(QWidget *parent) :
QWidget(parent),
ui(newUi::myCom)
{
ui->setupUi(this);
myCom1 =new Win_QextSerialPort("COM1",QextSerialBase::EventDriven);
//定义串口对象,指定串口名和查询模式,这里使用事件驱动EventDriven
myCom1->open(QIODevice::ReadWrite);
//以读写方式打开串口
myCom1->setBaudRate(BAUD9600);
//波特率设置,我们设置为9600
myCom1->setDataBits(DATA_8);
//数据位设置,我们设置为8位数据位
myCom1->setParity(PAR_NONE);
//奇偶校验设置,我们设置为无校验
myCom1->setStopBits(STOP_1);
//停止位设置,我们设置为1位停止位
myCom1->setFlowControl(FLOW_OFF);
//数据流控制设置,我们设置为无数据流控制
myCom1->setTimeout(500);
//延时设置,我们设置为延时500ms,这个在Windows下好像不起作用
connect(myCom1,SIGNAL(readyRead()),this,SLOT(readMyCom()));
//信号和槽函数关联,当串口缓冲区有数据时,进行读串口操作
}
myCom::~myCom()
{
delete ui;
}
void myCom::readMyCom() //读取串口数据并显示出来
{
QByteArraytemp = myCom1->readAll();
//读取串口缓冲区的所有数据给临时变量temp
ui->textBrowser->insertPlainText(temp);
//将串口的数据显示在窗口的文本浏览器中
}
void myCom::on_pushButton_clicked() //发送数据
{
myCom1->write(ui->lineEdit->text().toAscii());
//以ASCII码形式将数据写入串口
}
main.cpp
#include <QtGui/QApplication>
#include "mycom.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
myCom w;
w.show();
returna.exec();
}