QT串口发送错误

调式信息

Invalid parameter passed to C runtime function.

Invalid parameter passed to C runtime function.

QObject: Cannot create children for a parent that is in a different thread.

(Parent is QSerialPort(0x17c28fd0), parent's thread is QThread(0x638270), current thread is QThread(0x17bf9bb0)QObject::startTimer: Timers can only be used with threads started with QThread


 原因是我用std::thread创的线程里面又调用了write,timer等线程,write是异步的,用定时器解决周期发送问题

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Qt串口发送数据可以按照以下步骤进行操作: 1. 创建QSerialPort对象并设置参数,如串口号、波特率、数据位、校验位、停止位等。 ```cpp QSerialPort serial; serial.setPortName("COM1"); // 设置串口号 serial.setBaudRate(QSerialPort::Baud115200); // 设置波特率 serial.setDataBits(QSerialPort::Data8); // 设置数据位 serial.setParity(QSerialPort::NoParity); // 设置校验位 serial.setStopBits(QSerialPort::OneStop); // 设置停止位 ``` 2. 打开串口。 ```cpp serial.open(QIODevice::ReadWrite); ``` 3. 准备要发送的数据,将其转换为QByteArray类型。 ```cpp QString str = "Hello, world!"; QByteArray byteData = str.toUtf8(); ``` 4. 发送数据。 ```cpp serial.write(byteData); ``` 5. 关闭串口。 ```cpp serial.close(); ``` 完整的串口发送代码如下: ```cpp QSerialPort serial; serial.setPortName("COM1"); // 设置串口号 serial.setBaudRate(QSerialPort::Baud115200); // 设置波特率 serial.setDataBits(QSerialPort::Data8); // 设置数据位 serial.setParity(QSerialPort::NoParity); // 设置校验位 serial.setStopBits(QSerialPort::OneStop); // 设置停止位 if (serial.open(QIODevice::ReadWrite)) { // 打开串口 QString str = "Hello, world!"; QByteArray byteData = str.toUtf8(); serial.write(byteData); // 发送数据 serial.close(); // 关闭串口 } ``` 需要注意的是,串口通信可能存在一些问题,如串口号不正确、串口被占用、数据传输错误等。在实际使用中需要注意这些问题,并做好相关的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值