做一个最简单的上位机

\

\我安装的是QT5.8,QTcreater 4.1.0。由于在官网下载比较麻烦,所以可以再这个镜像网站上下到适合自己版本的QT。

http://mirror.bit.edu.cn/qtproject/archive/qt/5.1/5.1.0/。

可能用到的软件1.串口调试助手 2虚拟串口。

 

然后先制作一个最简单可以查看接收数据的上位机

http://blog.csdn.net/u014695839/article/details/50611549  我参考了这个博主做的过程。

几个可以参考的帖子

https://blog.csdn.net/lovebird_27/article/details/49515881

https://blog.csdn.net/wamani/article/details/52849043

串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

在低版本QT中是没有QSerialPort的串口类的,制作上位机会复杂许多。QT5是自带QSerialPort这个类的,但是在使用时,我们需要在.Pro文件中添加一行才可以使用。在之后Debug过程中如果会再报错的话,再添加到.pro文件中

QT+= core gui//使用GUI界面
QT+= serialport//使用自带串口类

 

打开界面文件下的.ui文件可以对我们上位机的界面进行编辑

从左侧工具栏中选择要用的工具拖到

添加textEdit 作为数据接收显示框,combobox作为串口选择框 pushubutton作为打开串口按钮,这样最基本的界面就完成了!

  

双击combox对串口进行编辑,右键点击 open port 按钮 转到槽,可以对单击按钮后的事件进行编辑。

接下来就是函数部分

在QT中我们用到了哪个函数需要在.h文件开始处声明,自定义函数以及自定义变量 都需要在头文件.h文件中事先声明,在这里声明的变量为全局变量。

首先在文件开始处添加   

 
 
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>

 

QSerialPort:提供访问串口的功能 

QSerialPortInfo:提供系统中存在的串口的信息

 

1.设置串口

对串口设置如下

 
void weite::on_openportbutton_clicked()
{   if(ui->portnamebox->isEnabled())
    {
        ui->openportbutton->setText("ClosePort");		//按下“OpenPort”后,按键显示为“ClosePort”
        ui->portnamebox->setDisabled(true);	//按下“OpenPort”后,禁止再修改COM口
        serial1.setPortName(ui->portnamebox->currentText());	//设置COM口
        serial1.setBaudRate(QSerialPort::Baud115200,QSerialPort::AllDirections);//设置波特率和读写方向
        serial1.open(QIODevice::ReadWrite);
      //  connect(&serial1,SIGNAL(readyRead()),this,SLOT(read_com()));	//把串口的readyRead()信号绑定到read_Com()这个槽函数上

    }
    else
    {
        ui->openportbutton->setText("OpenPort");		//按下“ClosePort”后,按键显示为“OpenPort”
        ui->portnamebox->setEnabled(true);		//按下“ClosePort”后,COM口可被修改
        serial1.close();					//关串口
    }
}

2.接收数据

当串口收到数据并且接收完毕后,会发出一个readyRead()的信号,因此只需要编写一个槽函数read_com(),设置信号槽,并在槽函数中使用readAll()把收到的数据读到requestData中。

3.数据显示

这里我们用了自带的append 函数来显示收到的数据 ,使用toHex()函数来将收到的8位ascii码 转换为16进制字符型显示

(在使用QT过程中在使用某个函数前,可以上网搜索其功能,QT中也自带帮助功能,按下F1可以查看某个函数功能及示例)

2和3部分代码如下

 

void weite::read_com()
{
    QByteArray requestData;
    requestData= serial1.readAll();
// qDebug()<<"---hsy--test--showtable---1";
  QString buf ;
 
   // requestData.clear();
   ui->textEdit->append(requestData.toHex());
}

 

 

到这里我们最简单的上位机制作便完成了,可以连接上不需要启动信息的(串口设备)传感器来测试我们上位机效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值