【发布时间】:2014-08-22 08:55:54
【问题描述】:
serial.readall 在 5.3.1 中返回一个空缓冲区,但同一段代码在 5.3.0 中工作。有人遇到过同样的问题吗?有什么解决方法吗?
我在 MSVC 2010 windows 7 中使用 Qt。我从 Qt 下载页面下载了“Qt 5.3.1 for Windows 32-bit (VS 2010, OpenGL, 537 MB)”。
我的代码:
portname=ui->lineEdit->text();
serial.setPortName(portname);
if(serial.open(QIODevice::ReadWrite))
{
ui->pushButton_5->setText("Device Connected");
ui->pushButton_5->setStyleSheet("background : yellow");
if(!serial.setBaudRate((QSerialPort::Baud115200),QSerialPort::AllDirections))
qDebug()<<serial.errorString();
if(!serial.setDataBits(QSerialPort::Data8))
qDebug()<<serial.errorString();
if(!serial.setParity(QSerialPort::NoParity))
qDebug()<<serial.errorString();
if(!serial.setStopBits(QSerialPort::OneStop))
qDebug()<<serial.errorString();
if(!serial.setFlowControl(QSerialPort::HardwareControl))
qDebug()<<serial.errorString();
}
else
{
qDebug()<<"Serial port not opened. Error: "<<serial.errorString();
QTest::qSleep(2000);
exit(0);
}
serial.write(outbuff, l);
rsp=(serial.readAll()).toHex();
serial.readAll 返回一个空缓冲区。当从不同的工具发送相同的输入时,我会从相同的硬件得到响应。
【问题讨论】:
-
您能否提供一些代码,以便我们可以轻松准确地重现您的场景?
-
我在下面发布了一个答案...请检查一下并告诉我它是否能解决您的问题
标签: qt qtserialport