Есть ГПИ, который выводит данные из ком-порта в таблицу.Чтение порта происходит постоянно в отдельном потоке.Данные идут непрерывно!
Буквально через пару секунд после включения данные начинают выводится рывками.И самое интересное: если отключить устройство от ком порта данные еще некоторое время идут!
вот исходник:
Thread::Thread(QThread *parent)
: QThread(parent)
{
status=false;
marker=0;
num=0;
serialDevice=new TSerialDevice("COM1");
moveToThread(this);
}
Thread::~Thread()
{
serialDevice->close();
delete serialDevice;
serialDevice=0;
}
void Thread::stop()
{
status=false;
}
void Thread::run()
{
status=true;
if(!(serialDevice->open(QIODevice::ReadOnly|QIODevice::Unbuffered))){
emit massage(serialDevice->deviceName()+" not open!");
status=false;
}
setCOM();
emit massage("baudrate=\t"+serialDevice->baudRate());
while(status){
read();
}
serialDevice->close();
emit massage("Stop");
return;
}
void Thread::read()
{
nav_arr.clear();
arr.clear();
// marker=0;
// num=0;
arr=serialDevice->read(4);
marker=(((arr.at(3)<<24)&0xFF000000)|((arr.at(2)<<16)&0xFF0000)
|((arr.at(1)<<8)&0xFF00)|(arr.at(0)&0xFF));
switch(marker){
case 0x75868A53:
arr+=serialDevice->read(4);
num=(((arr.at(7)<<24) & 0xFF000000)|((arr.at(6)<<16) & 0xFF0000)|
((arr.at(5)<<8) & 0xFF00)|((arr.at(4)<<0) & 0xFF));
nav_arr=serialDevice->read(88+24*num);
emit data(nav_arr,marker,num);
break;
}
return;
}