void SetSysParam(void) //F0 { static WORD Day; static BYTE Hour; if (SmsLength == 2) { ReportSysParam(); return; } if (CheckParamF0()) { // 汇报电话号码 mcpy((BYTE*)&SysParam[SP_MOBLENUM],&SmsContent[3],11); SysParam[SP_MOBLENUM+11] = 0; Day = GetRepDay(); Hour = GetRepHour(); // 时间间隔 *(WORD *)&SysParam[SP_DAYDELTA] = Day; SysParam[SP_REPTIME] = Hour; SetNextPepTime(); SaveSysParam(); NoCenter = 0; mcpy(&SmsContent[SmsLength],"(Ok)\r\n",6); SmsLength += 6; if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } } else { Clear_Sms_Content(); mcpy(SmsContent, "F0:Param Error! e.g. F0:13988888888,1234-08",43); SmsLength = 43; if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } } }
void Check_HFConst(uint *pBuf,BYTE len ,BYTE channel) { uint temp; temp = MeanValue(pBuf, len); *(WORD *)&SysParam[SP_RNHFCONST+2*channel] = *(WORD *)&SysParam[SP_RNHFCONST+2*channel]*temp/32; spiWrite(channel, HFCONST, *(WORD *)&SysParam[SP_RNHFCONST+2*channel], WIDTH_TWO_B); SaveSysParam(); }
void taskRnIsr(void *pmsg) { BYTE err; uint IFData=0; uint PData=0; uint channel; // static BYTE flag[9]={0}; printf ( "\r\nIsr task begin..." ); while(1) { OSSemPend(RNSemIsr,0,&err); //printf("insert isr\n"); for(channel=0;channel<9;channel++) { spiRead(channel, RIF, &IFData, WIDTH_ONE_B); if(IFData & RN_RPEOIF)//溢出中断 { printf("overflow\n"); SysParam[SP_PEOIF_COUNT+channel]++;//记录每个通道电能寄存器溢出次数 SaveSysParam(); //Read_FM24C(FM_address, OVERFLOW_COUNT+channel,&temp[0], 1); //temp[0]++; //Write_FM24C(FM_address, OVERFLOW_COUNT+channel,&temp[0], 1); spiRead(channel, ENERGYP2, &PData, WIDTH_THREE_B);//CLEAR ENERGYP2 PData = 0x00; Write_FM24C(FM_address, A_EEAddr+channel*3,(BYTE *)&PData, 3); } if(IFData & RN_RPFIF)//PF脉冲 { printf("PF%d\n",channel); pfcount[channel]++; if( pfcount[channel]==32) { pfcount[channel]=0; spiRead(channel, ENERGYP2, &PData, WIDTH_THREE_B); Read_FM24C(FM_address, A_EEAddr+channel*3, (BYTE*)&IFData, 3); PData +=IFData; printf("energyp%d=%d\n",channel,PData); //将读出的电能值存入铁电 Write_FM24C(FM_address, A_EEAddr+channel*3, (BYTE*)&PData, 3); } } } //channelSelect(0); } }
// F6 服务器域名 void SetHostName(void) { static BYTE j; if (SmsLength-3 < 32) { for (j=SP_HOSTNAME;j<SP_HOSTNAME+32;j++) { SysParam[j] = 0; } j = 0; for (j=0;j<SmsLength-3;j++) { SysParam[j+SP_HOSTNAME] = SmsContent[j+3]; } //mcpy(&SysParam[SP_HOSTNAME],&SmsContent[3],SmsLength-3); SaveSysParam(); mcpy(&SmsContent[SmsLength],"(Ok)\r\n",6); SmsLength += 6; } else { mcpy(&SmsContent[SmsLength],"(Fail)\r\n",8); SmsLength += 8; } if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } }
void SetUserInfo() { static BYTE i,j; if (SmsLength-3 < 65) { j = 0; while(SmsContent[j+3] != ';') { j++; if (j > SmsLength-3) { goto Fail2; // 没有发现";"者返回错误 } } for (j=SP_NETUSERNAME;j<SP_NETUSERNAME+32;j++) { SysParam[j] = 0; } for (j=SP_NETPASSWORD;j<SP_NETPASSWORD+32;j++) { SysParam[j] = 0; } j = 0; while(SmsContent[j+3] != ';') { SysParam[j+SP_NETUSERNAME] = SmsContent[j+3]; j++; if (j > SmsLength-3) { goto Fail2; } } j++; i = 0; for (;j<SmsLength-3;j++) { SysParam[i+SP_NETPASSWORD] = SmsContent[j+3]; i++; } SaveSysParam(); if ((SmsLength + 6) > SMSMSGCOUNT) { SmsLength -= 6; } mcpy(&SmsContent[SmsLength],"(Ok)\r\n",6); SmsLength += 6; //Send_Pdu_SMS(); //Send_Txt_SMS(SmsNumber, SmsContent); if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } SysReset(); } Fail2: { if ((SmsLength + 8) > SMSMSGCOUNT) { SmsLength -= 8; } mcpy(&SmsContent[SmsLength],"(Fail)\r\n",8); SmsLength += 8; //Send_Pdu_SMS(); //Send_Txt_SMS(SmsNumber, SmsContent); if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } } }
//短信唤醒并发送注册命令 void SmsWakeup(void) { static BYTE i,loc; i = 0; while(i<SmsLength) { if (SmsContent[i] == ',') { break; } i++; } if (i>=SmsLength) { goto Fail; } mset(IpAddrStr,0,16); mset(PortStr,0,6); mcpy(IpAddrStr,&SmsContent[3],i-3); // Server Ip Address if (!CheckValidIpAddr()) { goto Fail; } if (!StrToIpAdd((BYTE*)&SysParam[SP_SERVERIP])) { goto Fail; } loc = i; mcpy(PortStr,&SmsContent[loc+1],SmsLength-loc-1); // Server Port if (!CheckValidPort()) { goto Fail; } if (!StrToPort((BYTE*)&SysParam[SP_SERVERPORT])) { goto Fail; } SaveSysParam(); NeedConnSrv = 1; return; Fail: NeedConnSrv = 0; mcpy(&SmsContent[SmsLength],"(Fail)\r\n",8); SmsLength += 8; if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } }
//F7: 系统配置-- 系统复位,启动/关闭HTTP, 恢复默认参数,SOCKET使能[可选],IP地址模式 // CDMA暂时不支持HTTP方式 void SysConfig(void) // F7:0[,0,0,0,0] { static BYTE NeedReboot; // 至少一个参数 // check Param if (SmsLength < 4) { goto Error; } if ((SmsContent[3] != '0') && (SmsContent[3] != '1')) { goto Error; } if (SmsLength >= 6) { if ((SmsContent[5] != '0') && (SmsContent[5] != '1')) { goto Error; } } if (SmsLength >= 8) { if ((SmsContent[7] != '0') && (SmsContent[7] != '1')) { goto Error; } } if (SmsLength >= 10) { if ((SmsContent[9] != '0') && (SmsContent[9] != '1')) { goto Error; } } if (SmsLength >= 12) { if ((SmsContent[11] != '1') && (SmsContent[11] != '2') && (SmsContent[11] != '3')) { goto Error; } } NeedReboot = 0; //恢复默认参数 if (SmsLength >= 8) { if (SmsContent[7] == '1') { setParamToDefault(); NeedReboot = 1; } } //HTTP mode -- 该参数变了要重启 if (SmsLength >= 6) { if (SysParam[SP_ENABLEHTTP] != (SmsContent[5] - 0x30)) { NeedReboot = 1; } if (SmsContent[5] == '0') { SysParam[SP_ENABLEHTTP] = 0; } else if (SmsContent[5] == '1') { SysParam[SP_ENABLEHTTP] = 1; } } //是否启动南京高兴模式 Socket Mode -- 该参数变了要重启 if (SmsLength >= 10) { if (SysParam[SP_ENABLESOCKET] != (SmsContent[9] - 0x30)) { NeedReboot = 1; } if (SmsContent[9] == '1') { SysParam[SP_ENABLESOCKET] = 1; } else if (SmsContent[9] == '0') { SysParam[SP_ENABLESOCKET] = 0; } } //IP地址模式 -- 该参数变了要重启 if (SmsLength >= 12) { if (SysParam[SP_DEVIPMODE] != (SmsContent[11] - 0x30)) { NeedReboot = 1; } if (SmsContent[11] == '1') { SysParam[SP_DEVIPMODE] = IPMODE_FIXED; } else if (SmsContent[11] == '2') { SysParam[SP_DEVIPMODE] = IPMODE_DHCP; } else if (SmsContent[11] == '3') { SysParam[SP_DEVIPMODE] = IPMODE_PPPOE; } } SaveSysParam(); if (SmsContent[3] == '1') { NeedReboot = 1; } mcpy(&SmsContent[SmsLength],"(Ok)\r\n",6); SmsLength += 6; if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } Sleep(2000); //WDog(); Sleep(3000); //WDog(); //系统复位 if (NeedReboot == 1) { printf("Sys Resetting...\r\n"); SysReset(); } return; Error: Clear_Sms_Content(); mcpy(&SmsContent[0],"F7:Param Error. e.g. F7:0,0,0\r\n",31); SmsLength = 31; if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } }
// F6 设置串口参数: 波特率,校验(只支持8位数据位和1位停止位,无需设置) // 150,300,600,1200,2400,4800,9600,19200,38400,57600, 115200 // E(偶校验),O(奇校验) // 如9600E(波特率9600,偶校验); 1200(波特率1200,无校验) void SetUartParam(void) { static BYTE ChkBit,BaudRt,BaudLen; static BYTE NeedReboot; if (SmsContent[SmsLength-1] != '0') { if (SmsContent[SmsLength-1] == 'E') { ChkBit = CHECK_EVEN; } else if (SmsContent[SmsLength-1] == 'O') { ChkBit = CHECK_ODD; } else { ChkBit = 0xFF; } BaudLen = SmsLength - 4; } else { ChkBit = CHECK_NONE; BaudLen = SmsLength - 3; } if (BaudLen == 3) { if (mcmp(&SmsContent[3], "150", BaudLen)) { BaudRt = BAUDRATE_150; } else if (mcmp(&SmsContent[3], "300", BaudLen)) { BaudRt = BAUDRATE_300; } else if (mcmp(&SmsContent[3], "600", BaudLen)) { BaudRt = BAUDRATE_600; } else { BaudRt = 0xFF; } } else if (BaudLen == 4) { if (mcmp(&SmsContent[3], "1200", BaudLen)) { BaudRt = BAUDRATE_1200; } else if (mcmp(&SmsContent[3], "2400", BaudLen)) { BaudRt = BAUDRATE_2400; } else if (mcmp(&SmsContent[3], "4800", BaudLen)) { BaudRt = BAUDRATE_4800; } else if (mcmp(&SmsContent[3], "9600", BaudLen)) { BaudRt = BAUDRATE_9600; } else { BaudRt = 0xFF; } } else if (BaudLen == 5) { if (mcmp(&SmsContent[3], "19200", BaudLen)) { BaudRt = BAUDRATE_19200; } else if (mcmp(&SmsContent[3], "38400", BaudLen)) { BaudRt = BAUDRATE_38400; } else if (mcmp(&SmsContent[3], "57600", BaudLen)) { BaudRt = BAUDRATE_57600; } else { BaudRt = 0xFF; } } else if (BaudLen == 6) { if (mcmp(&SmsContent[3], "115200", BaudLen)) { BaudRt = BAUDRATE_115200; } else { BaudRt = 0xFF; } } else { BaudRt = 0xFF; } if ((BaudRt != 0xFF) && (ChkBit != 0xFF)) { SysParam[SP_CHECKBIT] = ChkBit; SysParam[SP_BAUDRATE] = BaudRt; SaveSysParam(); mcpy(&SmsContent[SmsLength],"(Ok)\r\n",6); SmsLength += 6; NeedReboot = 1; } else { mcpy(&SmsContent[SmsLength],"(Fail)\r\n",8); SmsLength += 8; NeedReboot = 0; } if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } Sleep(2000); //WDog(); Sleep(3000); //WDog(); if (NeedReboot) { SysReset(); } }
void SetDeviceParam(void) //F5:0,1 { if (SmsLength < 4) { Clear_Sms_Content(); mcpy(&SmsContent[0],"F5:Param Error. e.g. F5:0[,1]\r\n",31); SmsLength = 31; if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } return; } if (SmsLength > 5) { if ((SmsContent[5] != '0') && (SmsContent[5] != '1')) { Clear_Sms_Content(); mcpy(&SmsContent[0],"F5:Param Error. e.g. F5:0[,1]\r\n",31); SmsLength = 31; if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } return; } else { SysParam[SP_DEVICETAP] = SmsContent[5] - 0x30; } } else { SysParam[SP_DEVICETAP] = 0; } if ((SmsContent[3] != '0') && (SmsContent[3] != '1')) { Clear_Sms_Content(); mcpy(&SmsContent[0],"F5:Param Error. e.g. F5:0[,1]\r\n",31); SmsLength = 31; if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } return; } else { SysParam[SP_DEVICECTL] = SmsContent[3] - 0x30; } SaveSysParam(); mcpy(&SmsContent[SmsLength],"(Ok)\r\n",6); SmsLength += 6; if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } }
void FirstRunProc(const ST_EVENT_MSG *pstEventMsg) { uchar szEngTime[16+1]; uchar ucNeedUpdateParam; // Added by Kim_LinHB 2014-7-2 if(!bInitGui_1) { unsigned char sTermInfo[60]; int iDefWidth = XuiStatusbarCanvas()->width/6; int iDefHeight = XuiStatusbarCanvas()->height; _GUI_INIT_(NULL); //default OsLog(LOG_ERROR, "it's a %dx%d device", Gui_GetScrWidth(), Gui_GetScrHeight()); char szWidthStr[10]; sprintf(szWidthStr, "%dx", Gui_GetScrWidth()); int i; SetPrefixResPath(glResources[0].path); UpdateGlobalFont(glResources[0].fontSize); for(i = 1; glResources[i].path[0] != 0; ++i){ if(strstr(glResources[i].path, szWidthStr)){ SetPrefixResPath(glResources[i].path); UpdateGlobalFont(glResources[i].fontSize); break; } } Gui_SetBgImage(AddPrefixResPath("background.png")); Gui_SetGlobalBtnImg(AddPrefixResPath("button_normal.png"), AddPrefixResPath("button_pressed.png")); char szTemp[32]; if(OsRegGetValue("ro.fac.touchscreen", szTemp) > 0) { PreLoadAllKeyboard(); //EPT-20 } Gui_SB_BindResource(XuiStatusbarCanvas(), "./res/icons.ini"); Gui_SB_RegIcon(GUI_SB_ICON_BATTERY, iDefWidth * 5, 0, iDefWidth, iDefHeight, 500); Gui_SB_RegIcon(GUI_SB_ICON_UP_DOWN, iDefWidth * 4, 0, iDefWidth, iDefHeight, -1); Gui_RegCallback(GUI_CALLBACK_UPDATE_UPDOWN_ICON, Refresh_UpDown); Gui_SB_RegIcon(GUI_SB_ICON_CARDINSERTED, iDefWidth * 3, 0, iDefWidth, iDefHeight, 200); if (OsRegGetValue("ro.fac.printer", sTermInfo) > 0) Gui_SB_RegIcon(GUI_SB_ICON_PRINTER, iDefWidth * 2, 0, iDefWidth, iDefHeight, -1); bInitGui_1 = 1; } // Modified by Kim_LinHB 2014-7-2 if( ExistSysFiles() ) { if (ValidSysFiles()) { int i; uchar *pType = NULL; LoadSysParam(); LoadSysCtrlAll(); if(!bInitGui_2) { //update language _GUI_INIT_(glSysParam.stEdcInfo.stLangCfg.szFilePath); ChangeLangOrder(); for(i = 0; i < 2; ++i) { pType = (0 == i? &glSysParam.stTxnCommCfg.ucCommType: &glSysParam.stTxnCommCfg.ucCommTypeBak); Reg_CommIcon(*pType, i); } bInitGui_2 = 1; } ucNeedUpdateParam = FALSE; if (pstEventMsg->MsgType==USER_MSG) { if (UpdateTermInfo() || InitMultiAppInfo()) { ucNeedUpdateParam = TRUE; } } if( glSysParam.stTxnCommCfg.pfUpdWaitUI!=DispWaitRspStatus ) { glSysParam.stTxnCommCfg.pfUpdWaitUI = DispWaitRspStatus; glSysParam.stTMSCommCfg.pfUpdWaitUI = DispWaitRspStatus; ucNeedUpdateParam = TRUE; } if (ucNeedUpdateParam) { SaveSysParam(); } return; } // if (ValidSysFiles()) else { int iRet; Gui_ClearScr(); iRet = Gui_ShowMsgBox(NULL, gl_stTitleAttr, NULL, _T("APP AND DATA\nINCONSIST.\nRESET CONFIG?"), gl_stCenterAttr, GUI_BUTTON_YandN, -1, NULL); if (iRet != GUI_OK) { SysHaltInfo("PLS REPLACE APP"); } Gui_ClearScr(); iRet = Gui_ShowMsgBox(NULL, gl_stTitleAttr, NULL, _T("WARNING\nDATA WILL BE CLEAR\nCONTINUE ?"), gl_stCenterAttr, GUI_BUTTON_YandN, -1, NULL); if (iRet != GUI_OK) { SysHaltInfo("PLS REPLACE APP"); } RemoveSysFiles(); } } // if( ExistSysFiles() ) GetEngTime(szEngTime); Gui_ClearScr(); Gui_ShowMsgBox(szEngTime, gl_stTitleAttr, NULL, _T("PLEASE WAIT...\nSYSTEM INIT..."), gl_stCenterAttr, GUI_BUTTON_NONE, 0, NULL); LoadEdcDefault(); // set EDC default values Gui_ClearScr(); Gui_ShowMsgBox(szEngTime, gl_stTitleAttr, NULL, _T("PLEASE WAIT...\nSYSTEM FILE UPDATE..."), gl_stCenterAttr, GUI_BUTTON_NONE, 0, NULL); InitTranLogFile(); // Init transaction log file NoDownloadInit(); #ifdef ENABLE_EMV LoadEmvDefault(); // Init EMV kernel #endif }
//方式二:跟标准表对照 //EBuf被校表电能寄存器的值,datE对照表的电能值,以0.01KWh为单位,比如0.05KWh,则datE为5 void Check_HFConst2(uint EBuf, uint datE,BYTE channel) { *(WORD *)&SysParam[SP_RNHFCONST+2*channel] = EBuf * (*(WORD *)&SysParam[SP_RNHFCONST+2*channel])/(320*datE); spiWrite(channel, HFCONST, *(WORD *)&SysParam[SP_RNHFCONST+2*channel], WIDTH_TWO_B); SaveSysParam(); }