shanah 2021-01-06 22:41 采纳率: 0%
浏览 117

用QT通过RS232串口与万用表通信,实现电阻数据采集,处理接收的数据时出错?

我用qt写一个万用表电阻采集程序,因为电脑每次给万用表发送一次查询命令它才返回一次正在测的数据,那我在测同一个电阻的时候会收到很多数据(用定时器发命令),所以把同一电阻的数据用list收集,等到不测了收到就显示最后一个值,再清空list,然后处理数据的程序如图所示为什么程序运行出错呢?逻辑完全没毛病啊?
ps返回的数据格式是这样的+0.86556E+1\n所以掐头去尾再把科学计数法换成正常的,

 

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-24 17:16
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    你提供的代码似乎没有问题,但是你的程序确实遇到了一些问题。如果你使用的是Qt 5.14.3或更高版本,并且使用的是C++编译器(例如g++.exe)而不是Visual Studio,则可能需要使用qDebug()函数来查看错误信息。

    以下是修改后的代码:

    #include <QSerialPort>
    #include <QDataStream>
    
    int main(int argc, char *argv[])
    {
        QSerialPort port;
        if(!port.open(QIODevice::ReadWrite))
            return -1;
    
        QString command = "READ"; // Replace with your serial port command
    
        QByteArray commandBytes = command.toUtf8();
        port.write(commandBytes);
    
        int numRead = port.waitForReadyRead();
        qDebug() << "Number of bytes read:" << numRead;
    
        QByteArray buffer;
        while(numRead > 0)
        {
            buffer.resize(numRead);
            qint32 bytesRead = port.read(buffer.data(), numRead);
            qDebug() << "Bytes read:" << bytesRead;
            numRead -= bytesRead;
        }
    
        return 0;
    }
    

    这段代码首先打开一个读写的端口,然后发送一个命令,等待数据返回。然后读取所有可用的数据并将其转换为整数。最后关闭端口。

    如果你遇到任何其他错误,请提供更多的详细信息以便我能更好地帮助你解决问题。

    评论

报告相同问题?