/*====================================================================================================*/ void KDWM_Loop( void ) { while(1) { LED_R_Reset(); LED_G_Set(); LED_B_Set(); delay_ms(200); LED_R_Set(); LED_G_Reset(); LED_B_Set(); delay_ms(200); LED_R_Set(); LED_G_Set(); LED_B_Reset(); delay_ms(200); while(KEY_Read()) { LED_R_Set(); LED_G_Set(); LED_B_Set(); delay_ms(200); LED_R_Reset(); LED_G_Reset(); LED_B_Reset(); delay_ms(200); } } }
static void GetTime() { char time_str[32]; char week_str[]="星期一" "星期二" "星期三" "星期四" "星期五" "星期六" "星期日"; char g_weekstr[7]; typ_DATE_TIME g_time; memset(g_weekstr,0x00,7); DispStr_CE(0,10,"北京时间:",DISP_CENTER|DISP_NORMAL|DISP_CLRSCR); RTC_Get_DateTime(&g_time); memcpy(g_weekstr,week_str+(g_time.week-1)*6,6); DispStr_CE(0,22,g_weekstr,DISP_CENTER|DISP_NORMAL|DISP_CLRLINE); while(1) { RTC_Get_DateTime(&g_time); //memset(time_str,0x00,20); sprintf(time_str," %d-%d-%d %02d:%02d:%02d ",g_time.year,g_time.month,g_time.day,g_time.hour,g_time.min,g_time.sec); DispStr_CE(0,16,time_str,DISP_CENTER|DISP_NORMAL); if(KEY_Read()==KEY_F1) { return ; } } }
/* 使用说明:为了得到该函数提供的功能,必须每10ms调用1次 功能描述:按键扫描,根据状态表的设置,返回当前按键状态 入口参数:无 出口参数:按键编号和按键种类,格式如下 D7 D6 D5 D4 D3 D2 D1 D0 M1 M0 K5 K4 K3 K2 K1 K0 M1:M0 表示按键类型, 01 普通 10 长按键 11 连发按键 K5:K0 按键编号 1~63, 总共可以支持2^6 - 1 = 63个按键 */ u8 KEY_Scan(void) { static enum KEY_ScanState KScan_CurrState = KSCAN_START; static u8 OldKey; static u8 KTimeCounter = 0; u8 rKeyCode = 0; // 0 for No key press u8 CurrKey = KEY_Read(); if( (CurrKey != 0) && (CurrKey == OldKey) ) { if(++KTimeCounter >= KEY_StateFsmTable[KScan_CurrState].KPressTime ) { KTimeCounter = 0; rKeyCode = KEY_StateFsmTable[KScan_CurrState].KPressType | CurrKey; KScan_CurrState = KEY_StateFsmTable[KScan_CurrState].KPressNext; } } else { // 抖动或新键 KScan_CurrState = KEY_StateFsmTable[KScan_CurrState].NoKeyNext; OldKey = CurrKey; } return rKeyCode; }
int main( void ) { bsp_gpio_init(); while (1) { LED_Toggle(); delay_ms(100); while (KEY_Read()) { LED_Toggle(); delay_ms(50); } } }
int main(void) { char main_str[10]; Disp_Init(DISP_INIT_ON);//显示初始化 ,打开显示 if(3000 > SYS_Read_Vol()) { DispStr_E(0,16,"电量过低",DISP_CENTER|DISP_NORMAL|DISP_CLRSCR); Sys_Delay_MS(1000); Sys_Power_Sleep(2); } ReadParameter();//参数初始化 Disp_Set_Color(SET_BACK_COLOR,G_BackColor);//背景设置 浅蓝 Disp_Set_Color(SET_CLEAR_COLOR,G_BackColor);//G_BackColor Disp_Set_Color(SET_FONT_COLOR,G_FontColor);//前景颜色 Disp_Set_Color(SET_SELECT_COLOR,G_ThemeColor);//主题颜色 Sys_Auto_Poweroff_Set((ushort)G_AutoSleep);//30秒自动关机 EL_Set_Timeout((ushort)G_AutoElClose);//背光灯自动关闭时间7秒 //WatchDog_Set(25); //设置看门狗 if(G_KeySound) { KEY_Init(KEY_AUTO_EL_ON|KEY_BEEP_KEY);//按键初始化 } else { KEY_Init(KEY_AUTO_EL_ON);//按键初始化 } //WriteParameter(E_PassWordAddr,sss,3); //WriteParameter(E_PassWordLenAddr,&ss,1); if(KEY_Read()==KEY_F2) { sprintf(main_str,"%s",G_PassWord); DispStr_CE(0,4,main_str,DISP_CENTER|DISP_NORMAL|DISP_CLRSCR); delay_and_wait_key (1,EXIT_KEY_F1,120); } if(G_PassWordStatus) { RunPassWord(); } Disp_Icon_Battery_Time_Set(1,ICON_AT_TAIL); CWiFi_SetMSGCallBack((WiFiMSG_CALLBACK)WiFi_MsgDisplay);//设置回调函数 Open_WifiModel(); Sys_main(); return 1; }
char sendRecords(char* data_buffer, int bufferMax) { unsigned char* pdBuffer = data_buffer; //每次上传数据指针 unsigned char send_buffer[1024] = {0}; //每次上传数据数组 unsigned long db_cnt = 0; //数据库记录数 unsigned short send_cnt = 0; //上传次数 unsigned int send_length = 0; //上传数组长度(每次上传最多1000) db_cnt = DB_count_records(0); //返回数据库已记录的条数(包括已删除) if (!db_cnt) { return -1; } db_to_str(data_buffer, bufferMax, db_cnt); //数据库记录变字符串 send_length = db_cnt*sizeof(USER_INFO); //要发送的数据长度 send_cnt = send_length/MAX_SEND_BUFFER; //要发送数据的次数,每次最多发送1000字节 if (send_cnt%MAX_SEND_BUFFER) { send_cnt++; } while (send_cnt) { memcpy(send_buffer, pdBuffer, MAX_SEND_BUFFER); if (NaNo_OK == CWiFi_Write(g_HandleID,/*send_buffer,strlen(send_buffer)+1*/ "abcdefg", 8)) { //注:长度必须多一字符 send_cnt--; pdBuffer += MAX_SEND_BUFFER; memset(send_buffer, 0x00, 1024); } else { return -2; } if( KEY_F1 == KEY_Read()) { //按F1退出 return -3; break; } Sys_Delay_MS(100); //延时100毫秒 } return 0; }
static void ResetPlant() { uchar tempstruchar[16]; uchar tempuchar; int ret; int tempret; typ_DATE_TIME time; DispStr_CE(0,8,"确认要恢复出厂设置吗?",DISP_CENTER|DISP_NORMAL|DISP_CLRSCR); Sys_Delay_MS(300); DispStr_CE(0,12,"确认请按回车 取消请按F1",DISP_CENTER|DISP_NORMAL); Sys_Delay_MS(300); DispStr_CE(0,16,"(注意:恢复出厂设置后",DISP_CENTER|DISP_NORMAL); DispStr_CE(0,18,"保存数据将丢失!)",DISP_CENTER|DISP_NORMAL); while(1) { if(KEY_Read()==KEY_F1) { DispStr_CE(0,12,"已取消恢复出厂设置!",DISP_CENTER|DISP_NORMAL|DISP_CLRSCR); WaringBeep(ERR_WARNING_BEEP); delay_and_wait_key (DISP_ESC_DELAY_TIME,EXIT_KEY_F1,120); return; } if(KEY_Read()==KEY_ENTER) { break; } } /****************************************************/ memset(tempstruchar,0x00,16); ret=WriteParameter(E_FontColorAddr,tempstruchar,2);//前景颜色为黑色 memset(tempstruchar,0xff,2); ret|=WriteParameter(E_BackColorAddr,tempstruchar,2);//背景颜色为白色 tempstruchar[0]=0x04; tempstruchar[1]=0x00; ret|=WriteParameter(E_ThemeColorAddr,tempstruchar,2); /*****************************************************/ tempuchar=0; ret|=WriteParameter(E_LocalSiteAddr,&tempuchar,1); /*****************************************************/ time.year=2000; time.month=1; time.day=1; time.hour=0; time.min=0; time.sec=0; time.week=(uchar)RTC_get_week(2000,1,1); RTC_Set_DateTime(&time); /******************************************************/ tempuchar=0; ret|=WriteParameter(E_AutoSleepAddr,&tempuchar,1); tempuchar=60; Sys_Auto_Poweroff_Set((ushort)tempuchar); ret|=WriteParameter(E_AutoSleepAddr+1,&tempuchar,1); /******************************************************/ tempuchar=10; EL_Set_Timeout((ushort)tempuchar); ret|=WriteParameter(E_AutoElCloseAddr,&tempuchar,1); /******************************************************/ tempuchar=0; tempret=WriteParameter(E_PassWordStatusAddr,&tempuchar,1); ret|=tempret; if(!tempret) { G_PassWordStatus=tempuchar; } /******************************************************/ tempuchar=3; tempret=WriteParameter(E_PassWordLenAddr,&tempuchar,1); ret|=tempret; if(!tempret) { G_PassWordLen=tempuchar; } /******************************************************/ memcpy(tempstruchar,"123",3); tempret=WriteParameter(E_PassWordAddr,tempstruchar,3); ret|=tempret; if(!tempret) { memcpy(G_PassWord,tempstruchar,3); } /******************************************************/ memcpy(tempstruchar,"521",3); tempuchar=3; tempret=WriteParameter(E_SsidAddr,tempstruchar,3); ret|=tempret; if(!tempret) { memcpy(G_Ssid,tempstruchar,3); } tempret=WriteParameter(E_SsidLenAddr,&tempuchar,1); ret|=tempret; if(!tempret) { G_SsidLen=3; } /*****************************************************/ memcpy(tempstruchar,"12345678",8); tempuchar=8; tempret=WriteParameter(E_PskAddr,tempstruchar,8); ret|=tempret; if(!tempret) { memcpy(G_Psk,tempstruchar,8); } tempret=WriteParameter(E_PskLenAddr,&tempuchar,1); ret|=tempret; if(!tempret) { G_PskLen=8; } /******************************************************/ tempuchar=0; tempret=WriteParameter(E_ChidAddr,&tempuchar,1); ret|=tempret; if(!tempret) { G_Changle=0; } /******************************************************/ tempuchar=13; tempret=WriteParameter(E_TransRateAddr,&tempuchar,1); ret|=tempret; if(!tempret) { G_TransRate=13; } /******************************************************/ memcpy(tempstruchar,"192.168.1.125",13); tempuchar=13; tempret=WriteParameter(E_IpAddr,tempstruchar,13); ret|=tempret; if(!tempret) { memcpy(G_AddrIP,tempstruchar,13); } tempret=WriteParameter(E_IpLenAddr,&tempuchar,1); ret|=tempret; if(!tempret) { G_AddrIPLen=13; } /******************************************************/ memcpy(tempstruchar,"192.168.1.1",11); tempuchar=11; tempret=WriteParameter(E_GateWayAddr,tempstruchar,11); ret|=tempret; if(!tempret) { memcpy(G_GateWay,tempstruchar,11); } tempret=WriteParameter(E_GateWayLenAddr,&tempuchar,1); ret|=tempret; if(!tempret) { G_GateWayLen=11; } /******************************************************/ memcpy(tempstruchar,"255.255.255.0",13); tempuchar=13; tempret=WriteParameter(E_NetMaskAddr,tempstruchar,13); ret|=tempret; if(!tempret) { memcpy(G_NetMask,tempstruchar,13); } tempret=WriteParameter(E_NetMaskLenAddr,&tempuchar,1); ret|=tempret; if(!tempret) { G_NetMaskLen=13; } /******************************************************/ memcpy(tempstruchar,"192.168.1.100",13); tempuchar=13; tempret=WriteParameter(E_ServerIpAddr,tempstruchar,13); ret|=tempret; if(!tempret) { memcpy(G_ServerIp,tempstruchar,13); } tempret=WriteParameter(E_ServerIpLenAddr,&tempuchar,1); ret|=tempret; if(!tempret) { G_ServerIpLen=13; } /******************************************************/ memcpy(tempstruchar,"9000",4); tempuchar=4; tempret=WriteParameter(E_ServerPortAddr,tempstruchar,4); ret|=tempret; if(!tempret) { memcpy(G_ServerPort,tempstruchar,4); } tempret=WriteParameter(E_ServerPortLenAddr,&tempuchar,1); ret|=tempret; if(!tempret) { G_ServerPortLen=4; } if(ret) { DispStr_CE(0,10,"恢复出厂设置时出现错误",DISP_CENTER|DISP_NORMAL|DISP_CLRSCR); WaringBeep(ERR_WARNING_BEEP); delay_and_wait_key (DISP_OK_DELAY_TIME,EXIT_KEY_F1,120); } else { DispStr_CE(0,10,"恢复出厂设置成功",DISP_CENTER|DISP_NORMAL|DISP_CLRSCR); delay_and_wait_key (DISP_OK_DELAY_TIME,EXIT_KEY_F1,120); WaringBeep(OK_WARNING_BEEP); } return ; /*****************************************************/ }
/*********************************************************************** module : [WIFI] function : [发送数据] return : [无] comment : [全局普通函数] machine : [EH-0818] language : [CHN] keyword : [WIFI] date : [11/07/27] author : [chen-zhengkai] ************************************************************************/ void sendRecords() { char retStr[20] = {0}; char temp[20] = {0}; int templen = 0; //unsigned char data_buffer[1000] = {0}; //要传送的数据 unsigned char aBuffer[200] = {0}; unsigned char rb8583[50] = {0}; unsigned char send_buf[200] = {0}; //每次上传数据数组 int send_len = 0; //unsigned char* pdBuffer = NULL; //每次上传数据指针 USER_INFO* pinfo = NULL; char infotemp[10] = {0}; unsigned long db_cnt = 0; //数据库记录数 unsigned short send_cnt = 0; //上传次数 char* pTemp = NULL; char rec_flag = 0; strcpy(retStr, "数据上传成功"); db_cnt = DB_count_records(0); //返回数据库已记录的条数(包括已删除) if (!db_cnt) { strcpy(retStr, "数据库无记录"); } else { DispStr_CE(0,6,"连接上传中",DISP_CENTER|DISP_CLRSCR); DispStr_CE(0,8,"请耐心等待",DISP_CENTER); DispStr_CE(0,10,"按F1退出...",DISP_CENTER); // for (send_cnt = 0; send_cnt < db_cnt; send_cnt++) { pinfo = (USER_INFO*)DB_jump_to_record(ATTENDANCE_INDEX, send_cnt, &rec_flag); if (rec_flag) { //记录被删除 // continue; } dec2hex(pinfo->phyNo, 4, infotemp); memcpy(rb8583, infotemp, 8); //物理卡号 memcpy(rb8583+8, pinfo->time, 16); //考勤时间 atd_pack(aBuffer, rb8583, 24); hex2dec(aBuffer, 58, (unsigned char*)send_buf, &send_len); //send_len = 58; #if 0 if (NaNo_OK != CWiFi_Write(g_pHandle[0], send_buf, send_len+1) ){ //注:长度必须多一字符 strcpy(retStr, "数据上传失败"); break; } #else char tempBuf[300] = {0}; //memcpy(tempBuf, "008A600031000008000038000001C00010000001090931201104084444444444444444444431323334353630303031393930323130333131343030313030303139390072A00000000386980701202020202020203030303030303030303030303030303030303030303030303030303030304646303130303030303130312020202020203030303030303030", sizeof("008A600031000008000038000001C00010000001090931201104084444444444444444444431323334353630303031393930323130333131343030313030303139390072A00000000386980701202020202020203030303030303030303030303030303030303030303030303030303030304646303130303030303130312020202020203030303030303030")); memcpy(tempBuf, "ABCDEFGHIJK", 11); int m = strlen(tempBuf); //hex2dec(tempBuf, strlen(tempBuf), (unsigned char*)send_buf, &m); if (NaNo_OK != CWiFi_Write(g_pHandle[0], tempBuf, 11+1) ){ //注:长度必须多一字符 strcpy(retStr, "数据上传失败"); // break; } #endif if( KEY_F1 == KEY_Read()) { strcpy(retStr, "数据上传中断"); // break; } Sys_Delay_MS(100); //延时100毫秒 // } } DispStr_CE(0,6,retStr,DISP_CENTER|DISP_CLRSCR); DispStr_CE(0,8,"按任意键返回",DISP_CENTER); delay_and_wait_key( 3, EXIT_KEY_ALL, 0 ); }