基本信息
源码名称:STC15开发手持点巡检考勤机
源码大小:0.07M
文件格式:.rar
开发语言:C/C++
更新时间:2019-12-24
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 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; } }