VS+QT接受传感器十六进制数据并处理

需要采集一个力矩传感器的数据,用一个定时器来定时发送命令并接受返回的数据,返回的十六进制数据截取数据区域,并转换为QString后再转换为10进制数。

//头文件定义
private:
    //采样定时器
    QTimer* askTimer;
    QTimer* textTimer;
private slots:
    //定时采样函数
    void sensorTimeoutHandle();
    void textTimeoutHandle();

//cpp文件初始化定义
    askTimer = new QTimer(this);
    connect(askTimer, SIGNAL(timeout()), this, SLOT(sensorTimeoutHandle()));
    textTimer = new QTimer(this);
    connect(textTimer, SIGNAL(timeout()), this, SLOT(textTimeoutHandle()));

//采样函数
//力矩采样函数
void BGDTextSoftware::sensorTimeoutHandle() {
    serialSensor.write(sensorAsk,8);
    sleep(10);
    if (serialSensor.bytesAvailable() >= 8) {
        QByteArray input = serialSensor.readAll();
        QByteArray data = input.mid(5, 2);
        QString tempStr = QString(data.toHex());
        bool ok;
        int datadec = tempStr.toInt(&ok, 16);
        if (datadec > 10000) {//如果超量程即为反向力矩
            datadec = -(65536 - datadec);
        }
        double torque = double(datadec) / 10;
        ui.tmp->clear();
        ui.tmp->setText(data.toHex());
        ui.torqueLcdNumber->display(QString::number(torque, '.', 1));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值