qt串口 - 发送数据并等待响应

时间:2015-10-15 14:50:57

标签: c++ qt serial-port

我写过这样的代码(这里简化)

Test::test()
{
   timer = new QTimer(this);
   timer -> setInterval(300);
   timer -> setSingleShot(true);
   connect(this->timer, SIGNAL(timeout()),this,SLOT(first_process()));
   char first_request = 0x02;
   serial -> write( &first_request);
   timer -> start();
}
Test::first_process()
{
   QByteArray data = serial->readAll();
   //process data...
   char second_request = 0x02;
   serial->write( &second_request  );
   disconnect(this->timer, SIGNAL( timeout() ), this, SLOT( first_process() ));
   connect( this->timer, SIGNAL( timeout() ), this, SLOT( second_process() )); 
   timer->start();  
}

(串行当然是初始化,波特设置等等......)

所以一个,6个进程“排队”一次执行。但是我从响应中看到数据一次又一次地发送,即在第三个“进程”中,我在第四个另一半中重现了一半的第一个响应,其中一些其他数据在中间。

我无法看出错误发生在哪里 - 设备应该响应命令,数据应该读取到QByteArray

1)为什么数据即使没有被要求发送两次(或更多次)?这是某种缓冲问题吗?

2)是否有其他机制可以实现这种行为? (我已经尝试将readyRead()连接到读取功能,但问题是数据被撕成碎片,我一次想要所有的东西)

0 个答案:

没有答案