微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过与 QT 的串行通信发送十六进制数据

如何解决通过与 QT 的串行通信发送十六进制数据

我正在寻找通过串行通信发送十六进制数据的方法搜索了几次并遵循了一些方法,但没有用。 我使用其他向设备发送十六进制数据的软件检查了协议是否正常工作 下面是我的代码

const char data[]={0xAA,0xAA,0x01,0x00,0x0E,0x2D,0x37,0x1D,0x0C,0x10,0x76,0x13}; 
serial->setPortName(("COM8"));
initSerialPort(); // baud rate and etc

if(serial->open(qiodevice::ReadWrite))
{
    qDebug()<<"Port is open!";
    if(serial->isWritable())
    {
        qDebug()<<"Yes,i can write to port!";
       int size = sizeof(data);
       serial->write(data,size);
    }
}

当我使用其他声明如 uint16_t、uchar 时,write 函数无法将参数 1 从 uint16_t(或 uchar)转换为 const char *

我也试过这个表格

QByteArray hex("AAAA0100000E00010000002D371DAAAA0100000E000C100000017613");
QByteArray data = QByteArray::fromHex(hex);

它也没有用

解决方法

您可以仅使用 QByteArray 来执行此操作,例如:

connect(serial,&QSerialPort::readyRead,this,&YourClass::doSomeStuff);

QByteArray arr;

arr += static_cast<char>(0xAA);
arr += static_cast<char>(0x01);

<...>

serial->setPortName("COM8");
initSerialPort(); // baud rate and etc

if(serial->open(QIODevice::ReadWrite) && serial->isWritable())
    serial->write(arr);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。