当前位置: 首页 > news >正文

C++ 创龙UDP通讯demo

C++ 创龙UDP通讯demo

#include <iostream>
#include <vector>
#include <string>static uint8_t checksum(uint8_t *buff,int size)
{uint8_t ldr = 0;for(int i = 0;i<size;i++){ldr ^= buff[i];}return ldr;
}bool decode(uint8_t *inbuff,int inbuffsize,uint8_t *outbuff,int &outbuffsize)
{std::string out;//zklx::GeneralX::buff_to_string((char *)inbuff,inbuffsize,out);//dzlog_debug(" %s",out.c_str());if(inbuff[0] != 0x7e || inbuff[inbuffsize -1] != 0xe7 || inbuffsize < 7){return false;}int size = 0;int i,j = 0;for(i = 0;i<inbuffsize;){if(inbuff[i] == 0xee){i++;}outbuff[j++] = inbuff[i];i++;size++;}outbuffsize = size;uint8_t ldr = checksum(outbuff + 1,size - 3);if(ldr != outbuff[size - 2]){return false;}return true;
}void encode(uint8_t *inbuff,int inbuffsize,uint8_t *outbuff,int &outbuffsize)
{int i = 0;int n = 0;uint8_t ldr = checksum(inbuff,inbuffsize);outbuff[n++]  = 0x7e;for(i = 0;i<inbuffsize;i++){if((inbuff[i] == 0x7e) || (inbuff[i] == 0xe7) || (inbuff[i] == 0xee)){outbuff[n++] = 0xee;outbuff[n++] = inbuff[i];}else{outbuff[n++] = inbuff[i];}}if((ldr == 0x7e) || (ldr == 0xe7) || (ldr == 0xee)){outbuff[n++] = 0xee;outbuff[n++] = ldr;}else{outbuff[n++] = ldr;}outbuff[n++] = 0xe7;outbuffsize = n;
}int main()
{//两轴转台自检指令uint8_t command[256] = {0x01, 0x11, 0x03, 0x31, 0xA1};//两轴转台uint8_t out_command[256] = {0};int out_size;encode(command, 5, out_command, out_size);for(int i = 0; i < out_size; i ++){std::cout <<"0x"<< std::hex << (int)out_command[i] << " ";}std::cout << "" << std::endl;uint8_t command_1[256] = {0x01,0x11,0x03,0x31, 0xA4, 0x01};encode(command_1, 6, out_command, out_size);for(int i = 0; i < out_size; i ++){std::cout <<"0x"<< std::hex << (int)out_command[i] << " ";}std::cout << "" << std::endl;uint8_t command_2[256] = {0x01,0x11,0x03,0x31, 0xA5, 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00};encode(command_2, 13, out_command, out_size);for(int i = 0; i < out_size; i ++){std::cout <<"0x"<< std::hex << (int)out_command[i] << " ";}std::cout << "" << std::endl;uint8_t command_3[256] = {0x03,0x31,0x01,0x11, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00};encode(command_3, 10, out_command, out_size);for(int i = 0; i < out_size; i ++){std::cout <<"0x"<< std::hex << (int)out_command[i] << " ";}std::cout << "" << std::endl;uint8_t command_4[256] = {0x03,0x31,0x01,0x11,0xD2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};encode(command_4, 14, out_command, out_size);for(int i = 0; i < out_size; i ++){std::cout <<"0x"<< std::hex << (int)out_command[i] << " ";}std::cout << "" << std::endl;return 1;
}

相关文章:

  • 如何在vue3项目中使用 AbortController取消axios请求
  • UWB技术与5G、物联网结合的应用前景
  • c# 根据圆面积计算最大芯片数量
  • Java虚拟机面试题:类加载机制
  • 【grafana原生告警中心配置飞书机器人告警】
  • 微信小程序-自定义toast
  • 最近准备写个Playbook,详细点的指导手册,作为后续的销售培训文件,也趁着这个机会整理下产品思路,尤其是对于UALink,UEC新的联盟规范的测试用例
  • 深入剖析 FastAdmin 权限验证体系:与 UserRule 表的紧密关联及最佳实践
  • 智能合约安全审计平台——可视化智能合约漏洞扫描
  • *差分自回归移动平均模型(ARIMA)
  • # 从零开发小红书风格Flutter应用:图片上传功能实现踩坑记录
  • Spark-SQL2
  • OpenCV中的轮廓近似方法详解
  • MCP Server 开发实战 | 大模型无缝对接 Grafana
  • 49、发起流式请求获取回答
  • Jarpress 开源项目重构公告
  • Java设计模式之观察者模式:从入门到架构级实践
  • 安卓基础(SQLite)
  • 设计模式之状态模式:优雅管理对象行为变化
  • 最简单的使用SDL2 播放原始音频数据程序
  • 纪录片《中国》原班人马打造,《船山先生》美学再升级
  • 又一日军“慰安妇”制度受害者去世,大陆在世幸存者仅7人
  • 山东滕州车祸致6人遇难,肇事司机已被刑事拘留
  • 柳向春:关于美国国会图书馆所藏《全芳备祖》的一些故事
  • 广东省联社:积极推动改制组建农商联合银行工作
  • “穿越看洪武”,明太祖及其皇后像台北故宫博物院南院展出