//#include "stdafx.h" #include "sjframe.h" #include "rtc_ext.h" //#include "frame3762task.h" //extern u8 send_buff[512]; //extern u16 send_buff_len; //extern u8 recv_buff[512]; //extern u16 recv_buff_len; extern u8 * get_uart_send(); extern u8 * addr_get(); extern bool sj_frame_recv(u8 * val,u16 vallen); //static u8 send_serial = 0x70; //Îè?ûú unsigned char GetCK(unsigned char * Val, unsigned char Len) { unsigned char i = 0; unsigned char ck = 0; if(NULL == Val) return 0; if(0 == Len) return 0; for( i = 0; i < Len; i++) { ck += Val[i]; } return ck; } //?u16?í®??à÷ 2?í®?¡£ void P2From16(unsigned char * P2,unsigned short Val) { P2[0] = (Val&0xFF); P2[1] = ((Val)>>8)&0xFF; } //?2?í®???à÷ u16?í®¡£ unsigned short U16From2(unsigned char * P2) { return (((P2[1]<<8) &0xFF00) + P2[0]); } /* static u8 get_sendserial() { return (send_serial++); } */ void sj_frame_rpdata(u8 * val,u16 * len,u16 num,u8 * sendval) { //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 //68 20 00 20 00 68 88 03 13 01 00 00 96 60 00 00 01 00 03 00 00 87 21 66 27 38 35 00 62 99 00 F7 16 //68 20 00 20 00 68 88 03 13 01 00 00 96 60 00 00 01 00 //03 00 //00 87 21 66 27 38 35 //00 62 99 00 //F7 16 //2 + num * 11 + 12 u8 * p = val; u16 datalen = (2 + num * 11 + 12) * 4 + 1; u16 alllen = 2 + num * 11 + 20; u8 * addr = addr_get(); p[0] = 0x68; p[1] = datalen&0xFF; p[2] = (datalen>>8)&0xFF; p[3] = datalen&0xFF; p[4] = (datalen>>8)&0xFF; p[5] = 0x68; p[6] = 0x88; //addr p[7] = addr[0]; p[8] = addr[1]; p[9] = addr[2]; p[10] = addr[3]; p[11] = 0; //afn p[12] = 0x96; //ser p[13] = 0x60;//get_sendserial(); //µ¥Ôª±êʶ p[14] = 0x00; p[15] = 0x00; p[16] = 0x01; p[17] = 0x00; // p[18] = num&0xFF; p[19] = (num>>8)&0xFF; memmove(&p[20],sendval,num*11); p[alllen-2] = GetCK(&p[6],2 + num * 11 + 12); p[alllen-1] = 0x16; * len = alllen; } void sj_frame_load(u8 * val,u16 * len) { //µÇ½ //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 //68 0C 00 0C 00 68 C9 03 13 01 00 00 95 70 00 00 01 00 E6 16 u8 * p = val; u8 * addr = addr_get(); p[0] = 0x68; p[1] = 49; p[2] = 0x00; p[3] = 49; p[4] = 0x00; p[5] = 0x68; p[6] = 0xC9; //addr p[7] = addr[0]; p[8] = addr[1]; p[9] = addr[2]; p[10] = addr[3]; p[11] = 0; //afn p[12] = 0x95; //ser p[13] = 0x70;//get_sendserial(); //µ¥Ôª±êʶ p[14] = 0x00; p[15] = 0x00; p[16] = 0x01; p[17] = 0x00; p[18] = GetCK(&p[6],0x0C); p[19] = 0x16; * len = 20; } void sj_frame_heart(u8 * val,u16 * len) { //µÇ½ //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 //68 0C 00 0C 00 68 C9 03 13 01 00 00 95 70 00 00 01 00 E6 16 u8 * p = val; u8 * addr = addr_get(); p[0] = 0x68; p[1] = 0x12*4+1; p[2] = 0x00; p[3] = 0x12*4+1; p[4] = 0x00; p[5] = 0x68; p[6] = 0xC9; //addr p[7] = addr[0]; p[8] = addr[1]; p[9] = addr[2]; p[10] = addr[3]; p[11] = 0; //afn p[12] = 0x94; //ser p[13] = 0x70;//get_sendserial(); //µ¥Ôª±êʶ p[14] = 0x00; p[15] = 0x00; p[16] = 0x01; p[17] = 0x00; //ʱ¼ä p[18] = 0x00; p[19] = 0x00; p[20] = 0x00; p[21] = 0x09; p[22] = 0x10; p[23] = 0x19; p[24] = GetCK(&p[6],0x12); p[25] = 0x16; * len = 26; } u8 send_buff[512]; u16 send_buff_len = 0; u8 recv_buff[512]; u16 recv_buff_len = 0; u8 * get_uart_recv() { return recv_buff; } u16 get_uart_recv_len() { return recv_buff_len; } u8 * get_uart_send() { return send_buff; } void set_uart_recv(u8 * val,u16 len) { memmove(recv_buff,val,len); recv_buff_len = len; //?ïÈâ¥îÜßíÖª?å¥Û¯?×ì // set_recvserial(U16From2(&val[3])); } u16 get_uart_send_len() { return send_buff_len; } u16 * get_uart_send_plen() { return (&send_buff_len); } void concent_send_uart(u8 * val,u16 len) { memmove(send_buff,val,len); send_buff_len = len; // gprs_send_proc_direct(get_uart_send(),get_uart_send_len()); gprs_send_flag(); } void concent_send_gprs() { gprs_send_proc_direct(get_uart_send(),get_uart_send_len()); } void frame_process(u8 * val,u16 len) { memmove(recv_buff,val,len); recv_buff_len = len; set_uart_recv(val,len); u8 ck1 = 0; u8 ck2 = 0; for(int j = 0;j>2; // vallen = vallen - 1; vallen = vallen + 8; if(0x68 == val[j] && 0x16 == val[j+vallen-1]) { ck1 = val[j+vallen-2]; ck2 = GetCK(&val[j+6],vallen-8); if(ck1 == ck2) { //åýÍýùêÛö£¬??ìéòÁ?ïÈ¡£ gprs_recv_judge_timeset(); if(0x94 == val[j+12] || 0x95 == val[j+12]) { //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 //68 51 00 51 00 68 40 07 55 00 08 00 94 60 00 00 01 00 94 00 16 11 15 25 10 19 b7 16 if(0x94 == val[j+12]) { st_rtc_ext rtc_dat; rtc_dat.sec = val[j+20]; rtc_dat.min = val[j+21]; rtc_dat.hour = val[j+22]; rtc_dat.day = val[j+23]; rtc_dat.month = val[j+24]; rtc_dat.year = val[j+25]; rtc_dat.week = 1; set_rtc_time(rtc_dat); } //Time_Set(); } else { sj_frame_recv(&val[j],vallen-j); } //break; } } } #if 0 return; //??ËßÝÂ? //??éÄù»¡£ u16 ck1 = 0; u16 ck2 = 0; u8 kkk = 0; for(int j = 0;j