当前位置: 首页 > news >正文

郑州建设信息网简介关键词排名优化公司哪家强

郑州建设信息网简介,关键词排名优化公司哪家强,html5做测试网站的源代码,广州免费建站平台目录 1.1.1 添加库,添加类 1.1.2 定义串口 1.1.3 搜索串口 1.1.4 设置和打开串口 1.1.5 读取数据 1.1.6 发送数据 1.1.7 关闭串口 1.1.1 添加库,添加类 首先,QT5 是自带 QSerialPort(Qt5 封装的串口类)这个类的,使用时…

目录

1.1.1  添加库,添加类

1.1.2 定义串口

1.1.3  搜索串口

1.1.4 设置和打开串口

1.1.5 读取数据

1.1.6 发送数据

1.1.7 关闭串口 

 

1.1.1  添加库,添加类

首先,QT5 是自带 QSerialPort(Qt5 封装的串口类)这个类的,使用时需要在 pro 文件里面添加一行:

QT += serialport

加入下面两个文件:

#include <QSerialPort>
#include <QSerialPortInfo>

QT5 中,串口通信是借助一个 QSerialPort 的对象来实现的,在设置 QSerialPort 对象对串口的名称、波特率、 数据位、校验位、停止位等参数后,方能对串口进行读写。下面,我总结了一下借助 QSerailPort 对串口进行设 置、打开、读、写和关闭的过程。

1.1.2 定义串口

QSerialPort *uart;
uart = new QSerialPort(this);

1.1.3  搜索串口

//availablePorts 是返回当前系统所有能用的串口,返回值是一个容器//QList 是容器类,在此的容器里边装的是 QSerialPortInfoQList<QSerialPortInfo> info = QSerialPortInfo::availablePorts();for(int i=0; i<info.size(); i++){ui->uartNameCombo->addItem(info[i].portName()); //addItem 加入数据到下拉
菜单里}

1.1.4 设置和打开串口

void UiMain::on_openBtn_clicked()
{QString uartName;QSerialPort::BaudRate baudRate;QSerialPort::DataBits dataBit;QSerialPort::StopBits stopBit;QSerialPort::Parity parityBit;//currentText 是获取当前选中的名字uartName = ui->uartNameCombo->currentText();//波特率if(ui->baudrateCombo->currentText() == "9600"){baudRate = QSerialPort::Baud9600;
}else if(ui->baudrateCombo->currentText() == "115200"){baudRate = QSerialPort::Baud115200;}//数据位if(ui->databitCombo->currentText() == "5"){dataBit = QSerialPort::Data5;}else if(ui->databitCombo->currentText() == "6"){dataBit = QSerialPort::Data6;}else if(ui->databitCombo->currentText() == "7"){dataBit = QSerialPort::Data7;}else if(ui->databitCombo->currentText() == "8"){dataBit = QSerialPort::Data8;}//停止位if(ui->stopbitCombo->currentText() == "1"){stopBit = QSerialPort::OneStop;}else if(ui->stopbitCombo->currentText() == "1.5"){stopBit = QSerialPort::OneAndHalfStop;}else if(ui->stopbitCombo->currentText() == "2"){stopBit = QSerialPort::TwoStop;}//校验位if(ui->parityCombo->currentIndex() == 0){parityBit = QSerialPort::OddParity;}else if(ui->parityCombo->currentIndex() == 1){parityBit = QSerialPort::EvenParity;}else if(ui->parityCombo->currentIndex() == 2){parityBit = QSerialPort::NoParity;}//把参数设置到 uart 里uart->setPortName(uartName);uart->setBaudRate(baudRate);uart->setDataBits(dataBit);uart->setStopBits(stopBit);uart->setParity(parityBit);if(!uart->open(QIODevice::ReadWrite)){QMessageBox::critical(this, "fbi warnning", "打开失败");}else{QMessageBox::information(this, "提示", "打开成功");}

1.1.5 读取数据

串口在收到数据后,会将数据存入接收缓冲区。此时,我们可以通过 readAll()函数将接收缓冲区的数据读出 来。当串口的接收缓冲区有数据时,QSerilaPort 对象会发出一个 readyRead()的信号。因此,我们可以编写一个槽 函数来读数据。

connect(uart, SIGNAL(readyRead()), this, SLOT(slotUartReadyRead()));

 QString uartBuf;
//假如没收完断截的数据,就会一直触发槽函数,定时器会被一直重置,不会超时
//当断截数据发完了,定时器就没人重启了,就会超时,这个时候收到的数据就是完整的数据
//也就是说收到一个字节后,20ms 内没有再次收到数据,默认为一帧数据接收完成
void UiMain::slotUartReadyRead()
{timer->start(20); //重启定时器 20ms
uartBuf.append(uart->readAll()); //追加写入到 uartBuf 里
}//超时了,说明数据完成一帧数据
void UiMain::slotTimeout()
{timer->stop();QByteArray ba;ba = uartBuf.toUtf8();//QString(nRecv)不是强制转换//QString(nRecv)是会触发 QString 的构造函数,当然 QString(int)这种构造函数是没有
的,会报错
ui->recvEdit->appendPlainText(ba);
}

1.1.6 发送数据

使用write函数便可以把字节数组中的字节发送出去。

uart->write(buf.toUtf8()); //QString 转 char *的方法: buf.toLocal8Bit().data()

1.1.7 关闭串口 

串口不用时,可通过 close()函数将其关闭。

uart->close();

http://www.tj-hxxt.cn/news/4081.html

相关文章:

  • 淘宝上做网站SEO靠谱吗宝鸡seo
  • 定制网站开发介绍图新网站百度收录
  • h5如何做网站免费个人网站建站申请
  • 做网站客户怎么找西安网站优化培训
  • 贵阳网站开发哪家好网上销售
  • 网站建设如何账务处理网络营销是什么工作
  • 东莞市人民政府门户网站整合营销传播的明显特征是
  • 摄影个人网站模板楼市最新消息
  • 怎样做公司的网站首页百度广告怎么收费
  • 全国高风险和中风险地区名单吴江seo网站优化软件
  • 做外贸网站推广排名公式
  • 中山网站关键词排名seo怎么优化排名
  • 交换机做网站如何让网站被百度收录
  • 大良网站建设价格交换链接是什么意思
  • 谁能给我一个网站谢谢网站为什么要做seo
  • 如何把jQuery特效做网站背景品牌推广战略
  • 网站模版建站企业培训课程ppt
  • 网站免费正能量直接进入浏览器下载安装免费公司网站建站
  • 洛阳做网站自己做一个网站需要多少钱
  • 建设公司网站靠谱吗百度官方电话24小时
  • 沈阳商城网站建设外链推广平台
  • 带分销功能的小程序秦皇岛seo排名
  • 蓝月wordpress广丰网站seo
  • 北京建网站找哪个公司提高seo关键词排名
  • 官渡网站设计制作百度seo排名推广
  • 不能安装wordpress学seo优化
  • 宁波网站建设seo免费课程视频
  • 教育类企业网站营销推广策划方案范文
  • 站内推广策略广西seo
  • 个人网站备案 服务内容怎么写个人发布信息的免费平台