📄 yibiao.c.bak
字号:
temp>>=4;
xs_shu(6,54+4,yi_1+(temp&0x0f)*8);
}
/*时*/
if ((hour1!=hour)||(one==1)||(gn==1))
{
temp=hour;
xs_shu(6,78+4,clr);
xs_shu(6,72+4,clr);
xs_shu(6,78+4,yi_1+(temp&0x0f)*8);
temp>>=4;
xs_shu(6,72+4,yi_1+(temp&0x0f)*8);
}
/*:*/
if ((one==1)||(gn==1))
xs_shu(6,85+4,yi_1+10*8);
/*分*/
if ((minutes1!=minutes)||(one==1)||(gn==1))
{
temp=minutes;
xs_shu(6,96+4,clr);
xs_shu(6,90+4,clr);
xs_shu(6,96+4,yi_1+(temp&0x0f)*8);
temp>>=4;
xs_shu(6,90+4,yi_1+(temp&0x0f)*8);
}
/*:*/
if ((one==1)||(gn==1))
xs_shu(6,103+4,yi_1+10*8);
/*秒*/
if ((second1!=second)||(one==1)||(gn==1))
{
temp=second;
xs_shu(6,114+4,clr);
xs_shu(6,108+4,clr);
xs_shu(6,114+4,yi_1+(temp&0x0f)*8);
temp>>=4;
xs_shu(6,108+4,yi_1+(temp&0x0f)*8);
}
second1=second;
minutes1=minutes;
hour1=hour;
day1=day;
month1=month;
year1=year;
one=0;
gn=0;
if (guanbiao>40)
{
guanbiao=0;
if (gb==1)
{
gb=0;
if (NET==0)
xs_shu(6,2,yi_1+12*8);
}
else
{
gb=1;
if (NET==0)
xs_shu(6,2,clr);
}
if(SR==1)
xs_gb(Y_hang,X_lie);
if (jy_xin==0x40)
{
if(jxin<7)
jxin++;
else
jxin=0;
jyxsx();
}
}
if (NET==1)
xs_shu(6,2,yi_1+12*8);
}
unsigned char password(bit aa)/*aa=0 员工密码 aa=1 用户密码*/
{
// unsigned charkeybuf_p=0;
huakuang(3,6,2);
keybuf_p=0;
SR=1;
Y_hang=3;
X_lie=34;
while(1)
{
key=getkey();
if ((key>=0)&&(key<=9)&&(keybuf_p<4))
{
keybuf[keybuf_p]=key;
xs_shu(3,2*16+keybuf_p*8+1,xin);
keybuf_p++;
Y_hang=3;
X_lie=34+keybuf_p*8;
}
if(key=='l')
{
if(keybuf_p>0)
{
xs_shu(3,2*16+(keybuf_p-1)*8+1,clr);
keybuf_p--;
gb=0;
xs_gb(Y_hang,X_lie);
X_lie=34+keybuf_p*8;
}
else
{
gb=0;
xs_gb(Y_hang,X_lie);
SR=0;
return 2;
}
}
if (key=='k')
{
astobcd(4);
SR=0;
if (aa==0)
if (strcomp(keybuf,ygmm,2))
return 0x01;/*密码正确返回*/
else
return 0x00;/*密码错误返回*/
else
if (strcomp(keybuf,yhmm,2))
return 0x01;/*密码正确返回*/
else
return 0x00;/*密码错误返回*/
}
if (key=='t')
{
SR=0;
return 2;/*退卡返回*/
}
xs_time();
}
SR=0;
}
unsigned char pass_card()
{
huakuang(3,6,2);
keybuf_p=0;
Y_hang=3;
X_lie=34;
SR=1;
while(1)
{
key=getkey();
if ((key>=0)&&(key<=9)&&(keybuf_p<12))
{
keybuf[keybuf_p]=key;
xs_shu(3,2*16+keybuf_p*8+1,xin);
keybuf_p++;
Y_hang=3;
X_lie=34+keybuf_p*8;
}
if(key=='l')
{
if(keybuf_p>0)
{
xs_shu(3,2*16+(keybuf_p-1)*8+1,clr);
keybuf_p--;
gb=0;
xs_gb(Y_hang,X_lie);
X_lie=34+keybuf_p*8;
}
else
{
gb=0;
xs_gb(Y_hang,X_lie);
X_lie=34+keybuf_p*8;
SR=0;
return;
}
}
if (key=='k')
{
SR=0;
astobcd(keybuf_p);
pin_dat[0]=keybuf_p;
pin_dat[1]=keybuf[0];
pin_dat[2]=keybuf[1];
pin_dat[3]=keybuf[2];
pin_dat[4]=keybuf[3];
pin_dat[5]=keybuf[4];
return 0x0;
}
if (key=='t')
{
SR=0;
return 0x02;/*退卡返回*/
}
xs_time();
}
}
unsigned char sendcard()
{
unsigned char idata card_err_state; //卡片错误状态
unsigned char idata wait_counter; //卡片连续等待计数器
unsigned char idata rec_data; //接收一字节缓冲
ES=0;
sendcard_st: //重发地址
send(0,5); //发送5字节命令头
wait_counter=3; // 可以连续接收3次
do_byte_state: //状态字节处理地址
card_err_state=0;
rekk[0]=0xff;
card_err_state =recv(0,1); //接收一字节
if (card_err_state == 0) //接收正确?
{
// de100u(); //接收正确
rec_data=rekk[0]; //取一字节
switch (rec_data)
{
case 0x60: //卡片要求延长等待
if (wait_counter--==0) //连续三次?
{
card_err_state=0x80; //连续三次
break; //退出
}
else goto do_byte_state;
case 0x6c: //卡片要求安后续一字节为Le,重发命令头
card_err_state =recv(0,1); //接收后续字节
send_buf[4]=rekk[0]; //重置Le
de100u();
goto sendcard_st; //重发
case 0x61:
card_err_state =recv(0,1); //卡片要求取XX字节
if (card_err_state == 0)
{
card_err_state =getcard_data(); //按卡片要求取XX 字节
}
break; //退出
default : //前者都不是 继续
rec_data=rekk[0];
if (((rec_data&0xf0)==0x60)||((rec_data&0xf0)==0x90)) card_err_state =recv(1,1); //卡片返回6X 9X 取一字节状态码 退出
else if (rekk[0]==send_buf[1]) card_err_state =recv(0,(send_buf[4]+2)); //卡片要求接收全部剩余字节
else if ((~(rekk[0])+1)==send_buf[1]) //卡片要求接收一字节后等待下一个状态字
{
card_err_state =recv(0,1); //接收一字节
if (card_err_state==0) //接收正确?
{ //接收正确
if (wait_counter--==0) card_err_state=0x81; //连续三次 退出
else goto do_byte_state; //不足三次 等待下一个状态字
}
}
break; //退出 switch
}
}
comm_status=0;
ES=1;
return(card_err_state); //返回错误状态
}
unsigned char sendcard1()
{
unsigned char idata card_err_state; //卡片错误状态
unsigned char idata wait_counter; //卡片连续等待计数器
unsigned char idata rec_data; //接收一字节缓冲
unsigned char idata data_le; //数据的长度
unsigned char idata data_adr; //数据的地址
ES=0;
data_le=send_buf[4];
data_adr=5;
send(0,5); //发送5字节命令头
wait_counter=3; // 可以连续接收3次
do_byte_state: //状态字节处理地址
card_err_state=0;
rekk[0]=0xff;
card_err_state =recv(0,1); //接收一字节
if (card_err_state == 0) //接收正确?
{
de100u(); //接收正确
rec_data=rekk[0]; //取一字节
if (rec_data==0x60) //卡片要求延长等待
{
if (wait_counter--==0) //连续三次?
{
card_err_state=0x82; //连续三次
}
else goto do_byte_state;
}
else if (rec_data==0x90)
{
card_err_state=recv(1,1);
goto send_card1_end ;
}
else if (rec_data==send_buf[1])
{
send(data_adr,data_le);
}
else if (((~rec_data)+1)==send_buf[1])
{
send(data_adr,data_le);
data_adr=data_adr+1;
data_le=data_le-1;
if (data_le!=0) goto do_byte_state;
}
else
{
card_err_state=0x83;
goto send_card1_end;
}
}
wait_counter=3;
de100u();
do_byte_state1:
if ((card_err_state=recv(0,1))==0)
{
rec_data=rekk[0];
if (rec_data==0x60) //卡片要求延长等待
{
if (wait_counter--==0) //连续三次?
{
card_err_state=0x84; //连续三次
}
else goto do_byte_state1;
}
else if (rec_data==0x61)
{
if ((card_err_state=recv(0,1)) == 0)
{
card_err_state =getcard_data(); //按卡片要求取XX 字节
}
}
else if (((rec_data&0xf0)==0x60)||((rec_data&0xf0)==0x90)) card_err_state =recv(1,1);
else card_err_state=0x85;
}
send_card1_end:
comm_status=0;
ES=1;
return(card_err_state); //返回错误状态
}
unsigned char sendcard2()
{
unsigned char idata card_err_state; //卡片错误状态
unsigned char idata wait_counter; //卡片连续等待计数器
unsigned char idata rec_data; //接收一字节缓冲
unsigned char idata data_le; //数据的长度
unsigned char idata data_adr; //数据的地址
ES=0;
data_le=send_buf[4];
data_adr=5;
send(0,5); //发送5字节命令头
wait_counter=3; // 可以连续接收3次
do_byte_state: //状态字节处理地址
card_err_state=0;
rekk[0]=0xff;
card_err_state =recv(0,1); //接收一字节
if (card_err_state == 0) //接收正确?
{
de100u(); //接收正确
rec_data=rekk[0]; //取一字节
if (rec_data==0x60) //卡片要求延长等待
{
if (wait_counter--==0) //连续三次?
{
card_err_state=0x86; //连续三次
}
else goto do_byte_state;
}
else if (rec_data==0x90)
{
card_err_state=recv(1,1);
goto send_card1_end ;
}
else if (rec_data==send_buf[1])
{
send(data_adr,data_le);
}
else if (((~rec_data)+1)==send_buf[1])
{
send(data_adr,data_le);
data_adr=data_adr+1;
data_le=data_le-1;
if (data_le!=0) goto do_byte_state;
}
else
{
card_err_state=0x87;
goto send_card1_end;
}
}
wait_counter=3;
de100u();
do_byte_state1:
if ((card_err_state=recv(0,1))==0)
{
rec_data=rekk[0];
if (rec_data==0x60) //卡片要求延长等待
{
if (wait_counter--==0) //连续三次?
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -