欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > C++ 创龙UDP通讯demo

C++ 创龙UDP通讯demo

2025/10/10 19:23:55 来源:https://blog.csdn.net/weixin_43050480/article/details/147249536  浏览:    关键词: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;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词