void __fastcall TForm1::NMFTP1ConnectionFailed(TObject *Sender) { Memo2->Lines->Insert(0,Now().TimeString()+" 连接FTP服务器失败"); BitBtn3->Enabled=true; }
void __fastcall TForm1::NMFTP1Connect(TObject *Sender) { //ShowMessage("连接成功"); Memo2->Lines->Insert(0,Now().TimeString()+" 连接FTP成功。"); BitBtn3->Enabled=false; BitBtn4->Enabled=true; Memo2->Lines->Insert(0,Now().TimeString()+" 开始生成接驳文件。"); AnsiString DateChoose = "dt>'"+DateTimePicker1->Date.DateString()+" 00:00:00' and dt<'"+DateTimePicker1->Date.DateString()+" 23:59:59'"; // ShowMessage(DateChoose); AnsiString sqlstr = "select * from TicketPay where 1=1 and "+DateChoose ; //ADOConnection1->Connected = true; ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(sqlstr); ADOQuery1->Open(); //ADOQuery1->Active =true; //Edit1->Text = IntToStr(ADOQuery1->RecordCount); //Memo1->Clear(); if(ADOQuery1->RecordCount==0) { Memo2->Lines->Insert(0,Now().TimeString()+" 所选日期无接驳记录,请确认是否已进行当日结算,上传终止。"); NMFTP1->Disconnect(); return; } AnsiString InsertString; Form2->Memo1->Lines->Clear(); AnsiString date1,date2,formati,pay_value; int i=0,p=0; for(ADOQuery1->First();!ADOQuery1->Eof;ADOQuery1->Next()) { //ShowMessage(ADOQuery1->FieldByName("dt")->AsString); //InsertString=ADOQuery1->FieldValues['dt']; InsertString=ADOQuery1->FieldByName("dt")->AsString; pay_value=ADOQuery1->FieldByName("pay_value")->AsString; //ShowMessage(InsertString); date1 = FormatDateTime("yyyy",InsertString)+"/"+FormatDateTime("mm",InsertString)+"/"+FormatDateTime("dd",InsertString); date2 = FormatDateTime("hhmm",InsertString); //rmati=Format("%010d",ARRAYOFCONST(i)); i++; //ShowMessage(10-IntToStr(i).Length()); int p=10-IntToStr(i).Length(); formati=IntToStr(i); for(p;p>0;p=p-1) { formati="0"+formati; //ShowMessage(formati); } Form2->Memo1->Lines->Add(Edit2->Text+"\t"+Edit3->Text+"\t"+date1+"\t"+date2+"\t"+formati+"\t"+Edit2->Text+"01"+"\t\t"+pay_value+"\t"+"0.00\t0.00\t0.00\t0.00\t"+pay_value); // ADOQuery1->Next(); } Form2->Memo1->Lines->SaveToFile("temp.txt"); if(FileExists("temp.txt")) { Memo2->Lines->Insert(0,Now().TimeString()+" 接驳临时文件生成成功。"); } else { Memo2->Lines->Insert(0,Now().TimeString()+" 接驳临时文件生成失败,上传终止。"); NMFTP1->Disconnect(); return; } AnsiString InsertString2= DateTimePicker1->Date.DateString(); AnsiString datelist = FormatDateTime("yyyy",InsertString2)+FormatDateTime("mm",InsertString2)+FormatDateTime("dd",InsertString2); AnsiString FileName=Edit2->Text+ datelist +".txt"; Memo2->Lines->Insert(0,Now().TimeString()+" 开始上传文件。"); NMFTP1->Upload("temp.txt",FileName); Memo2->Lines->Insert(0,Now().TimeString()+" 清理临时文件。"); DeleteFile("temp.txt"); if(!FileExists("temp.txt")) Memo2->Lines->Insert(0,Now().TimeString()+" 成功清理临时文件。"); else Memo2->Lines->Insert(0,Now().TimeString()+" 清理临时文件失败,请执行手动删除。"); NMFTP1->Disconnect(); }
void __fastcall TForm1::Timer1Timer(TObject *Sender) { StatusBar1->Panels->Items[1]->Text = Now(); }
bool cTimeMs::TimedOut(void) { return Now() >= begin; }
uint64_t cTimeMs::Elapsed(void) { return Now() - begin; }
void ClimatologyDialog::OnNow( wxCommandEvent& event ) { Now(); RefreshRedraw(); }
void cTimeMs::Set(int Ms) { begin = Now() + Ms; }
/** * Read the elapsed time since creation of the stop watch, in * microseconds. */ uint64_t ReadTimerMicro() { return (Now() - start_time_).total_microseconds(); }
void __fastcall TBatchCollectDataThread::AnalyzeDataFunc() { int recordNUM = (int)receivebuf[7]*256+(int)receivebuf[8]; if((recordNUM<128)&&(recordNUM>0)&&(0x20 == receivebuf[0])&&(0x03 == receivebuf[1]) &&(DWPassword[0] == receivebuf[2])&&(DWPassword[1] == receivebuf[3]) &&(PosNumber == ((int)receivebuf[12]*256+(int)receivebuf[5])) &&(0x23 == receivebuf[4])) { //分析数据 String insqlstr = ""; String AddinPosinsqlstr = ""; String Watersqlstr = ""; String Errorinsqlstr = ""; int PosNumber = (int)receivebuf[12]*256+(int)receivebuf[5]; int RecordIndexPos; int tmpKH; int tmpXFCS; double tmpYE; double tmpXFJE; String tmpDATESTR; String tmpXFLX; String tmpSQLSTR; unsigned char instr[4]; unsigned char outstr[6]; ZeroMemory(instr, 4); ZeroMemory(outstr, 6); String updatetimestr = DateTimeToStr(Now()); for (int i = 0; i < (int)receivebuf[8]; i++) { RecordIndexPos = 14 + i*16; tmpKH = (int)receivebuf[RecordIndexPos]*256*256 + (int)receivebuf[RecordIndexPos+1]*256 + (int)receivebuf[RecordIndexPos+2]; tmpXFCS = (int)receivebuf[RecordIndexPos+3]*256+(int)receivebuf[RecordIndexPos+4]; tmpYE = ((double)receivebuf[RecordIndexPos+5]*256*256+(double)receivebuf[RecordIndexPos+6]*256+(double)receivebuf[RecordIndexPos+7])/100; tmpXFJE = ((double)receivebuf[RecordIndexPos+8]*256*256+(double)receivebuf[RecordIndexPos+9]*256+(double)receivebuf[RecordIndexPos+10])/100; instr[0] = receivebuf[RecordIndexPos+11]; instr[1] = receivebuf[RecordIndexPos+12]; instr[2] = receivebuf[RecordIndexPos+13]; instr[3] = receivebuf[RecordIndexPos+14]; if(GetnormaldateFunc) { //这里进行时间判断 if(0 != GetnormaldateFunc(instr, outstr)) { /* outstr[0] = '0'; outstr[1] = '1'; outstr[2] = '1'; outstr[3] = '0'; outstr[4] = '0'; outstr[5] = '0'; */ tmpDATESTR = DateTimeToStr(Now()); } else { tmpDATESTR = "20"+IntToHex((int)outstr[0], 2)+"-"+ IntToHex((int)outstr[1], 2)+"-"+ IntToHex((int)outstr[2], 2)+" "+ IntToHex((int)outstr[3], 2)+":"+ IntToHex((int)outstr[4], 2)+":"+ IntToHex((int)outstr[5], 2); } } else { /* outstr[0] = '0'; outstr[1] = '1'; outstr[2] = '1'; outstr[3] = '0'; outstr[4] = '0'; outstr[5] = '0'; tmpDATESTR = "20"+IntToHex((int)outstr[0], 2)+"-"+ IntToHex((int)outstr[1], 2)+"-"+ IntToHex((int)outstr[2], 2)+" "+ IntToHex((int)outstr[3], 2)+":"+ IntToHex((int)outstr[4], 2)+":"+ IntToHex((int)outstr[5], 2); */ tmpDATESTR = DateTimeToStr(Now()); } String UpdateTime = updatetimestr; try { StrToDateTime(tmpDATESTR); } catch(...) { tmpDATESTR = DateTimeToStr(Now()); } if(StrToDateTime(tmpDATESTR)>Now()) { tmpDATESTR = DateTimeToStr(Now()); } else { TDateTime tmpdt = StrToDateTime(tmpDATESTR); tmpdt = IncYear(tmpdt, 1); if(tmpdt<Now()) { tmpDATESTR = DateTimeToStr(Now()); } } if(0 == receivebuf[RecordIndexPos+15]) tmpXFLX = "X"; else if(1 == receivebuf[RecordIndexPos+15]) tmpXFLX = "Y"; else if(2 == receivebuf[RecordIndexPos+15]) tmpXFLX = "B"; else if(3 == receivebuf[RecordIndexPos+15]) tmpXFLX = "I"; else if(4 == receivebuf[RecordIndexPos+15]) tmpXFLX = "L"; else if(5 == receivebuf[RecordIndexPos+15]) tmpXFLX = "M"; else if(6 == receivebuf[RecordIndexPos+15]) tmpXFLX = "O"; else if(7 == receivebuf[RecordIndexPos+15]) tmpXFLX = "P"; else if(250 == receivebuf[RecordIndexPos+15]) tmpXFLX = "Z"; else if(65 == receivebuf[RecordIndexPos+15]) //breakfast tmpXFLX = "S"; else if(66 == receivebuf[RecordIndexPos+15]) //lunch tmpXFLX = "D"; else if(67 == receivebuf[RecordIndexPos+15]) //supper tmpXFLX = "F"; else if(68 == receivebuf[RecordIndexPos+15]) //night tmpXFLX = "G"; else if(249 == receivebuf[RecordIndexPos+15]) tmpXFLX = "W"; else tmpXFLX = "E"; if("W" == tmpXFLX) { //analyze water data; int jqh; int waterkh; double xf1; double xf2; xf1 = ((double)receivebuf[RecordIndexPos+0]+(double)receivebuf[RecordIndexPos+1]*256+ (double)receivebuf[RecordIndexPos+2]*256*256+(double)receivebuf[RecordIndexPos+3]*256*256*256)/100; xf2 = ((double)(receivebuf[RecordIndexPos+4]^0xff)+(double)(receivebuf[RecordIndexPos+5]^0xff)*256+ (double)(receivebuf[RecordIndexPos+6]^0xff)*256*256+(double)(receivebuf[RecordIndexPos+7]^0xff)*256*256*256)/100; if(xf1 == xf2) { jqh = (int)receivebuf[RecordIndexPos+8]*256+(int)receivebuf[RecordIndexPos+9]; waterkh = (int)receivebuf[RecordIndexPos+10]*256*256*256+ (int)receivebuf[RecordIndexPos+11]*256*256+(int)receivebuf[12]*256+ (int)receivebuf[RecordIndexPos+13]; // String tjsqlstr = "insert into WTJ values(:JH,:CJKH,:XFZE,:SCSJ)"; String watertmpsqlstr = "insert into WTJ values("; watertmpsqlstr += jqh; watertmpsqlstr += ","; watertmpsqlstr += waterkh; watertmpsqlstr += ","; watertmpsqlstr += xf1; watertmpsqlstr += ",'"; watertmpsqlstr += DateTimeToStr(Now()); watertmpsqlstr += "')"; Watersqlstr += watertmpsqlstr; // MessageBox(SDIAppForm->Handle, watertmpsqlstr.t_str(), "WTJstr", MB_OK|MB_ICONERROR); } //end analyze; } else { String F_bhstr; bool errortag = false; UpdateDataBaseQuery->Close(); tmpSQLSTR = "select * from CARD_F where KH = '"; tmpSQLSTR += tmpKH; tmpSQLSTR += "'"; UpdateDataBaseQuery->SQL->Clear(); UpdateDataBaseQuery->SQL->Add(tmpSQLSTR); UpdateDataBaseQuery->Open(); if(!UpdateDataBaseQuery->IsEmpty()) { // SerialNum = UpdateDataBaseQuery->FieldByName("BH")->AsAnsiString.Trim(); String tmpsqlstr = "insert into MX Values('"; tmpsqlstr += UpdateDataBaseQuery->FieldByName("BH")->AsAnsiString.Trim(); tmpsqlstr += "',"; tmpsqlstr += tmpKH; tmpsqlstr += ","; tmpsqlstr += tmpYE; tmpsqlstr += ","; tmpsqlstr += tmpXFJE; tmpsqlstr += ","; tmpsqlstr += tmpXFCS; tmpsqlstr += ",'"; tmpsqlstr += tmpDATESTR; tmpsqlstr += "',"; tmpsqlstr += PosNumber; tmpsqlstr += ",0,'"; tmpsqlstr += tmpXFLX; tmpsqlstr += "','"; tmpsqlstr += OperatorName; tmpsqlstr += "','"; tmpsqlstr += updatetimestr; tmpsqlstr += "')"; insqlstr += tmpsqlstr; if("I" == tmpXFLX) { String tempaddinpossqlstr = "insert into CK Values("; tempaddinpossqlstr += tmpKH; tempaddinpossqlstr += ",'"; tempaddinpossqlstr += UpdateDataBaseQuery->FieldByName("BH")->AsAnsiString.Trim(); tempaddinpossqlstr += "',"; tempaddinpossqlstr += tmpYE; tempaddinpossqlstr += ",1,"; tempaddinpossqlstr += tmpXFJE;//PosNumber; tempaddinpossqlstr += ",0,"; tempaddinpossqlstr += tmpXFJE;//tmpXFLX; tempaddinpossqlstr += ",0,"; tempaddinpossqlstr += tmpXFJE; tempaddinpossqlstr += ","; tempaddinpossqlstr += tmpXFCS; tempaddinpossqlstr += ",'"; tempaddinpossqlstr += tmpDATESTR; tempaddinpossqlstr += "',"; tempaddinpossqlstr += PosNumber; tempaddinpossqlstr += ",1,'I','"; tempaddinpossqlstr += OperatorName; tempaddinpossqlstr += "')"; AddinPosinsqlstr += tempaddinpossqlstr; } /* if("E" == tempXFLX) { String tmperrorsqlstr = "insert into MX Values('"; tmperrorsqlstr += UpdateDataBaseQuery->FieldByName("BH")->AsAnsiString.Trim(); tmperrorsqlstr += "',"; tmperrorsqlstr += tmpKH; tmperrorsqlstr += ","; tmperrorsqlstr += tmpYE; tmperrorsqlstr += ","; tmperrorsqlstr += tmpXFJE; tmperrorsqlstr += ","; tmperrorsqlstr += tmpXFCS; tmperrorsqlstr += ",'"; tmperrorsqlstr += tmpDATESTR; tmperrorsqlstr += "',"; tmperrorsqlstr += PosNumber; tmperrorsqlstr += ",0,'"; tmperrorsqlstr += tmpXFLX; tmperrorsqlstr += "','"; tmperrorsqlstr += OperatorName; tmperrorsqlstr += "','"; tmperrorsqlstr += updatetimestr; tmperrorsqlstr += "')"; Errorinsqlstr += tmperrorsqlstr; } */ if("E"!=tmpXFLX) { if(UpdateDataBaseQuery->FieldByName("SYCS")->AsInteger < tmpXFCS) { UpdateDataBaseQuery->Edit(); UpdateDataBaseQuery->FieldByName("SYCS")->AsInteger = tmpXFCS; UpdateDataBaseQuery->FieldByName("SF_YE")->AsFloat = tmpYE; UpdateDataBaseQuery->FieldByName("SFYEDT")->AsString = tmpDATESTR; UpdateDataBaseQuery->Post(); } } F_bhstr = UpdateDataBaseQuery->FieldByName("BH")->AsString; } else errortag = true; UpdateDataBaseQuery->Close(); if("E"!=tmpXFLX) { tmpSQLSTR = "select * from CARD_F where KH = '"; tmpSQLSTR += tmpKH; tmpSQLSTR += "' and BH='"; tmpSQLSTR += F_bhstr; tmpSQLSTR += "'"; UpdateDataBaseQuery->SQL->Clear(); UpdateDataBaseQuery->SQL->Add(tmpSQLSTR); UpdateDataBaseQuery->Open(); if(!UpdateDataBaseQuery->IsEmpty()) { if(UpdateDataBaseQuery->FieldByName("SYCS")->AsInteger < tmpXFCS) { UpdateDataBaseQuery->Edit(); UpdateDataBaseQuery->FieldByName("SYCS")->AsInteger = tmpXFCS; UpdateDataBaseQuery->FieldByName("SF_YE")->AsFloat = tmpYE; UpdateDataBaseQuery->FieldByName("SFYEDT")->AsString = tmpDATESTR; UpdateDataBaseQuery->Post(); } } else errortag = true; UpdateDataBaseQuery->Close(); tmpSQLSTR = "select * from CARD where KH = '"; tmpSQLSTR += tmpKH; tmpSQLSTR += "' and BH='"; tmpSQLSTR += F_bhstr; tmpSQLSTR += "'"; UpdateDataBaseQuery->SQL->Clear(); UpdateDataBaseQuery->SQL->Add(tmpSQLSTR); UpdateDataBaseQuery->Open(); if(!UpdateDataBaseQuery->IsEmpty()) { if(UpdateDataBaseQuery->FieldByName("SYCS")->AsInteger < tmpXFCS) { UpdateDataBaseQuery->Edit(); UpdateDataBaseQuery->FieldByName("SYCS")->AsInteger = tmpXFCS; UpdateDataBaseQuery->FieldByName("SF_YE")->AsFloat = tmpYE; UpdateDataBaseQuery->FieldByName("SFYEDT")->AsString = tmpDATESTR; UpdateDataBaseQuery->Post(); } } else errortag = true; UpdateDataBaseQuery->Close(); } //进度显示 poscollectedrecordcount++;// += recordNUM; ValidCProgressBar->Position = currentcount/nodecount*100+(100/nodecount*poscollectedrecordcount/posallrecordcount); } } //数据入库 Sleep(100); // MessageBox(SDIAppForm->Handle, insqlstr.t_str(), "Error", MB_OK|MB_ICONERROR); // MessageBox(SDIAppForm->Handle, IntToStr(insqlstr.Length()).t_str(), "Error", MB_OK|MB_ICONERROR); if(insqlstr.Length()>0) { UpdateDataBaseQuery->Close(); UpdateDataBaseQuery->SQL->Clear(); UpdateDataBaseQuery->SQL->Add(insqlstr); UpdateDataBaseQuery->ExecSQL(); UpdateDataBaseQuery->Close(); } Sleep(100); if(AddinPosinsqlstr.Length()>0) { UpdateDataBaseQuery->Close(); UpdateDataBaseQuery->SQL->Clear(); UpdateDataBaseQuery->SQL->Add(AddinPosinsqlstr); UpdateDataBaseQuery->ExecSQL(); UpdateDataBaseQuery->Close(); } Sleep(100); if(Watersqlstr.Length()>0) { UpdateDataBaseQuery->Close(); UpdateDataBaseQuery->SQL->Clear(); UpdateDataBaseQuery->SQL->Add(Watersqlstr); UpdateDataBaseQuery->ExecSQL(); UpdateDataBaseQuery->Close(); } String prooutstr = tmpcaptionstr; prooutstr += "已采集入库"; prooutstr += poscollectedrecordcount; prooutstr += "条"; ValidInfoPanel->Caption = prooutstr; /* DWORD writelen; WriteFile(hStoreToFile, receivebuf, 2048, &writelen, NULL); */ // BatchDataSaveToFileStream<<receivebuf<<endl; for(int i = 0; i < 2048; i++) BatchDataSaveToFileStream<<receivebuf[i]; } }
/** * Start / restart the stop watch. */ void Start() { start_time_ = Now(); }
/** * Is this date in the future? */ gcc_pure bool IsFuture() const { return mtime > Now(); }
//--------------------------------------------------------------------------- void __fastcall TXFTJALLExportThread::Execute() { //---- Place thread code here ---- ValidEXBTN->Enabled = false; ValidPreBTN->Enabled = false; ValidEBTN->Enabled = false; ValidQBTN->Enabled = false; Variant ExcelApp; try { ExcelApp = CreateOleObject("Excel.Application"); } catch(...) { MessageBox(XFTJQFrm->Handle, "错误:您的系统中可能没有安装Excel!", "Error in launch Excel!", MB_OK|MB_ICONERROR); ValidEXBTN->Enabled = true; ValidPreBTN->Enabled = true; ValidEBTN->Enabled = true; return; } ValidQuery->Open(); String DTX = ""; String path = GlobalPath; String Templatepath; ValidQuery->First(); int allrecord = ValidQuery->RecordCount; for(int i = 0; i <65531; i++) { DTX += ValidQuery->FieldByName("qdate")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("ZSFZE")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("ZSFCS")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("BFSFZE")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("BFCS")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("LHSFZE")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("LHCS")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("SUSFZE")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("SUCS")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("NTSFZE")->AsAnsiString.Trim(); DTX += "\t"; DTX += ValidQuery->FieldByName("NTCS")->AsAnsiString.Trim(); DTX += "\n"; Validprogress->Position = i*100/allrecord; ValidQuery->Next(); if(ValidQuery->Eof) break; } Templatepath = path + "\\ExportXLSTemplate\\XFTJALLMXTemplate.xlt"; ExcelApp.OlePropertyGet("workbooks").OleFunction("Open", Templatepath.t_str()); Variant WB = ExcelApp.OlePropertyGet("ActiveWorkBook"); Variant ST = WB.OlePropertyGet("Sheets", 1); ST.OlePropertyGet("Cells",2,2).OlePropertySet("Value", ValidBHStr.t_str()); ST.OlePropertyGet("Cells",2,5).OlePropertySet("Value", ValidBMStr.t_str()); ST.OlePropertyGet("Cells",2,9).OlePropertySet("Value", ValidBeginDatestr.t_str()); ST.OlePropertyGet("Cells",3,2).OlePropertySet("Value", ValidCZYStr.t_str()); ST.OlePropertyGet("Cells",3,5).OlePropertySet("Value", DateTimeToStr(Now()).t_str()); ST.OlePropertyGet("Cells",3,9).OlePropertySet("Value", ValidEndDatestr.t_str()); ST.OlePropertyGet("Cells",5,2).OlePropertySet("Value", ValidZZE.t_str()); ST.OlePropertyGet("Cells",6,2).OlePropertySet("Value", ValidZZCS.t_str()); ST.OlePropertyGet("Cells",5,4).OlePropertySet("Value", ValidBZE.t_str()); ST.OlePropertyGet("Cells",6,4).OlePropertySet("Value", ValidBZCS.t_str()); ST.OlePropertyGet("Cells",5,6).OlePropertySet("Value", ValidLZE.t_str()); ST.OlePropertyGet("Cells",6,6).OlePropertySet("Value", ValidLZCS.t_str()); ST.OlePropertyGet("Cells",5,8).OlePropertySet("Value", ValidSZE.t_str()); ST.OlePropertyGet("Cells",6,8).OlePropertySet("Value", ValidSZCS.t_str()); ST.OlePropertyGet("Cells",5,10).OlePropertySet("Value", ValidNZE.t_str()); ST.OlePropertyGet("Cells",6,10).OlePropertySet("Value", ValidNZCS.t_str()); Variant RE = ST.OlePropertyGet("Range", "A9").OleFunction("Select"); Clipboard()->Clear(); Clipboard()->SetTextBuf(DTX.c_str()); ST.OleFunction("Paste"); Clipboard()->Clear(); ExcelApp.OlePropertyGet("Columns").OleFunction("AutoFit"); WB.OleFunction("SaveAs", Validsavepath.t_str()); ExcelApp.OleFunction("Quit"); ExcelApp = Unassigned; Validprogress->Position = 100; MessageBox(XFTJQFrm->Handle, "数据已完成导出!", "Successfully!", MB_OK|MB_ICONINFORMATION); ValidEXBTN->Enabled = true; ValidPreBTN->Enabled = true; ValidEBTN->Enabled = true; ValidQBTN->Enabled = true; }
signed char GoToSleep() { signed char retCode = 0; UI_Location = UI_LOC_SLEEP; signed char inp; int bin; char idx; LCD_ClearDisplay(); LCD_PrintString("SLEEP\0"); LCD_DisplayOnOff(0, 0, 0); bPowerOff = 1; double Expires; double Time; step1: ClearUI_Event = 1; while (ClearUI_Event); while (1) { inp = GetInput_nonblocking(); if (inp<-2) { retCode = inp; goto WAKEUP; } switch (inp) { case USER_INPUT_CANCEL: //The user pressed cancel Expires = Now(); Expires += 5000; bin = 0; goto step2; } idx = 0xff; while (idx--); } step2: while (1) { inp = GetInput_nonblocking(); if (inp<-2) { retCode = inp; goto WAKEUP; } Time = Now(); if (Time > Expires) goto step1; switch (inp) { case USER_INPUT_INC: //The user pressed cancel bin++; if (bin > 8) goto WAKEUP; break; case USER_INPUT_DEC: bin = 0; break; } idx = 0xff; while (idx--); } WAKEUP: LCD_DisplayOnOff(1, 0, 0); bPowerOff = 0; return retCode; }
//--------------------------------------------------------------------------- TTreeNode* __fastcall TExceptionMessages::AddFFL( AnsiString Str, AnsiString File, AnsiString Func, int Line) { MainForm->StatBar->Panels->Items[2]->Text = "E"; if (!OutTree) { AnsiString Mess = "[" + DateTimeToStr(Now()) + "] : " + Str + "\nFile = " + ExtractFileName(File) + " (" + IntToStr(Line) + ")" + "\nFunction = " + Func; ShowMessage(Mess); return NULL; } TTreeNode *TN = OutTree->Items->Add( NULL, "[" + DateTimeToStr(Now()) + "] : " + Str); OutTree->Items->AddChild( TN, AnsiString("File = ") + ExtractFileName(File) + " (" + IntToStr(Line) + ")"); OutTree->Items->AddChild( TN, "Function = " + Func); if (exxp) { OutTree->Items->AddChild( TN, ExceptionString(er.ExceptionCode)); TTreeNode *tn1 = OutTree->Items->AddChild( TN, "Context"); OutTree->Items->AddChild( tn1, "Flags = 0x" + IntToHex((int)cntxt.ContextFlags,8) + ", " + ContextFlagsString(cntxt.ContextFlags)); if ((cntxt.ContextFlags & CONTEXT_CONTROL) == CONTEXT_CONTROL) { TTreeNode *tn2 = OutTree->Items->AddChild( tn1, "Control"); OutTree->Items->AddChild( tn2, "Ebp = 0x" + IntToHex((int)cntxt.Ebp,8)); OutTree->Items->AddChild( tn2, "Eip = 0x" + IntToHex((int)cntxt.Eip,8)); OutTree->Items->AddChild( tn2, "SegCs = 0x" + IntToHex((int)cntxt.SegCs,8)); OutTree->Items->AddChild( tn2, "EFlags = 0x" + IntToHex((int)cntxt.EFlags,8)); OutTree->Items->AddChild( tn2, "Esp = 0x" + IntToHex((int)cntxt.Esp,8)); OutTree->Items->AddChild( tn2, "SegSs = 0x" + IntToHex((int)cntxt.SegSs,8)); } if ((cntxt.ContextFlags & CONTEXT_INTEGER) == CONTEXT_INTEGER) { TTreeNode *tn2 = OutTree->Items->AddChild( tn1, "Integer"); OutTree->Items->AddChild( tn2, "Edi = 0x" + IntToHex((int)cntxt.Edi,8)); OutTree->Items->AddChild( tn2, "Esi = 0x" + IntToHex((int)cntxt.Esi,8)); OutTree->Items->AddChild( tn2, "Ebx = 0x" + IntToHex((int)cntxt.Ebx,8)); OutTree->Items->AddChild( tn2, "Edx = 0x" + IntToHex((int)cntxt.Edx,8)); OutTree->Items->AddChild( tn2, "Ecx = 0x" + IntToHex((int)cntxt.Ecx,8)); OutTree->Items->AddChild( tn2, "Eax = 0x" + IntToHex((int)cntxt.Eax,8)); } if ((cntxt.ContextFlags & CONTEXT_SEGMENTS) == CONTEXT_SEGMENTS) { TTreeNode *tn2 = OutTree->Items->AddChild( tn1, "Segments"); OutTree->Items->AddChild( tn2, "SegGs = 0x" + IntToHex((int)cntxt.SegGs,8)); OutTree->Items->AddChild( tn2, "SegFs = 0x" + IntToHex((int)cntxt.SegFs,8)); OutTree->Items->AddChild( tn2, "SegEs = 0x" + IntToHex((int)cntxt.SegEs,8)); OutTree->Items->AddChild( tn2, "SegDs = 0x" + IntToHex((int)cntxt.SegDs,8)); } if ((cntxt.ContextFlags & CONTEXT_FLOATING_POINT) == CONTEXT_FLOATING_POINT) { TTreeNode *tn2 = OutTree->Items->AddChild( tn1, "Floating point"); OutTree->Items->AddChild( tn2, "Control word = 0x" + IntToHex((int)cntxt.FloatSave.ControlWord,8)); OutTree->Items->AddChild( tn2, "Status word = 0x" + IntToHex((int)cntxt.FloatSave.StatusWord,8)); OutTree->Items->AddChild( tn2, "Tag word = 0x" + IntToHex((int)cntxt.FloatSave.TagWord,8)); OutTree->Items->AddChild( tn2, "Error offset = 0x" + IntToHex((int)cntxt.FloatSave.ErrorOffset,8)); OutTree->Items->AddChild( tn2, "Error selector = 0x" + IntToHex((int)cntxt.FloatSave.ErrorSelector,8)); OutTree->Items->AddChild( tn2, "Data offset = 0x" + IntToHex((int)cntxt.FloatSave.DataOffset,8)); OutTree->Items->AddChild( tn2, "Data selector = 0x" + IntToHex((int)cntxt.FloatSave.DataSelector,8)); OutTree->Items->AddChild( tn2, "Cr0NpxState = 0x" + IntToHex((int)cntxt.FloatSave.Cr0NpxState,8)); } if ((cntxt.ContextFlags & CONTEXT_DEBUG_REGISTERS) == CONTEXT_DEBUG_REGISTERS) { TTreeNode *tn2 = OutTree->Items->AddChild( tn1, "Debug registers"); OutTree->Items->AddChild( tn2, "Dr0 = 0x" + IntToHex((int)cntxt.Dr0,8)); OutTree->Items->AddChild( tn2, "Dr1 = 0x" + IntToHex((int)cntxt.Dr1,8)); OutTree->Items->AddChild( tn2, "Dr2 = 0x" + IntToHex((int)cntxt.Dr2,8)); OutTree->Items->AddChild( tn2, "Dr3 = 0x" + IntToHex((int)cntxt.Dr3,8)); OutTree->Items->AddChild( tn2, "Dr6 = 0x" + IntToHex((int)cntxt.Dr6,8)); OutTree->Items->AddChild( tn2, "Dr7 = 0x" + IntToHex((int)cntxt.Dr7,8)); } if ((cntxt.ContextFlags & CONTEXT_EXTENDED_REGISTERS) == CONTEXT_EXTENDED_REGISTERS) { OutTree->Items->AddChild( tn1, "Extended registers"); } exxp = NULL; } return TN; }