Пример #1
0
/**
 * @brief MainWindow::uiUpdate
 */
void MainWindow::uiUpdate(){
    ui->pushButtonBusOn->setEnabled(connected);
    ui->comboBoxBaud->setEnabled(!busOn);
    ui->checkBox_Silent->setEnabled(!busOn);

    if(connected){
        canBusStatistics stats;
        canStatus stat;
        stat = canRequestBusStatistics(canHandle);
        if( stat < 0){
            qDebug() debugprefix << "canRequestBusStatistics failed";
        }else{
            stat = canGetBusStatistics(canHandle, &stats, sizeof(canBusStatistics));
            if(stat < 0){
                qDebug() debugprefix << "canGetBusStatistics failed";
            }else{
                ui->label_corruptCounter->setText(QString().setNum(stats.errFrame));
                unsigned long c = stats.stdData + stats.stdRemote + stats.extData + stats.extRemote;
                ui->label_packetCounter->setText(QString().setNum(c));
                ui->progressBarBusLoad->setValue(stats.busLoad);
            }
        }
        if(busOn){
            // Dirty but effective
            while(1){
                long id;
                unsigned char data[8];
                unsigned int dlc, flags;
                unsigned long timestamp;

                canStatus stat = canRead(canHandle, &id, data, &dlc, &flags, &timestamp);
                if (stat < 0) {
                    //qDebug() debugprefix << "canRead() end of queue";
                    break;
                }else{
                    QString l;
                    if(flags & canMSG_ERROR_FRAME){
                        l.sprintf("%ld",timestamp);
                        qDebug() debugprefix << "canRead() got error";
                    }else{
                        int rtr = 0;
                        if( flags & canMSG_RTR ) rtr = 1;
                        l.sprintf("%ld\tID:0x%08X\tRTR:%d\t",timestamp,id,rtr);
                        if( dlc > 0 ) l.append(QString().sprintf("DATA: %02X", (quint8)data[0]));
                        if( dlc > 1 ) l.append(QString().sprintf("%02X", (quint8)data[1]));
                        if( dlc > 2 ) l.append(QString().sprintf("%02X", (quint8)data[2]));
                        if( dlc > 3 ) l.append(QString().sprintf("%02X", (quint8)data[3]));
                        if( dlc > 4 ) l.append(QString().sprintf("%02X", (quint8)data[4]));
                        if( dlc > 5 ) l.append(QString().sprintf("%02X", (quint8)data[5]));
                        if( dlc > 6 ) l.append(QString().sprintf("%02X", (quint8)data[6]));
                        if( dlc > 7 ) l.append(QString().sprintf("%02X", (quint8)data[7]));
                    }
                    qDebug() debugprefix << "canRead() got valid message";
                    ui->textEditCanIn->append(l);
                }
            }
        }
    }
}
Пример #2
0
void testBusLoad(canHandle handle)
{
  canStatus stat;
  canBusStatistics bstat;
  stat = canRequestBusStatistics(handle);
  check("canRequestBusStatistics", stat);
  usleep(500000);
  stat = canGetBusStatistics(handle, &bstat, sizeof(bstat));
  check("canGetBusStatistics", stat);
  printBusStatistics(&bstat);
}