找回密码
 立即注册
收起左侧

QT数据组合拆分转换

1
回复
6785
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2013-7-25 10:23:05 显示全部楼层 |阅读模式
1Qter豆
QByteArray temp = myCom->readAll();
QT通讯串口读取过来的值是放在temp 数组中,这个数组的单个元素是 Byte类型。
请问我如何
  • 将temp[0]和temp[1]组合成short类型数据 ?
  • 将temp[0]、temp[1]、temp[2]和temp[3]组合成int类型数据 ?
相反 我通过串口发送数据出去时,也要转换拆分数据,请问以下我如何操作:
  • 将short类型数据拆分开,分别赋值给temp[0]和temp[1]?
  • ​将INT类型数据拆分开,分别赋值给temp[0]、temp[1]、temp[2]和temp[3] ?

最佳答案

查看完整内容

下面的代码可供参考: 发送数据时: QByteArray buf; if(ui->sendAsHexcheckBox->isChecked()){ QString str; bool ok; char data; QStringList list; str = ui->sendMsgLineEdit->text(); list = str.split(" "); for(int i = 0; i < list.count(); i++){ if(list.at(i) == " ") continue; if(list.at(i).isEmpty()) ...
回复

使用道具 举报

累计签到:1570 天
连续签到:1 天
2013-7-25 10:23:06 显示全部楼层
下面的代码可供参考:

发送数据时:

QByteArray buf;
    if(ui->sendAsHexcheckBox->isChecked()){
        QString str;
        bool ok;
        char data;
        QStringList list;
        str = ui->sendMsgLineEdit->text();
        list = str.split(" ");
        for(int i = 0; i < list.count(); i++){
            if(list.at(i) == " ")
                continue;
            if(list.at(i).isEmpty())
                continue;
            data = (char)list.at(i).toInt(&ok, 16);
            if(!ok){
                QMessageBox::information(this, tr("提示消息"), tr("输入的数据格式有错误!"), QMessageBox::Ok);
                if(obotimer != NULL)
                    obotimer->stop();
                ui->sendmsgBtn->setText(tr("发送"));
                ui->sendmsgBtn->setIcon(QIcon(":new/prefix1/src/send.png"));
                return;
            }
            buf.append(data);
        }
    }

接收数据时:

QByteArray temp = myCom->readAll();
    QString buf;

    if(!temp.isEmpty()){
            ui->textBrowser->setTextColor(Qt::black);
            if(ui->ccradioButton->isChecked()){
                buf = temp;
            }else if(ui->chradioButton->isChecked()){
                QString str;
                for(int i = 0; i < temp.count(); i++){
                    QString s;
                    s.sprintf("0x%02x, ", (unsigned char)temp.at(i));
                    buf += s;
                }
            }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了