• 9253阅读
  • 8回复

Qt编写串口通信程序全程图文讲解(三)(原创) [复制链接]

上一主题 下一主题
离线yafei86
 
只看楼主 倒序阅读 楼主  发表于: 2009-10-22
到我的空间查看完整文档:点这里




下面的程序在第一篇文章中所写的程序上进行了一些改进。加入打开和关闭串口,发送数据等功能。

首先,加入了“打开串口”,“关闭串口”“传送数据”三个按钮,加入了一个行编辑框Line Edit。它们的命名如下:

“打开串口”按钮命名为:openMyComBtn

“关闭串口”按钮命名为:closeMyComBtn

“传送数据”按钮命名为:sendMsgBtn

要传送数据的行编辑框命名为:sendMsgLineEdit

界面如下图。



第二步,在“打开串口”按钮上右击,选择Go to slot选项,然后选择clicked()选项,进入它的单击事件槽函数中,将上个程序中在构造函数里写的语句全部剪切到这里。然后加入几句按钮的状态设置语句。如下:

void MainWindow::on_openMyComBtn_clicked()

{

struct PortSettings myComSetting = {BAUD9600,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500};

//定义一个结构体,用来存放串口各个参数

myCom = new Win_QextSerialPort("com1",myComSetting,QextSerialBase::EventDriven);

//定义串口对象,并传递参数,在构造函数里对其进行初始化

myCom ->open(QIODevice::ReadWrite);

//以可读写方式打开串口

connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom()));

//信号和槽函数关联,当串口缓冲区有数据时,进行读串口操作

//



ui->openMyComBtn->setEnabled(false); //打开串口后“打开串口”按钮不可用

ui->closeMyComBtn->setEnabled(true); //打开串口后“关闭串口”按钮可用

ui->sendMsgBtn->setEnabled(true); //打开串口后“发送数据”按钮可用


}






然后在构造函数里也添加几句按钮初始状态设置语句,如下:




MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent), ui(new Ui::MainWindow)

{

ui->setupUi(this);


ui->closeMyComBtn->setEnabled(false); //开始“关闭串口”按钮不可用

ui->sendMsgBtn->setEnabled(false); //开始“发送数据”按钮不可用


}



更改后程序如下图所示:


这时运行程序,效果如下:



第三步,按上面的方法进入“关闭串口”按钮和“发送数据”按钮的单击事件的槽函数,更改如下。

void MainWindow::on_closeMyComBtn_clicked() //关闭串口槽函数

{

myCom->close(); //关闭串口,该函数在win_qextserialport.cpp文件中定义

ui->openMyComBtn->setEnabled(true); //关闭串口后“打开串口”按钮可用

ui->closeMyComBtn->setEnabled(false); //关闭串口后“关闭串口”按钮不可用

ui->sendMsgBtn->setEnabled(false); //关闭串口后“发送数据”按钮不可用


}





void MainWindow::on_sendMsgBtn_clicked() //发送数据槽函数

{

myCom->write(ui->sendMsgLineEdit->text().toAscii());

//以ASCII码形式将行编辑框中的数据写入串口


}



最终效果如下:

(将数据x发送给单片机,单片机返回you send message is : x)



在下一篇文章中将对程序更进一步的完善

欢迎访问我们的网站:www.yafeilinux.com
离线wato
只看该作者 1楼 发表于: 2009-10-22
顶  楼主好有耐心
离线yafei86
只看该作者 2楼 发表于: 2009-10-22
引用第1楼wato于2009-10-22 16:44发表的  :
顶  楼主好有耐心

哈,为了让初学者更容易明白嘛
欢迎访问我们的网站:www.yafeilinux.com
离线tzl20082008
只看该作者 3楼 发表于: 2010-03-20
哈,为了让初学者更容易明白嘛
离线lishiyong110
只看该作者 4楼 发表于: 2010-03-20
很不错 很容易让你上手
静下心来学习
离线linnqian
只看该作者 5楼 发表于: 2010-04-21
请问 setEnabled()函数在哪写的啊
离线5373119

只看该作者 6楼 发表于: 2012-08-07
楼主  you are  smart
离线5373119

只看该作者 7楼 发表于: 2012-08-07
离线fjb2080

只看该作者 8楼 发表于: 2012-08-09
楼主,你的空间访问不了,

//===========================
百度提示:
很抱歉,您要访问的页面不存在。
//=============================
快速回复
限100 字节
 
上一个 下一个