C++ 创龙UDP通讯demo

打印 上一主题 下一主题

主题 994|帖子 994|积分 2982

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
C++ 创龙UDP通讯demo

  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. static uint8_t checksum(uint8_t *buff,int size)
  5. {
  6.     uint8_t ldr = 0;
  7.     for(int i = 0;i<size;i++)
  8.     {
  9.         ldr ^= buff[i];
  10.     }
  11.     return ldr;
  12. }
  13. bool decode(uint8_t *inbuff,int inbuffsize,uint8_t *outbuff,int &outbuffsize)
  14. {
  15.     std::string out;
  16.     //zklx::GeneralX::buff_to_string((char *)inbuff,inbuffsize,out);
  17.     //dzlog_debug(" %s",out.c_str());
  18.     if(inbuff[0] != 0x7e || inbuff[inbuffsize -1] != 0xe7 || inbuffsize < 7)
  19.     {
  20.         return false;
  21.     }
  22.     int size = 0;
  23.     int i,j = 0;
  24.     for(i = 0;i<inbuffsize;)
  25.     {
  26.         if(inbuff[i] == 0xee)
  27.         {
  28.             i++;
  29.         }
  30.         outbuff[j++] = inbuff[i];
  31.         i++;
  32.         size++;
  33.     }
  34.     outbuffsize = size;
  35.     uint8_t ldr = checksum(outbuff + 1,size - 3);
  36.     if(ldr != outbuff[size - 2])
  37.     {
  38.         return false;
  39.     }
  40.     return true;
  41. }
  42. void encode(uint8_t *inbuff,int inbuffsize,uint8_t *outbuff,int &outbuffsize)
  43. {
  44.     int i = 0;
  45.     int n = 0;
  46.     uint8_t ldr = checksum(inbuff,inbuffsize);
  47.     outbuff[n++]  = 0x7e;
  48.     for(i = 0;i<inbuffsize;i++)
  49.     {
  50.         if((inbuff[i] == 0x7e) || (inbuff[i] == 0xe7) || (inbuff[i] == 0xee))
  51.         {
  52.             outbuff[n++] = 0xee;
  53.             outbuff[n++] = inbuff[i];
  54.         }else{
  55.             outbuff[n++] = inbuff[i];
  56.         }
  57.     }
  58.     if((ldr == 0x7e) || (ldr == 0xe7) || (ldr == 0xee))
  59.     {
  60.         outbuff[n++] = 0xee;
  61.         outbuff[n++] = ldr;
  62.     }else{
  63.         outbuff[n++] = ldr;
  64.     }
  65.     outbuff[n++] = 0xe7;
  66.     outbuffsize = n;
  67. }
  68. int main()
  69. {
  70.     //两轴转台自检指令
  71.     uint8_t command[256] = {0x01, 0x11, 0x03, 0x31, 0xA1};
  72.     //两轴转台
  73.     uint8_t out_command[256] = {0};
  74.     int out_size;
  75.     encode(command, 5, out_command, out_size);
  76.    
  77.     for(int i = 0; i < out_size; i ++)
  78.     {
  79.         std::cout <<"0x"<< std::hex << (int)out_command[i] << " ";
  80.     }
  81.     std::cout << "" << std::endl;
  82.     uint8_t command_1[256] = {0x01,0x11,0x03,0x31, 0xA4, 0x01};
  83.     encode(command_1, 6, out_command, out_size);
  84.    
  85.     for(int i = 0; i < out_size; i ++)
  86.     {
  87.         std::cout <<"0x"<< std::hex << (int)out_command[i] << " ";
  88.     }
  89.     std::cout << "" << std::endl;
  90.     uint8_t command_2[256] = {0x01,0x11,0x03,0x31, 0xA5, 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00};
  91.     encode(command_2, 13, out_command, out_size);
  92.    
  93.     for(int i = 0; i < out_size; i ++)
  94.     {
  95.         std::cout <<"0x"<< std::hex << (int)out_command[i] << " ";
  96.     }
  97.     std::cout << "" << std::endl;
  98.     uint8_t command_3[256] = {0x03,0x31,0x01,0x11, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00};
  99.     encode(command_3, 10, out_command, out_size);
  100.    
  101.    
  102.     for(int i = 0; i < out_size; i ++)
  103.     {
  104.         std::cout <<"0x"<< std::hex << (int)out_command[i] << " ";
  105.     }
  106.     std::cout << "" << std::endl;
  107.     uint8_t command_4[256] = {0x03,0x31,0x01,0x11,0xD2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  108.     encode(command_4, 14, out_command, out_size);
  109.    
  110.     for(int i = 0; i < out_size; i ++)
  111.     {
  112.         std::cout <<"0x"<< std::hex << (int)out_command[i] << " ";
  113.     }
  114.     std::cout << "" << std::endl;
  115.     return 1;
  116. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

农妇山泉一亩田

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表