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

网站建设加盟代理苏州建网站皆去苏州聚尚网络

网站建设加盟代理,苏州建网站皆去苏州聚尚网络,网站建设需要微信账号和密码,wordpress4.9+多站点文章目录 Qt QSerialPort串口编程Qt Serial Port模块简述1.QSerialPortInfo类1.1示例用法 2.QSerialPort类2.1设置串口参数2.2打开串口2.3数据读写2.4关闭串口 3.串口编程基本流程3.1 简单实例 Qt QSerialPort串口编程 Qt 框架的Qt Serial Port 模块提供了访问串口的基本功能Qt QSerialPort串口编程Qt Serial Port模块简述1.QSerialPortInfo类1.1示例用法 2.QSerialPort类2.1设置串口参数2.2打开串口2.3数据读写2.4关闭串口 3.串口编程基本流程3.1 简单实例 Qt QSerialPort串口编程 Qt 框架的Qt Serial Port 模块提供了访问串口的基本功能包括串口通信参数配置和数据读写使用 Qt Serial Port 模块就可以很方便地编写具有串口通信功能的应用程序。 Qt Serial Port模块简述 Qt Serial Port 模块用于串口通信编程要在一个项目中使用 Qt Serial Port 模块需要在项目配置文件中加入一行语句QT serialport Qt Serial Port 模块中只包含有两个类QSerialPortInfo 和 QSerialPort。 1.QSerialPortInfo类 QSerialPortInfo 类有两个静态函数可以用于获取系统中可用的串口列表以及系统支持的串口通信波特率列表这两个静态函数定义如下 QListQSerialPortInfo QSerialPortInfo::availablePorts() //获取系统中的串口列表 QListqint32 QSerialPortInfo::standardBaudRates() //获取目标平台支持的可用标准波特率列表 静态函数 availablePorts()返回一个 QSerialPortInfo对象的列表列表中的每个 QSerialPortInfo对象代表一个串行端口可以查询端口名称、系统位置、描述、制造商以及一些其他的硬件信息。QSerialPortInfo类也可以用作QSerialPort类的setPort方法的输入参数。 1.1示例用法 示例代码枚举所有可用的串行端口并将其参数打印到控制台 const auto serialPortInfos QSerialPortInfo::availablePorts();for (const QSerialPortInfo portInfo : serialPortInfos) {qDebug() \n Port: portInfo.portName() \n Location: portInfo.systemLocation() \n Description: portInfo.description() \n Manufacturer: portInfo.manufacturer() \n Serial number: portInfo.serialNumber() \n Vendor Identifier: (portInfo.hasVendorIdentifier()? QByteArray::number(portInfo.vendorIdentifier(), 16): QByteArray()) \n Product Identifier: (portInfo.hasProductIdentifier()? QByteArray::number(portInfo.productIdentifier(), 16): QByteArray());}2.QSerialPort类 QSerialPort是QT框架提供的一个用来操作串口设备接口的类它封装了操作系统底层实现的串口API同时提供了事件处理机制和信号槽机制可以方便地读写串口数据和处理串口事件。QSerialPort 的父类是 QIODevice所以它属于 I/O 设备类。 2.1设置串口参数 串口通信参数有波特率、数据位个数、停止位个数、奇偶校验位、流控制等QSerialPort 类有如下几个函数用于设置和返回串口通信参数。 bool setBaudRate(qint32 baudRate, QSerialPort::Directions directions AllDirections) //设置波特率 qint32 baudRate(QSerialPort::Directions directions AllDirections)//获取波特率 bool setDataBits(QSerialPort::DataBits dataBits)//设置数据位个数 QSerialPort::DataBits dataBits() //获取数据位个数 bool setStopBits(QSerialPort::StopBits stopBits)//设置停止位个数 QSerialPort::StopBits stopBits() //获取停止位个数 bool setParity(QSerialPort::Parity parity)//设置奇偶校验 QSerialPort::Parity parity() //获取奇偶校验 bool setFlowControl(QSerialPort::FlowControl flowCongrol) //设置流控制 QSerialPort::FlowControl flowCongrol() //获取流控制 串口波特率枚举类型QSerialPort::BaudRate下面列出了最常用的串口波特率 常量 值 描述 QSerialPort::Baud1200 1200 1200 baud. QSerialPort::Baud2400 2400 2400 baud. QSerialPort::Baud4800 4800 4800 baud. QSerialPort::Baud9600 9600 9600 baud. QSerialPort::Baud19200 19200 19200 baud. QSerialPort::Baud38400 38400 38400 baud. QSerialPort::Baud57600 57600 57600 baud. QSerialPort::Baud115200 115200 115200 baud. 数据位枚举类型QSerialPort::DataBits 奇偶校验位枚举类型QSerialPort::Parity 有以下几种枚举常量。 QSerialPort::NoParity对应数值 0无校验位。 QSerialPort::EvenParity对应数值 2偶校验。 QSerialPort::OddParity对应数值 3奇校验 QSerialPort::SpaceParity对应数值 4偶校验。 QSerialPort:MarkParity对应数值 5奇校验。 停止位枚举类型 QSerialPort::StopBits 有以下几种枚举常量。 QSerialPort::OneStop对应数值 1表示一个停止位。 QSerialPort::TwoStop对应数值 2表示两个停止位。 QSerialPort::OneAndHalfStop对应数值 3表示 1.5 个停止位。 串口通信参数一般是 8 个数据位1 个停止位无奇偶校验位。打开串口之前需要设置好这些串口通信参数。 void setPort(const QSerialPortInfo serialPortInfo) //设置串口 void setPortName(const QString name) //设置串口名称 2.2打开串口 设置串口通信参数后就可以打开串口进行数据读写。 bool open(QIODeviceBase::OpenMode mode) //打开串口 2.3数据读写 打开一个串口后就可以使用 QSerialPort 的各种读写函数来读写串口的数据。串口数据读写有阻塞式和非阻塞式两种方式非阻塞式又被称为异步方式。在 GUI 程序里一般使用异步方式在非 GUI 程序或单独的线程里一般使用阻塞式。 异步方式读写数据相关的函数有如下这些: qint64 bytesAvailable() //返回缓冲区中等待读取的数据字节数 QByteArray read(qint64 maxSize) //读取 maxSize 个字节的数据 QByteArray readAll() //读取缓冲区内的全部数据 bool canReadLine() //是否有可以按行读取的数据 //读取一行数据最多读取 maxSize 个字节行数据以换行符结束 QByteArray readLine(qint64 maxSize 0) //将缓冲区的数据写入串口最多写入 maxSize 个字节 qint64 write(const char *data, qint64 maxSize) //将缓冲区 data 的数据写入串口以\0 结束一般用于写字符串数据 qint64 write(const char *data) qint64 write(const QByteArray data) //将字节数组 data 的内容写入串口 使用异步方式读写数据时QSerialPort 有两个信号可表示缓冲区的数据变化。 void readyRead() //接收缓冲区有待读取的数据时此信号被发射 void bytesWritten(qint64 bytes) //当发送缓冲区内的一批数据写入串口后此信号被发射 QSerialPort 还有两个阻塞式的等待函数定义如下 bool waitForBytesWritten(int msecs 30000) //最多等待 msecs ms直到串口数据发送结束 bool waitForReadyRead(int msecs 30000) //最多等待 msecs ms直到串口接收到一批数据 例如运行 waitForReadyRead()时将阻塞等待最多 30000ms直到 QSerialPort 的接收缓冲区里有新的可以读取的数据且 readyRead()信号被发射后函数 waitForReadyRead()才会退出运行后续的代码。在运行 waitForReadyRead()时应用程序的事件循环无法处理窗口事件所以可能会导致界面无响应的情况。所以一般在非 GUI 程序或独立的读写串口数据的线程里才使用这两个阻塞式函数 2.4关闭串口 不再需要进行串口通信时要关闭串口。相关函数定义如下 void close() //关闭串口 3.串口编程基本流程 添加模块QT serialport; 声明变量QSerialPort *serialPort; 创建类实例 serialPort new QSerialPort(); 设置串口信息和通讯参数 打开串口 serialPort-open(QIODevice::ReadWrite); 发送和接收数据这里可以开线程进行数据发送和接收 关闭串口serialPort-close() QSerialPort(); 设置串口信息和通讯参数 打开串口 serialPort-open(QIODevice::ReadWrite); 发送和接收数据这里可以开线程进行数据发送和接收 关闭串口serialPort-close() 3.1 简单实例 以下是一个简单的例子展示了如何使用QSerialPort类发送和接收数据。 首先确保你的.pro文件中包含了serialport模块 QT serialport然后在你的代码中你可以这样使用QSerialPort #include QSerialPort #include QSerialPortInfo// 创建一个QSerialPort对象 QSerialPort *serialPort new QSerialPort(this);// 检测可用的串口并设置 foreach (const QSerialPortInfo info, QSerialPortInfo::availablePorts()) {if (info.description() YourPortName) { // 替换为你的串口名称serialPort-setPort(info);break;} }// 设置串口参数例如波特率、数据位、停止位和奇偶校验 serialPort-setBaudRate(QSerialPort::Baud9600); serialPort-setDataBits(QSerialPort::Data8); serialPort-setStopBits(QSerialPort::OneStop); serialPort-setParity(QSerialPort::NoParity);// 打开串口 if (!serialPort-open(QIODevice::ReadWrite)) {qDebug() Error opening serial port;return; }// 发送数据 serialPort-write(Hello Serial Port!\n);// 读取数据 while (serialPort-waitForReadyRead(1000)) { // 等待1秒QByteArray data serialPort-readAll();// 处理接收到的数据qDebug() Received: data; }// 关闭串口 serialPort-close();确保你的硬件串口设备已经连接并且可用替换YourPortName为实际的串口名称。波特率、数据位、停止位和奇偶校验参数应根据你的硬件设备进行相应设置。 这个例子展示了如何打开串口、设置串口参数、发送数据、读取数据以及关闭串口。在实际应用中你可能需要使用信号和槽来处理数据的异步读写。
http://www.hkea.cn/news/14365379/

相关文章:

  • 快乐建站网软件公司都是帮别人做网站么
  • php手机网站制作域名注册好如何网站建设
  • 营销型网站建设的优缺点企业展厅设计公司100%正品保障
  • 用商城系统做教育网站wordpress 主题 修改
  • 怎么给网站做外链万网创始人
  • 崇信县门户网站数据分析师考试科目
  • 百度免费做网站广州免费公司注册
  • 只做移动端的网站宁波建工
  • 网站开发前端规范石嘴山网站定制开发建设
  • 手机进入网站自动识别查看网站外链代码
  • 光明新区住房和建设局 官方网站住房和城乡建设部网站唐山
  • 北京微信网站建设电话咨询建设网站怎么设置网站页面大小
  • 卖文具做网站好还是做电商好北京建站
  • 制作网站得多少钱外贸仿牌网站
  • 长沙口碑好网站建设企业信用信息查询公示系统浙江
  • 高端网站开发平台住房和建设部执业资格注册中心网站
  • 福永做网站的公司p2p网站开发价格
  • 东莞市镇街建设项目监理招标网站wordpress接入微信支付宝
  • 聊城集团网站建设报价天猫网站建设目的
  • 蚂蚁建站wordpress子目录无法访问后台
  • 上海网站建设在线西安建设工程中心交易网站
  • 一个空间放几个网站杭州网站设计网站
  • 虚拟服务器怎样做网站郑州做网站企业汉狮
  • 网站推广文章虚拟机上做钓鱼网站
  • 国外视频模板网站e网站开始怎么做的
  • 网站用什么主机做网站怎么切片
  • 网站开发个人所得税做网站建设需要
  • 网站搜索引擎友好性网级移动营销app下载
  • 专门为网站建设服务的公司河北交通建设投资集团公司网站
  • 用dw做的网页如何上传到网站语言文字建设网站