基本信息
源码名称:STC15开发手持点巡检考勤机
源码大小:0.07M
文件格式:.rar
开发语言:C/C++
更新时间:2019-12-24
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 5 元×
微信扫码支付:5 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
4年前为某大公司开发的一款巡检考勤机:
为了考核工人有没有定时去相关设备巡检,在重要设备或设备房安装射频ID卡,工人携手持刷卡机刷卡,卡号和时间数据存储于刷卡机内。
每天下班前到值班室一键式无线上传数据。
18650电池供电,刷卡时按开机键,刷完卡自动关机。10s内无刷卡动作自动关机。
刷卡后读取到ID卡号,与内置DS321时钟实时数据存储于EEPROM。
刷到上传卡号(0000)后,打开使用无线串口与服务器进行交互式上传。
现因改造成微信小程序点巡检,本项目已作废,所以放出源代码。
4年前为某大公司开发的一款巡检考勤机:
为了考核工人有没有定时去相关设备巡检,在重要设备或设备房安装射频ID卡,工人携手持刷卡机刷卡,卡号和时间数据存储于刷卡机内。
每天下班前到值班室一键式无线上传数据。
18650电池供电,刷卡时按开机键,刷完卡自动关机。10s内无刷卡动作自动关机。
刷卡后读取到ID卡号,与内置DS321时钟实时数据存储于EEPROM。
刷到上传卡号(0000)后,打开使用无线串口与服务器进行交互式上传。
现因改造成微信小程序点巡检,本项目已作废,所以放出源代码。
void Main(void)
{
uchar i = 0, num_loop = 0, nc_rs = 0; //temp,
uchar nn_rec;
uchar time_pre = 0;
// unsigned long card_all;
uint16 card_h;
uint16 card_pre = 0, card_now = 0;
Initialization();
LED2 = 1;
LED1 = 1;
LED4 = 1;
LED3 = 0;
time_beep = 150;
time_off = 0;
time_L1 = 0;
time_L2 = 0;
n_beep = 0;
//////////////////以下为主程序循环/////////////////////////////
while(1)
{
if(Mode_Card) //刷卡模式
{
if( time_pre > 21)
time_pre = 21;
if(FLAG_RECEIVE2)
{
FLAG_RECEIVE2 = 0;
time_off = 0;
card_pre = card_now;
card_h = (data_receive2[1] << 8) data_receive2[2];
card_now = ((data_receive2[3]) << 8) data_receive2[4];
xor_temp = 0;
xor_temp ^= 0x0a;
xor_temp ^= 0x02;
for(i = 0; i < 5; i )
xor_temp ^= data_receive2[i];
if((card_now < 9999) && (xor_temp == data_receive2[5]) && (card_h == 0))
{
time_beep = 150;
time_L1 = 2; //闪烁一次
if(card_now != 0)
{
if((time_pre > 20) || (card_now != card_pre))
{
save_card(card_now);
}
}
else //收到0000卡数据
{
P_SLE = 0;
syscount = 0;
F_GET_RI = 0;
while(syscount < 400) //1s
clrwdt;
if(F_GET_RI) //1s内收到串口数据
{
LED2 = 0;
for(i = 0; i < 3; i )
{
time_beep = 150;
syscount = 0;
while(syscount < 300) //1s
clrwdt;
}
P_OFF = 0; ////END//// 有其他分机在传输数据
}
else
{
Mode_Card = 0; //进入传输模式
S1_REQ = 1;
FLAG_RECEIVE1 = 0;
}
}
time_pre = 0;
}
else //接收到非法数据
{
time_L1 = 6;
n_beep = 6;
for(i = 0; i < 4; i )
data_tran1[i] = data_receive2[i 1];
n_send1 = 4;
SBUF = 0x02;
F_TXOVER1 = 1;
}
}
if( time_off > 20) //10S没收到数据,自动关机 ////END////
{
time_off = 20;
P_OFF = 0;
}
}
else /////传输模式/////
{
P_SLE = 0; //唤醒无线模块
if(FLAG_RECEIVE1) //收到电脑数据
{
FLAG_RECEIVE1 = 0;
nn_rec = no_receive1;
xor_temp = 0;
for(i = 0; i < nn_rec - 1; i )
xor_temp ^= data_receive1[i];
xor_temp |= 0x80;
if(xor_temp == data_receive1[nn_rec - 1])
{
if((data_receive1[0] == 0x51) && S2_WAIT)
rec_num();
else
if((data_receive1[0] == 0x55) && S2_WAIT)
rec_time();
else
if((data_receive1[0] == 0x57) && S4_TRAN_WAIT)
rec_confirm();
}
}
if(S1_REQ) //分机发送请求//
{
S1_REQ = 0;
S2_WAIT = 1;
data_tran1[0] = 0x54;
data_tran1[1] = (n_mach / 100) | 0x80;
data_tran1[2] = (n_mach % 100) | 0x80;
xor_temp = 0;
for(i = 0; i < 3; i )
xor_temp ^= data_tran1[i];
xor_temp |= 0x80;
data_tran1[3] = xor_temp;
n_send1 = 4;
SBUF = 0x02;
F_TXOVER1 = 1;
num_resend = 0;
time_L2 = 2; //闪烁一次
}
if(S3_TRAN_D)
{
S3_TRAN_D = 0;
S4_TRAN_WAIT = 1;
if(list_sta != list_end) //有数据要传输
{
data_tran1[0] = 0x56;
data_tran1[1] = (n_mach / 100) | 0x80;
data_tran1[2] = (n_mach % 100) | 0x80;
card_now = Read_One_Data(list_sta * 8 20);
clrwdt;
card_now = (card_now << 8) Read_One_Data(list_sta * 8 21);
data_tran1[3] = ((card_now / 100) % 100) | 0x80;
data_tran1[4] = (card_now % 100) | 0x80;
data_tran1[5] = Read_One_Data(list_sta * 8 22) | 0x80;
data_tran1[6] = Read_One_Data(list_sta * 8 23) | 0x80;
data_tran1[7] = Read_One_Data(list_sta * 8 24) | 0x80;
data_tran1[8] = Read_One_Data(list_sta * 8 25) | 0x80;
data_tran1[9] = Read_One_Data(list_sta * 8 26) | 0x80;
data_tran1[10] = Read_One_Data(list_sta * 8 27) | 0x80;
xor_temp = 0;
for(i = 0; i < 11; i )
xor_temp ^= data_tran1[i];
xor_temp |= 0x80;
data_tran1[11] = xor_temp;
n_send1 = 12;
SBUF = 0x02;
F_TXOVER1 = 1;
num_resend = 0;
}
else
{
S4_TRAN_WAIT = 0;
Mode_Card = 1;
data_tran1[0] = 0x58;
data_tran1[1] = (n_mach / 100) | 0x80;
data_tran1[2] = (n_mach % 100) | 0x80;
xor_temp = 0;
for(i = 0; i < 3; i )
xor_temp ^= data_tran1[i];
xor_temp |= 0x80;
data_tran1[3] = xor_temp;
n_send1 = 4;
SBUF = 0x02;
F_TXOVER1 = 1;
num_resend = 0;
LED2 = 0;
time_beep = 150;
syscount = 0;
while(syscount < 400) //1s
clrwdt;
LED2 = 1;
P_OFF = 0; ////END//// 传输完毕
}
}
if( nc_rs > 4)
{
nc_rs = 0;
if( num_resend < 10)
{
SBUF = 0x02;
F_TXOVER1 = 1;
}
else
{
for(i = 0; i < 6; i )
{
if(i % 2)
LED2 = 1;
else
LED2 = 0;
syscount = 0;
while(syscount < 200) //500ms
clrwdt;
}
P_OFF = 0; ////END//// 重发3次关机
}
}
}
if(time_L1 > 0)
{
--time_L1;
if(time_L1 % 2)
{
LED1 = 0;
LED4 = 0;//LED4同LED1
}
else
{
LED1 = 1;
LED4 = 1;
}
if(time_L1 == 0)
time_off = 20;
}
if(time_L2 > 0)
{
--time_L2;
if(time_L2 % 2)
LED2 = 0;
else
LED2 = 1;
}
if(n_beep > 0)
{
--n_beep;
if(n_beep % 2)
time_beep = 150;
}
while(syscount < 200) //500ms
{
clrwdt;
}
syscount = 0;
//clrwdt;
}
}