📄 1797 06 send
字号:
#include<head.c>
#include<order.h>
extern unsigned char data last_key;
extern bit last_f,secret_f;
extern unsigned char data delay_count,send_delay;
extern unsigned char data first_delay,old_delay;
typedef unsigned char code *tt;
extern tt code kk[];
bit second_f;
unsigned char code password[8]={1,2,3,4,5,6,7,8};
unsigned char data secret_buf[8],S_No;
void secret(unsigned char _KeyNo)
{
unsigned char data i=0;
if(_KeyNo==_ENTER)
{
if(S_No!=7)//密码位数
{
S_No=0;
return ;
}
if(S_No)
S_No--;
else
return ;
while(secret_buf[S_No]==password[S_No])
{
if(S_No==0)
{
secret_f=0;
insert(_SCROLL,1);
last_key=_SCROLL;
last_f=1;
return ;
}
else
S_No--;
}
}
else if(_KeyNo==_BKSPACE)
{
if(S_No) S_No--;
}
else
{
if(S_No<8)
secret_buf[S_No++]=_KeyNo;
else S_No=0;
}
}
bit send_code(unsigned char _KeyNo,bit flag)
//发送按键扫描码,flag=0发送断开码,flag=1发送接通码
{
unsigned char *Key_code=kk[_KeyNo];
if(secret_f&&flag)
{
secret(_KeyNo);
return 1;
}
if(!flag)
while(*(Key_code++));
while(1)
{
if(*Key_code)
{
if(send(*(Key_code++)))
continue;
else
return 0;
}
else
return 1;
}
}
void send_buf() //发送缓冲区扫描码
{
unsigned char i=buf_length();
while(i--)
{
switch(get_head_f())
{
case 0: //这次扫描该键没有按下
if(send_code(get_head(),0))
del_head();
break;
case 1:
if(!insert(get_head(),0))
{
send(0);
clr_buf();
}
else
del_head();
break;
case 2:
if(send(get_head()))
del_head();
}
}
if(exist(last_key)!=255)
{
if(last_f==1)//第一次发送扫描码
{
last_f=0;
second_f=1;
send_delay=0;
send_code(last_key,1);
set_timer1();
while(delay_count<XIAODOU_DELAY*4)
if(command_s())
receive_process();
second_f=1;
}
else if(second_f)//第二次发送扫描码,延时由延缓时间决定
{
if(send_delay<first_delay)
return ;
send_delay=0;
send_code(last_key,1);
second_f=0;
}
else //第三 -N次发送,延时由拍发速率决定
{
if(send_delay<old_delay)
return ;
send_delay=0;
send_code(last_key,1);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -