Qt串口通讯

小王子🤴 2020-08-23 21:47:22 1930
Qt串口通讯

本片文章用来记录qt串口通讯实现代码以及学习过程中遇到的问题。

Qt有串口通讯库,功能用起来还是可以的,所以不需要再去网上下载第三方的串口通讯库使用。

应用程序使用串口库需要在.pro中配置“QT += serialport”,只有加上这个配置串口库才能正常使用。

接下来就开始介绍Qt串口库的使用:

在使用串口的地方添加两个头文件:

#include <QSerialPort> 
#include <QSerialPortInfo>
扫描串口:
void QSerialPortManagement::startScan()
{
    //通过QSerialPortInfo查找可用串口
    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
//串口名
        qDebug () << info.portName();
//设备PID VID
        qDebug () << info.productIdentifier();
        qDebug () << info.vendorIdentifier();

        com_info devInfo;//自定义存放串口信息的结构
        devInfo.name = info.portName();
        devInfo.addr = info.portName().remove(0,3).toUInt();
        devInfo.connectState = 0;

    }
}

打开设备:

void QSerialPortCommunication::devConnect()
{
QSerialPort serial;串口对象
//设置串口名
    serial.setPortName(“COM1”);
//设置停止位
    serial.setStopBits(QSerialPort::OneStop);
  //设置数据位
    serial.setDataBits(QSerialPort::Data8);
//奇偶校验
    serial.setParity(QSerialPort::NoParity);
//流控制
    serial.setFlowControl(QSerialPort::NoFlowControl);
//设置波特率
    serial.setBaudRate(19200);
//打开串口,读写方式打开
    if(!serial.open(QIODevice::ReadWrite))
    {
        QSerialPort::SerialPortError error = serial.error();
        qDebug() << error;
        emit disConnected(port);
        return;
    }

    //DTR、RTS有的设备需要设置,有的设备不需要
    //设置DTR
        serial.setDataTerminalReady(true);
    //设置RTS
        serial.setRequestToSend(true);
}
关闭设备:
void QSerialPortCommunication::devDisConnect()
{
    serial.close();
}
发送数据:
void QSerialPortCommunication::writes(QByteArray dat)
{
    serial.write(dat);
}
接收数据:
连接接收信号槽
QObject::connect(&serial, &QSerialPort::readyRead, this, &QSerialPortCommunication::read,Qt::QueuedConnection);

void QSerialPortCommunication::read()
{
QByteArray buffer = serial.readAll();
qDebug() << buffer;
}

注意:这里要特别注意一下,因为串口的通讯特性,你这里接收的数据不一定是下位机发送的一包数据,所以接收时需要自己去做拼包操作。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
小王子🤴
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区