Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: проблемы с чтением из ком-порта
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
Widget
Всем добрый день!
Есть ГПИ, который выводит данные из ком-порта в таблицу.Чтение порта происходит постоянно в отдельном потоке.Данные идут непрерывно!
Буквально через пару секунд после включения данные начинают выводится рывками.И самое интересное: если отключить устройство от ком порта данные еще некоторое время идут!
вот исходник:
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;
}
niXman
Модераторы, вставьте код в тэги, плиз)
Litkevich Yuriy
Ну надо посмотреть возможность настроек класса TSerialDevice. Может он аппаратный буфер сильно здоровый использует.
Или настройки самого порта.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.