自定义通信协议上位机如何编码

在这里插入图片描述
比如这样一个通信协议 如何进行编码并发送
&0xFF 就是和1111 1111进行与运算如果这个数本身只有八位小于255那么与完以后就是他本身
如果这个数大于255就可以把他低地址截断
如果这个数在255到65535之间还要存放高地址 则需要把这个数右移8位把高地址移过去,然后再和&0xFF与运算截取高八位,之后再看需要是高八位在前还是第八位在前这里是低八位在前

 
void MainWindow::sendInfomation(int Mx,int Mq){


    QByteArray datagram ;//定义一个QByteArray 
    QString pad_value=(ui->setsub->text());
    double pad_value_2=pad_value.toDouble()*2;
    int pad_value_3=qRound(pad_value_2);//如果要使用变量表示则需要定义为int类型
    datagram[0] = 0xD1;
    datagram[1] = 0xA2;

    datagram[2] = 0xFF;
    datagram[3] = 0x20;

    datagram[4] = 0x62;
    datagram[5] = 0x4A;
    datagram[6] = 0x00;
    datagram[7] = pad_value_3&0xFF;

    datagram[8] = 0xDA;
    datagram[9] = 0xC1;

    datagram[10]= 0x00;
    datagram[11]= 0x00;
    datagram[12]= (Mx>>8)&0xFF;
    datagram[13]= Mx&0xFF;

    datagram[14]= 0xDA;
    datagram[15]= 0xC2;
    datagram[16]= 0x00;
    datagram[17]= 0x00;
    datagram[18]= 0x66;
    datagram[19]= 0x66;

    datagram[20]= 0xDA;
    datagram[21]= 0xC3;
    datagram[22]= 0x00;
    datagram[23]= 0x00;
    datagram[24]= 0x66;
    datagram[25]= 0x66;

    datagram[26]= 0xDA;
    datagram[27]= 0xC4;
    datagram[28]= 0x00;
    datagram[29]= 0x00;
    datagram[30]= (Mq>>8)&0xFF;
    datagram[31]= Mq&0xFF;
    dataQbyte=datagram;//这里dataQbyte是一个全局变量先不用管
    qDebug()<<datagram;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值