编辑代码

#include <stdio.h>
#include <string.h>
char getcheck_sum(char *p, int len)
{
        char sum = 0;
        while(len--)
        {
                sum += *p;
                p++;
        }
        return sum;
}
int main()
{
        unsigned char data[] = {0x68, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x68, 
                                                        0x14, 13, 
                                                        0x09, 0x01, 0x08, 0x09,
                                                        
                                                        0x00,//设备类型,0:发送特征电路设备
                                                        //0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//发送特征电流时间
                                                        0,30,14,25,7,24,//2024-7-25 14:30:00
                                                        0x00,0x00,//特征位宽,默认600ms
                                                        0x00,0x00,0x00,//特征信号开关频率,默认833.33Hz
                                                        0x02,//特征信息码长度
                                                        0xAA,0xE9,//特征信息码,默认AAE9
                                                        0x00,0x00,//高电平脉宽,400us
                                                        0x00,0x00,//低电平脉宽, 800us
                                                        //预留
                                                        0x00,0x00,0x00,0x00,0x00,
                                                        0x00,0x00,0x00,0x00,0x00,
                                                        0x00,0x00,
                                                        
                                                        0x00,0x16};
        int bit_len   = 600;    //特征位宽 ,ms
        int freq      = 83333;  //特征信号开关频率
        int send_code = 0xAAE9; //特征信息码
        int high_time = 400;    //高电平脉宽, us
        int low_time  = 800;    //低电平脉宽, us
        int len = sizeof(data);
        int i;
        unsigned int val;
        data[9] = len - 12;
        memcpy(&data[21], &bit_len, 2);
        memcpy(&data[23], &freq, 3);
        data[27] = (send_code>>8)&0xFF;
        data[28] = send_code&0xFF;
        memcpy(&data[29], &high_time, 2);
        memcpy(&data[31], &low_time, 2);
        
        for(i = 10; i < len - 2; i++)
        {
                data[i] += 0x33;
        }
        data[len-2] = getcheck_sum(data, len - 2);
        for(i = 0; i < len; i++)
        {
                val = data[i];
                printf("%02X ", val);
        }
   
   return 0;
}