Qt modbus tcp 下位机发送的是16进制,上位机读取操作命令返回值是乱码,怎么解决?

void My_socket::on_ReadBackText()
{
qint64 DataNum = tcpSocket.bytesAvailable();//获得TCP需要read的字节数
char data[35] = {0};
qint64 num = tcpSocket.read(data, DataNum);
qDebug("返回的数据包有%d位,值为%s",DataNum,data);
if (num <= 0) {
ui.ReceiveWid->appendPlainText(QString::fromLocal8Bit("获取继电器状态失败....."));
}
else {
int DataLen = strlen(data);
const QString string = QString(QLatin1String(data));
ui.ReceiveWid->appendPlainText(string);
}

}

![图片说明](https://img-ask.csdn.net/upload/201908/29/1567070306_881663.jpg)
���ص����ݰ���16λ��ֵΪ�(
非十六进制发送的串接收正常
tcpSocket.bytesAvailable()获取的字符数量正确,
���ص����ݰ���29λ��ֵΪY31X30B3azv1cDA

懂得帮忙给看看,万分感谢!!!!!

https://blog.csdn.net/qq_34359028/article/details/78477148

void My_socket::on_ReadBackText()
{
qint64 DataNum = tcpSocket.bytesAvailable();//获得TCP需要read的字节数
if (DataNum > 0) {

    if (ui.HexDisplay->isChecked() == true) {
        QByteArray num = tcpSocket.readAll();
        QByteArray str1 = num.toHex();
        ui.ReceiveWid->appendPlainText(str1);
        qDebug("%d,%x", DataNum, tcpSocket.readAll());
    }
    else {
        char data[36] = {NULL};
        qint64 num = tcpSocket.read(data, DataNum);//以字符串接收数据
        const QString string = QString(QLatin1String(data));
        ui.ReceiveWid->appendPlainText(string);
    }

}
使用readAll(),直接获取就好了

你把图片发过给我