河北水利局项目

This commit is contained in:
2025-12-15 16:07:49 +08:00
commit f11a7c2b95
1146 changed files with 452892 additions and 0 deletions

433
shuangjia/sjframe.c Normal file
View File

@@ -0,0 +1,433 @@
//#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;
//舞?<3F>
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<recv_buff_len;j++)
{
//0 1 2 3 4 5
//68 71 00 71 00 68 40 12 34 56 78 00 93 71 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 59 16
u16 vallen = U16From2(&val[j+1]);
vallen = vallen>>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)
{
//妪妄<E5A6AA>??扉蛄?锶。
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<recv_buff_len;j++)
{
u16 vallen = U16From2(&val[j+1]);
if(0x68 == val[j] && 0x16 == val[j+vallen-1])
{
ck1 = get_crc(&val[j+1],vallen-4);
ck2 = U16From2(&val[j+vallen-3]);
if(ck1 == ck2)
{
if(kkk==0)
{
memmove(recv_buff1,&val[j],vallen);
recv_buff_len1 = vallen;
}
else if(kkk==1)
{
memmove(recv_buff2,&val[j],vallen);
recv_buff_len2 = vallen;
kkk++;
break;
}
kkk++;
}
}
}
if(kkk==1)
{
set_uart_recv(val,len);
if(frame_recv())
{
//妪妄<E5A6AA>??扉蛄?锶。
gprs_recv_judge_timeset();
}
}
if(kkk==2)
{
memmove(recv_buff,recv_buff1,recv_buff_len1);
recv_buff_len = recv_buff_len1;
if(!frame_recv_noack())
{
memmove(recv_buff,recv_buff1,recv_buff_len1);
recv_buff_len = recv_buff_len1;
}
else
{
memmove(recv_buff,recv_buff2,recv_buff_len2);
recv_buff_len = recv_buff_len2;
}
set_uart_recv(recv_buff,recv_buff_len);
if(frame_recv())
{
//妪妄<E5A6AA>??扉蛄?锶。
gprs_recv_judge_timeset();
}
}
#endif
}