关于QT固定数组的问题

最近在做一个小项目,使用串口进行数据的收发,现在卡在了最开始数据的发送问题上:
现在有一个55个字节的十六进制数据,(eg:55 AA 37 40 0C 11 30 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 AA 55 ),我需要把这数据通过串口发出去:port->write(byte)
现在的问题是字节较长,使用串口发数据时时间久会出现堵塞问题,因此考虑了多线程问题,就像把这些数据放在子线程中,因为不想写成byte[0]=ox55;这样的形式进行挨个赋值,所以考虑到了数组,但是这些数据是固定的,对于QVector容器上也需要挨个赋值,就很麻烦,所以各位朋友有没有别的方法可以定义这些数据,并能不堵塞长久使用,界面不会出现假si的情况。

你可以将十六进制数据先转换为一个字节数组,然后将该字节数组直接写入串口,这样可以避免使用循环挨个赋值的方法,也可以减少堵塞时间,提高传输效率。

以下是一个简单的示例代码,展示了如何将十六进制数据转换为字节数组并写入串口:

// 十六进制数据字符串
std::string hex_data = "55AA37400C1130000000010000000000000000000000000000000000000000000000000000000000AA55";

// 将十六进制字符串转换为字节数组
std::vector<uint8_t> byte_array;
for (std::size_t i = 0; i < hex_data.length(); i += 2) {
    std::string byte_str = hex_data.substr(i, 2);
    uint8_t byte = std::stoi(byte_str, nullptr, 16);
    byte_array.push_back(byte);
}

// 将字节数组写入串口
port->write(byte_array.data(), byte_array.size());

在这个示例代码中,首先定义了一个包含十六进制数据的字符串hex_data。然后使用循环将该字符串转换为一个字节数组byte_array,其中std::stoi函数可以将十六进制字符串转换为十进制数字,uint8_t表示无符号8位整型。

最后使用串口的write函数将字节数组写入串口。该函数的第一个参数是指向字节数组数据的指针,第二个参数是字节数组的长度。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^