【发布时间】:2013-09-20 20:31:01
【问题描述】:
我有以下代码:
QSerialPort arduPort("COM5");
arduPort.setBaudRate(QSerialPort::Baud9600);
arduPort.setDataBits(QSerialPort::Data8);
arduPort.setParity(QSerialPort::NoParity);
arduPort.setStopBits(QSerialPort::OneStop);
arduPort.setFlowControl(QSerialPort::NoFlowControl);
arduPort.open(QSerialPort::ReadWrite);
cout<<arduPort.isReadable()<<endl;
cout<<arduPort.isWritable()<<endl;
arduPort.write("a");
QByteArray s=arduPort.readAll();
cout<<QString(s).toStdString()<<endl;
以及 Arduino 中的下一个代码:
int inByte = 0;
void setup()
{
Serial.begin(9600);
while(!Serial){;}
int i=0;
}
void loop()
{
if(Serial.read()=='a')
Serial.write('b');
}
首先我向 Arduino 发送一个“a”,ARduino 必须以“b”响应。但是当我阅读 Arduino 的端口时,我只收到 ''。
有人知道为什么我收到的是 '' 而不是 'b' 吗?感谢您的宝贵时间。
【问题讨论】:
-
首先用IDE的串口监视器试试这个。完成此测试后,您将知道是 Arduino 代码还是您的 PC 代码是罪魁祸首。
-
那么这不是 Arduino 问题,而是您的 C++ 代码的问题。由于您没有提供很多有关它的详细信息,因此没有千里眼的人将无法回答这个问题。显然,它必须与 QSerialPort 类以及您如何调用它有关。
-
您需要哪些详细信息?
-
您只能在打开端口后设置串口参数,就像原生操作一样。我们可以考虑为明年夏天的发布缓存它,但它对 Qt 5.1 来说太麻烦了。除非我遗漏了一些如何实现缓存的东西。诚然,我们可以更好地记录现状。我将尝试尽快对 gerrit 进行文档更改。 :) 以下是跟踪此案的相关报告:bugreports.qt-project.org/browse/QTBUG-33774 给您带来的不便深表歉意。
标签: c++ arduino qtserialport