📄 uart0.c
字号:
}
else if(RX_DATA[18] == 2)
{
FLAG |= gb_delnom;
set_par_re();
}
}
}
/******************************************/
/********接收设置第一控制字命令************/
/******************************************/
void uart_set_diyi()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
conone = (RX_DATA[17] << 4);
conone |= RX_DATA[18];
FLAG1 |= gb_flashw;
set_par_re();
}
}
/******************************************/
/********启用或关闭手动开门按键输入************/
/******************************************/
void uart_set_keyc()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
if(RX_DATA[18] ==0)
{
conone &= ~BIT4;
}
else
{
conone |= BIT4;
}
FLAG1 |= gb_flashw;
set_par_re();
}
}
/******************************************/
/********红外监控的布防与撤防************/
/******************************************/
void uart_set_irc()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
if(RX_DATA[18] ==0)
{
conone &= ~BIT6;
}
else
{
conone |= BIT6;
FLAG2 |= gb_concon;
}
FLAG1 |= gb_flashw;
set_par_re();
}
}
/******************************************/
/********开关监控的布防与撤防************/
/******************************************/
void uart_set_dorc()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
if(RX_DATA[18] ==0)
{
conone &= ~BIT7;
}
else
{
conone |= BIT7;
FLAG2 |= gb_concon;
}
FLAG1 |= gb_flashw;
set_par_re();
}
}
/**********************************************************/
/********设定门开关感应器在开门状态是的有效电平************/
/**********************************************************/
void uart_set_dors()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
if(RX_DATA[18] ==0)
{
conone &= ~BIT3;
}
else
{
conone |= BIT3;
}
if(conone & BIT3)
{
door_close = 0x00;
}
else
{
door_close = 0x20;
}
FLAG1 |= gb_flashw;
set_par_re();
}
}
/*****************************************/
/********设定门控电磁锁的特性*************/
/*****************************************/
void uart_set_suoc()// 设定门控电磁锁的特性
{
uchar i;
i = 24;
if(uart_set_re(i))
{
if(RX_DATA[18] ==0)
{
conone &= ~BIT5;
}
else
{
conone |= BIT5;
}
FLAG1 |= gb_flashw;
set_par_re();
}
}
/********************************/
/********设定红外感应器在报警时的有效电平************/
/********************************/
void uart_set_irs()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
if(RX_DATA[18] ==0)
{
conone &= ~BIT2;
}
else
{
conone |= BIT2;
}
FLAG1 |= gb_flashw;
set_par_re();
}
}
/********************************/
/********设定开启红外后的等待延时************/
/********************************/
void uart_set_irdly()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
irdly_cnt = (RX_DATA[17] << 4);
irdly_cnt |= RX_DATA[18];
FLAG1 |= gb_flashw;
set_par_re();
}
}
/**************************************************/
/********接收设置命令******************************/
/**************************************************/
void uart_set()
{
uint i;
uint j;
for(i=9; i<17;i++)
{
while (!(IFG1 & URXIFG0));
RX_DATA[i]=U0RXBUF;
}
i=hex_c(RX_DATA[13]);
j=hex_c(RX_DATA[14]);
j |= i<<4;
if(j == 0xf1)
{
i=hex_c(RX_DATA[15]);
j=hex_c(RX_DATA[16]);
j |= i<<4;
switch(j)
{
case 0xe0: uart_set_time(); break;//设置时间
case 0xe1: uart_set_work(); break;//设置工作日时段
case 0xe2: uart_set_nowork(); break;//设置非工作日时段
case 0xe3: uart_set_addcd(); break;//增加一个用户
case 0xe4: uart_set_delcd(); break;//删除一个用户
case 0xe5: uart_set_diyi(); break;//设置第一控制字
case 0xe6: uart_set_delay(); break;//设置门锁执行时间
case 0xe7: uart_set_opde(); break;//设置开门延时
case 0xe8: uart_set_iren(); break;//设置红外
case 0xe9: uart_set_alarmde();break;
case 0xea: uart_set_rest(); break;//设置休息日
case 0xeb: uart_set_holiday();break;//设置节假日
case 0xec: uart_set_delhol(); break;//删除节假日
case 0xed: uart_set_opdr(); break;//远程开门
case 0xef: uart_set_irdly(); break;//设定开启红外的等待延时
case 0xf0: uart_set_par(); break;//设置参数
case 0xf1: uart_set_week(); break;//设置星期时段
case 0xf6: uart_set_irs(); break;//设定红外感应器在报警时的有效电平
case 0xf7: uart_set_dors(); break;//设定门开关感应器在开门状态是的有效电平
case 0xf8: uart_set_keyc(); break;//启用或关闭手动开门按键输入
case 0xf9: uart_set_suoc(); break;// 设定门控电磁锁的特性
case 0xfa: uart_set_irc(); break;//红外监控的布防与撤防
case 0xfb: uart_set_dorc(); break;//门开关监控的布防与撤防
}
}
}
/*******接收读取时间命令********/
void uart_read_time()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
FLAG |=gb_re1302;
FLAG |=gb_time_re;
}
}
/*****************************************************/
/****读取卡号数目*************************************/
/*****************************************************/
void uart_read_cdnum()
{
uint i;
i = 24;
if(uart_set_re(i))
{
set_tx();
TX_DATA[7] = 0x30;
TX_DATA[8] = 0x30;
TX_DATA[9] = 0x43;
TX_DATA[10] = 0x30;
TX_DATA[11] = 0x30;
TX_DATA[12] = 0x34;
i = nvip + nnom;
TX_DATA[13] = c_hex((i>>4) & 0x0f);
TX_DATA[14] = c_hex(i & 0x0f);
TX_DATA[15] = c_hex((i>>12) & 0x0f);
TX_DATA[16] = c_hex((i>>8) & 0x0f);
jisuanhe(17);
}
}
/*************************/
/***顺序读取一条记录******/
/*************************/
void uart_read_meg()
{
uchar i;
i = 22;
if(uart_set_re(i))
{
FLAG1 |=gb_remsg;
}
}
/*************************************/
/*********读取历史记录参数************/
/*************************************/
void uart_read_megpar()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
FLAG1 |=gb_repar;
}
}
/**************************************************/
/********读取一组工作日准进时段********************/
/**************************************************/
void uart_read_work()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
FLAG1 |= gb_rework;
}
}
/********************************************************/
/**************读取非工作日时段**************************/
/********************************************************/
void uart_read_nowork()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
FLAG1 |= gb_renowork;
}
}
/********************************************************/
/*****读取星期准进时段***********************************/
/********************************************************/
void uart_read_week()
{
uchar i;
i = 26;
if(uart_set_re(i))
{
FLAG1 |= gb_reweek;
}
}
/********************************************************/
/******读取指定位置的卡号********************************/
/********************************************************/
void uart_read_card()
{
uchar i;
uint j;
uchar buf[5];
ulong addr39;
i = 26;
if(uart_set_re(i))
{
RX_DATA[17] = (RX_DATA[17] << 4) | RX_DATA[18];
j = (RX_DATA[19] << 4) | RX_DATA[20];
j = (j << 8) | RX_DATA[17];
addr39 = (j - 1) * 5;
for(i=0; i<5; i++)
{
buf[i] = read040(addr39);
addr39++;
}
set_tx();
TX_DATA[7] = 0X30;
TX_DATA[8] = 0X30;
TX_DATA[9] = 0X45;
TX_DATA[10]= 0X30;
TX_DATA[11]= 0X32;
TX_DATA[12]= 0X30;
TX_DATA[13] = 0X30;
TX_DATA[14] = 0X30;
j = 15;
for(i=0; i<4; i++)
{
TX_DATA[j++] = c_hex((buf[i] >> 4) & 0x0f);
TX_DATA[j++] = c_hex(buf[i] & 0x0f);
}
for(i=0; i<20; i++)
{
TX_DATA[j++] = 0x30;
}
TX_DATA[j++] = c_hex((buf[4] >> 4) & 0x0f);
TX_DATA[j++] = c_hex(buf[4] & 0x0f);
jisuanhe(j);
}
}
/***************************************************/
/*********读取星期内的休息日************************/
/***************************************************/
void uart_read_rest()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
set_tx();
TX_DATA[7] = 0X30;
TX_DATA[8] = 0X30;
TX_DATA[9] = 0X43;
TX_DATA[10]= 0X30;
TX_DATA[11]= 0X30;
TX_DATA[12]= 0X34;
TX_DATA[13]= c_hex((restday1>>4) & 0x0f);
TX_DATA[14]= c_hex(restday1 & 0x0f);
TX_DATA[15]= c_hex((restday2>>4) & 0x0f);
TX_DATA[16]= c_hex(restday2 & 0x0f);
jisuanhe(17);
}
}
/*************************************************/
/********读取节假日*******************************/
/*************************************************/
void uart_read_holi()
{
uchar i;
uint j;
uint x;
i = 24;
if(uart_set_re(i))
{
if(holiday[0][0] == 0xff)
{
set_tx();
TX_DATA[7] = 0X30;
TX_DATA[8] = 0X30;
TX_DATA[9] = 0X45;
TX_DATA[10] = 0X30;
TX_DATA[11] = 0X30;
TX_DATA[12] = 0X32;
TX_DATA[13] = 0X30;
TX_DATA[14] = 0X30;
TX_DATA[15] = 0X46;
TX_DATA[16] = 0X44;
TX_DATA[17] = 0X33;
TX_DATA[18] = 0X46;
TX_DATA[19] = 0X0D;
tx_len = 20;
FLAG |= gb_tx;
}
else
{
for(i=0; i<40; i++)
{
if(holiday[i][0]==0xff)
{
j = i;
break;
}
}
x = chklen((j<<2)+2);
set_tx();
TX_DATA[7] = 0x30;
TX_DATA[8] = 0X30;
TX_DATA[9] = c_hex((x>>12)&0X0F);
TX_DATA[10] = c_hex((x>>8)&0X0F);
TX_DATA[11] = c_hex((x>>4)&0X0F);
TX_DATA[12] = c_hex(x&0X0F);
TX_DATA[13] = c_hex((j>>4)&0X0F);
TX_DATA[14] = c_hex(j&0X0F);
x = 15;
for(i=0; i<j; i++)
{
TX_DATA[x++] = c_hex((holiday[i][0]>>4)&0x0f);
TX_DATA[x++] = c_hex(holiday[i][0]&0x0f);
TX_DATA[x++] = c_hex((holiday[i][1]>>4)&0x0f);
TX_DATA[x++] = c_hex(holiday[i][1]&0x0f);
}
jisuanhe(x);
}
}
}
void uart_read_jian()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
FLAG2 |= gb_rejian;
}
}
/*****************************************************/
/***********读取控制信息******************************/
/*****************************************************/
void uart_read_conmsg()
{
uchar i;
i = 24;
if(uart_set_re(i))
{
FLAG2 |= gb_conmsg;
}
}
/************************************************************/
/***接收读取信息命令*****************************************/
/************************************************************/
void uart_read()
{
uint i;
uint j;
for(i=9; i<17;i++)
{
while(!(IFG1 & URXIFG0));
RX_DATA[i]=U0RXBUF;
}
i=hex_c(RX_DATA[13]);
j=hex_c(RX_DATA[14]);
j |= i<<4;
if(j == 0xf2)
{
i=hex_c(RX_DATA[15]);
j=hex_c(RX_DATA[16]);
j |= i<<4;
switch(j)
{
case 0xe0: uart_read_time(); break;
case 0xe5: uart_read_cdnum(); break;
case 0xe6: uart_read_card(); break;
case 0xe2: uart_read_meg(); break;
case 0xe1: uart_read_megpar();break;
case 0xe3: uart_read_work(); break;
case 0xe4: uart_read_nowork();break;
case 0xeb: uart_read_week(); break;
case 0xe9: uart_read_rest(); break;
case 0xea: uart_read_holi(); break;
case 0xe7: uart_read_jian(); break;
case 0xe8: uart_read_conmsg();break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -