📄 system.c
字号:
//open_timer = open_timer1*2;
//TR2 = 1;
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x30;
send_chk(18);
}
else
{
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x35;
send_chk(18);
}
}
else if(DataBuf[2] == 0xFE) //远程命令开门(立即常开一段时间)
{ //远程命令门停止常开
//远程命令门立即常闭一段时间(布防)
//远程命令取消常闭(撤防)
DataBuf[4] = (DataBuf[4]<<4) + DataBuf[5];
DataBuf[6] = (DataBuf[6]<<4) + DataBuf[7];
if(DataBuf[4] == 0)
{
if(DataBuf[6] == 0)
{
relay = 1;
LED = 1;
relay_flag = 0;
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x30;
send_chk(18);
}
else
{
relay = 0;
LED = 0;
relay_timer = relay_timer1<<1;
relay_flag = 1;
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x30;
send_chk(18);
}
}
else if(DataBuf[4] == 1)
{
if(DataBuf[6] == 0)
{
relay = 1;
LED = 1;
relay_flag = 0;
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x30;
send_chk(18);
}
else
{
relay = 1;
LED = 1;
relay_flag = 0;
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x30;
send_chk(18);
}
}
else
{
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x35;
send_chk(18);
}
}
}
}
else if(CID2 == 'A') //读取信息命令
{
if(DataBuf[0] == 0xF2)
{
if(DataBuf[2] == 0xE5) //读取已存储的用户数目
{
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x30;
DataBuf[13] = hex_asc((user_n>>4)&0x0F);
DataBuf[14] = hex_asc(user_n&0x0F);
DataBuf[15] = 0x30;
DataBuf[16] = 0x30;
send_chk(22);
}
else if(DataBuf[2] == 0xE6) //读取用户登记资料
{
if(uart_rcv_len == 8) //读取指定存储位置的用户登记资料
{
i = (DataBuf[6]<<4) + DataBuf[7];
if(i == 0)
{
i = (DataBuf[4]<<4) + DataBuf[5];
if((i != 0) && (i < (user_n+1)))
{
l = 0;
for(j=0;j<60;j++)
{
if(user_buf[j].class.purview != 0xFF)
l++;
if(l == i)
{
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x30;
for(m=0;m<16;m++)
{
DataBuf[13 + m*2] = hex_asc((user_buf[j].whole[m]>>4)&0x0F);
DataBuf[14 + m*2] = hex_asc(user_buf[j].whole[m]&0x0F);
}
send_chk(50);
break;
}
}
}
else
{
purview_timer = 0x4B0;
DataBuf[7] = 0x45;
DataBuf[8] = 0x30;
send_chk(18);
}
}
else
{
purview_timer = 0x4B0;
DataBuf[7] = 0x45;
DataBuf[8] = 0x30;
send_chk(18);
}
}
else if(uart_rcv_len == 14) //查询指定卡号的用户卡是否存在
{
if(user_n == 0)
{
purview_timer = 0x4B0;
DataBuf[7] = 0x45;
DataBuf[8] = 0x30;
send_chk(18);
}
else
{
for(i=0;i<5;i++)
user_tmp.class.card[i] = (DataBuf[4 + i*2]<<4) + DataBuf[5 + i*2];
for(i=0;i<60;i++)
{
if(user_buf[i].class.purview != 0xFF)
{
m = 0;
for(j=0;j<5;j++)
{
if(user_tmp.class.card[j] == user_buf[i].class.card[j])
{
m++;
}
else break;
}
if(m == 5)
{
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x30;
for(j=0;j<16;j++)
{
DataBuf[13 + j*2] = hex_asc((user_buf[i].whole[j]>>4)&0x0F);
DataBuf[14 + j*2] = hex_asc(user_buf[i].whole[j]&0x0F);
}
send_chk(50);
TI = 0;
ES = 1;
return;
}
}
}
purview_timer = 0x4B0;
DataBuf[7] = 0x45;
DataBuf[8] = 0x30;
send_chk(18);
}
}
else if(uart_rcv_len == 12) //查询指定用户编号(ID)的用户是否存在
{
if(user_n == 0)
{
purview_timer = 0x4B0;
DataBuf[7] = 0x45;
DataBuf[8] = 0x30;
send_chk(18);
}
else
{
for(i=0;i<4;i++)
user_tmp.class.ID[i] = (DataBuf[4 + i*2]<<4) + DataBuf[5 + i*2];
for(i=0;i<60;i++)
{
if(user_buf[i].class.purview != 0xFF)
{
m = 0;
for(j=0;j<4;j++)
{
if(user_tmp.class.ID[j] == user_buf[i].class.ID[j])
{
m++;
}
else break;
}
if(m == 4)
{
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x30;
for(j=0;j<16;j++)
{
DataBuf[13 + j*2] = hex_asc((user_buf[i].whole[j]>>4)&0x0F);
DataBuf[14 + j*2] = hex_asc(user_buf[i].whole[j]&0x0F);
}
send_chk(50);
TI = 0;
ES = 1;
return;
}
}
}
purview_timer = 0x4B0;
DataBuf[7] = 0x45;
DataBuf[8] = 0x30;
send_chk(18);
}
}
}
else if(DataBuf[2] == 0xEE) //1 附带顺序号读取记录(防止丢失记录)
{ //0 查询控制器的最新事件记录
DataBuf[4] = (DataBuf[4]<<4) + DataBuf[5];
if((DataBuf[4] == 0) || (DataBuf[4] == 1))
{
for(i=0;i<14;i++)
{
DataBuf[i*2 + 13] = hex_asc((card[i]>>4)&0x0F);
DataBuf[i*2 + 14] = hex_asc(card[i]&0x0F);
}
card[1] = 0;
card[2] = 0;
card[3] = 0;
card[4] = 0;
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x30;
send_chk(46);
}
else
{
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x35;
send_chk(18);
}
}
else if(DataBuf[2] == 0xE0) //读取SM的实时钟
{
sys_second = read_time_byte(0x81); //读系统时间 --- 秒
sys_min = read_time_byte(0x83); //读系统时间 --- 分
sys_hour = read_time_byte(0x85); //读系统时间 --- 时
sys_date = read_time_byte(0x87); //读系统时间 --- 日
sys_mon = read_time_byte(0x89); //读系统时间 --- 月
sys_week = read_time_byte(0x8b); //读系统时间 --- 星期
sys_year = read_time_byte(0x8d); //读系统时间 --- 年
DataBuf[13] = 0x32;
DataBuf[14] = 0x30;
DataBuf[15] = hex_asc((sys_year>>4)&0x0F);
DataBuf[16] = hex_asc(sys_year&0x0F);
DataBuf[17] = hex_asc((sys_mon>>4)&0x0F);
DataBuf[18] = hex_asc(sys_mon&0x0F);
DataBuf[19] = hex_asc((sys_date>>4)&0x0F);
DataBuf[20] = hex_asc(sys_date&0x0F);
DataBuf[21] = hex_asc((sys_week>>4)&0x0F);
DataBuf[22] = hex_asc(sys_week&0x0F);
DataBuf[23] = hex_asc((sys_hour>>4)&0x0F);
DataBuf[24] = hex_asc(sys_hour&0x0F);
DataBuf[25] = hex_asc((sys_min>>4)&0x0F);
DataBuf[26] = hex_asc(sys_min&0x0F);
DataBuf[27] = hex_asc((sys_second>>4)&0x0F);
DataBuf[28] = hex_asc(sys_second&0x0F);
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x30;
send_chk(34);
}
else if(DataBuf[2] == 0xE1) //读取历史记录柜桶参数
{
DataBuf[13] = 0x30;
DataBuf[14] = 0x30;
DataBuf[15] = 0x30;
DataBuf[16] = 0x30;
DataBuf[27] = 0x30;
DataBuf[28] = 0x30;
DataBuf[29] = 0x30;
DataBuf[30] = 0x32;
DataBuf[17] = hex_asc((SAVEP>>4)&0x000f);
DataBuf[18] = hex_asc(SAVEP&0x000f);
DataBuf[19] = hex_asc((SAVEP>>12)&0x000f);
DataBuf[20] = hex_asc((SAVEP>>8)&0x000f);
DataBuf[21] = hex_asc(((LOADP)>>4)&0x000f);
DataBuf[22] = hex_asc((LOADP)&0x000f);
DataBuf[23] = hex_asc(((LOADP)>>12)&0x000f);
DataBuf[24] = hex_asc(((LOADP)>>8)&0x000f);
if(D7_flag)
DataBuf[25] = 0x38;
else DataBuf[25] = 0x30;
if(D0_flag)
DataBuf[26] = 0x31;
else DataBuf[26] = 0x30;
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x30;
send_chk(36);
}
else if(DataBuf[2] == 0xE2) //顺序读取一条历史记录
{ //随机读取记录(指定位置读取)
if(D0_flag == 0)
{
if(SAVEP == LOADP)
{
/*purview_timer = 0x4B0;
DataBuf[7] = 0x45;
DataBuf[8] = 0x34;
send_chk(18);*/
//AT24C128_read(0x2000 + LOADP*16,I2C_rcv,14);
for(i=0;i<14;i++)
{
DataBuf[i*2 + 13] = 0x30;
DataBuf[i*2 + 14] = 0x30;
}
purview_timer = 0x4B0;
DataBuf[7] = 0x30;
DataBuf[8] = 0x30;
send_chk(46);
}
else
{
LO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -