⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 实现RS232数据采集处理,设置RS23传输参数,显示控制终端的数据.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
 default:  StaticText30->Caption="其他串口";break;}
 StaticText32->Caption=IntToStr(TableP->RecordCount)+" 台";
 StaticText33->Caption="已有的设备数据记录:"+IntToStr(TableD->RecordCount)+" 条";
 StaticText34->Caption="其中告警记录:"+IntToStr(CountOfAlm)+" 条";
 if(CountOfAlm!=0)
 {if(shape1==0) {shape1=1;StaticText34->Visible=true;StaticText34->Font->Color=clRed;}
  else {shape1=0;StaticText34->Visible=false;}
 }
 else {StaticText34->Visible=true; StaticText34->Font->Color=clWindowText;
 //StaticText34->Brush->Color=clWindowText;
 }
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::BitBtn13Click(TObject *Sender)
{                                       //Open Serial Port Button
 int comnum;
  if (Comm1->PortOpen)
 {ShowMessage("串口已打开!要打开其他串口请先关闭当前串口!");
  return;
  }
 comnum=ComboBox1->ItemIndex;
  switch(comnum){
  case 0: Comm1->CommPort=pnCOM1;break;
  case 1: Comm1->CommPort=pnCOM2;break;
  case 2: Comm1->CommPort=pnCOM3;break;
  case 3: Comm1->CommPort=pnCOM4;break;
  case 4: Comm1->CommPort=pnCOM5;break;
  default: Comm1->CommPort=pnCOM1;break;}
  Comm1->PortOpen=true;

}
//---------------------------------------------------------------------------

void __fastcall TFormMain::BitBtn14Click(TObject *Sender)
{                                        //Close Serial Port Button
 if(Comm1->PortOpen) Comm1->PortOpen=false;
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::BitBtn22Click(TObject *Sender)
{                  //Clear button
 Edit4->Clear();
 Memo1->Clear();
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::BitBtn23Click(TObject *Sender)
{                   //Clear button
 Edit3->Clear();
 Memo2->Clear();
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::FormMainCreate(TObject *Sender)
{                             //FormMain Create Event

 

 String path;
 path=GetCurrentDir();
 TableD->TableName=path+"\\"+"shebeidata";
 TableD->Active=true;
 TableP->TableName=path+"\\"+"shebei";
 TableP->Active=true;
 TablePS->TableName=path+"\\"+"pass";
 TablePS->Active=true;
//Timer7->Enabled=true;
 FormMain->TimerComState->Enabled=true;
 FormMain->Timer4->Enabled=false;
 FormMain->TimerState->Enabled=true;
 FormMain->TimerShebeicheck->Enabled=true;

 TableP->First();
 Edit2->Text=TableP->FieldByName("Addr")->AsString;
 Edit27->Text=TableP->FieldByName("LocNum")->AsString;
 Edit28->Text=TableP->FieldByName("LocName")->AsString;

 DateTimePicker1->Date=Now();
 DateTimePicker4->Date=Now();
 DateTimePicker3->Time=Now();

 if (!Comm1->PortOpen) Comm1->PortOpen=true;
 else {ShowMessage("默认串口已经被其他程序打开,请选择其他串口!");}
 StatusBar1->Panels->Items[3]->Text="手动操作";
 StatusBar1->Panels->Items[0]->Text=Now();
 ActionStop->Enabled=false;
 PageControl1->ActivePageIndex=0;
 //Next is TreeView create from the Table base
  StaticText32->Caption=IntToStr(TableP->RecordCount)+" 台";
 StaticText33->Caption="已有的设备数据记录:"+IntToStr(TableD->RecordCount)+" 条";
 TableD->First();
 for(int i=0;i<TableD->RecordCount;i++)
 {if(TableD->FieldByName("IsAlm")->AsBoolean) CountOfAlm++;
  TableD->Next();
 }
 StaticText34->Caption="(其中告警记录:"+IntToStr(CountOfAlm)+" 条)";

 createTree();



}
//---------------------------------------------------------------------------

void __fastcall TFormMain::TimerStateTimer(TObject *Sender)
{                           //StatusBar real time display
 StatusBar1->Panels->Items[0]->Text=Now().DateTimeString();
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::BitBtn3Click(TObject *Sender)
{                           //Edit DBMemoP Attribute
// BitBtn4->Enabled=true;
// DBMemoP->Enabled=true;
// DBMemoP->ReadOnly=false;
// DBMemoP->SetFocus();
 TablePS->First();
 if(TablePS->RecordCount==0||TablePS->FieldByName("PassWord")->AsString=="") goto L522;
 if(PasswordDlg->ShowModal()==1) ;
 else return;
 if(Edit16->Text=="0") return;
 else Edit16->Text="0";
L522:;

Form5->Edit1->Text=TableP->FieldByName("Name")->AsString;
Form5->Edit4->Text=TableP->FieldByName("Name")->AsString;
Form5->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::BitBtn4Click(TObject *Sender)
{                            //Confirm Edit DBMemoP Attribute
  TableP->Edit();
 TableP->FieldByName("Memo")->AsString=DBMemoP->Text;
 TableP->Post();
 DBMemoP->ReadOnly=true;
// DBMemoP->Enabled=false;
 BitBtn4->Enabled=false;
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::TimerShebeicheckTimer(TObject *Sender)
{
 if(TableP->RecordCount==0)
   {ActionRun->Enabled=false;BitBtn3->Enabled=false;BitBtn35->Enabled=false;
    ActionDel->Enabled=false;
    ActionStop->Enabled=false;}
 else
   {if(autoread==1)    { BitBtn3->Enabled=false;
                         BitBtn35->Enabled=false;
                         ActionDel->Enabled=false;}
    else
                       {BitBtn3->Enabled=true;
                       BitBtn35->Enabled=true;
                        ActionDel->Enabled=true;}
   if (autoread!=1)      //autoread is RUN state flag
    ActionRun->Enabled=true;
     }
}
//---------------------------------------------------------------------------


void __fastcall TFormMain::BitBtn9Click(TObject *Sender)
{
 //Look up records according to address
if(Edit1->Text=="") {ShowMessage("请输入地址内容"); return;}

String sign;
String addrflt;
sign="'";
addrflt="Addr="+sign+Edit1->Text+sign;
TableD->Filter=addrflt;
TableD->Filtered=true;
TableD->Refresh();
if(TableD->RecordCount==0) ShowMessage("未找到符合条件的记录!");

}
//---------------------------------------------------------------------------

void __fastcall TFormMain::BitBtn2Click(TObject *Sender)
{
 TablePS->First();
 if(TablePS->RecordCount==0||TablePS->FieldByName("PassWord")->AsString=="") goto L578;
 if(PasswordDlg->ShowModal()==1) ;
 else return;
 if(Edit16->Text=="0") return;
 else Edit16->Text="0";
L578:;



   //Delete shebei Record
 String Str01,Str02,Str03,Str04,Str05,Str06,Str07;

Str02="确定要从本系统中删除设备  ";
Str03="  吗?";
Str01=Str02+TableP->FieldByName("Name")->AsString+Str03;
char *Char01;
Char01=Str01.c_str();


 FormMain->Enabled=false;
// String Stra=MessageBox(0,"确定要从本系统中删除该设备吗?","系统提示",MB_OKCANCEL);
 String Stra=MessageBox(0,Char01,"系统提示",MB_OKCANCEL);
 if(Stra==IDOK)
 {FormMain->Enabled=true;
 TableP->Edit();
 TableP->Delete();
 TableP->First();
 createTree();}
 else {TableP->First(); FormMain->Enabled=true; return;}
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::FormMainCloseQuery(TObject *Sender,
      bool &CanClose)
{ if(autoread==1) {ShowMessage("请先停止自动运行"); CanClose=false; return; }
  FormMain->Enabled=false;

 String Stra=MessageBox(0,"确定要退出本系统吗?","系统提示",MB_OKCANCEL);

 if(Stra==IDOK) {
// CanClose=false;
// rootnode=TreeView1->Items->GetFirstNode();
// Memo3->Text=rootnode->Text;
// Memo3->Lines->SaveToFile(rootname);
// CanClose=true;
 exit(0); }
 else {CanClose=false;   FormMain->Enabled=true; return;}
}
//---------------------------------------------------------------------------


void __fastcall TFormMain::BitBtn11Click(TObject *Sender)
{
  //Lookup record according to time
 String DTfilt;
 String hdateStr="Date>";
 String ldateStr="Date<";
 String htimeStr="Time>";
 String ltimeStr="Time<";
 String And=" and ";

 TDateTime startdate,enddate;
 TDateTime starttime,endtime;
 startdate=DateTimePicker1->Date;
 starttime=DateTimePicker3->Time;
 enddate=DateTimePicker2->Date;
 endtime=DateTimePicker4->Time;

 DTfilt="Date >="+DateToStr(DateTimePicker1->Date)+" and Date<="+DateToStr(DateTimePicker4->Date)
 +" and Time>="+QuotedStr(TimeToStr(DateTimePicker2->Time))+" and Time<="+QuotedStr(TimeToStr(DateTimePicker3->Time));
 TableD->Filter=DTfilt;
 TableD->Filtered=true;

}
//---------------------------------------------------------------------------

void __fastcall TFormMain::BitBtn7Click(TObject *Sender)
{                  //Delete all shebeidata`s records

 TablePS->First();
 if(TablePS->RecordCount==0||TablePS->FieldByName("PassWord")->AsString=="") goto L666;
 if(PasswordDlg->ShowModal()==1) ;
 else return;
 if(Edit16->Text=="0") return;
 else Edit16->Text="0";
L666:;

 if(TableD->RecordCount==0) {ShowMessage("告警记录为空!");return;}
if (MessageBox(0,"确定删除所有记录吗?","删除提示",MB_OKCANCEL)==IDCANCEL) return;
else if(MessageBox(0,"删除的数据将不可恢复,确认吗?","删除提示",MB_OKCANCEL)==IDCANCEL) return;
TableD->First();
TableD->Edit();
Lable:;
TableD->Delete();
TableD->Next();
TableD->Refresh();
if(TableD->RecordCount==0){CountOfAlm=0; ShowMessage("数据删除完毕!!");return; }
else goto Lable;

}
//---------------------------------------------------------------------------

void __fastcall TFormMain::ActionCloseExecute(TObject *Sender)
{if(autoread==1) {ShowMessage("请先停止自动运行"); return; }
  FormMain->Enabled=false;

 String Stra=MessageBox(0,"确定要退出本系统吗?","系统提示",MB_OKCANCEL);
 if(Stra==IDOK){if(!Comm1->PortOpen) Comm1->PortOpen=false;

// rootnode=TreeView1->Items->GetFirstNode();
// Memo3->Text=rootnode->Text;
// Memo3->Lines->SaveToFile(rootname);
 exit(0);
 }

 else {FormMain->Enabled=true; return;}
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::BitBtn6Click(TObject *Sender)
{                //Delete current record of shebeidata.db

 TablePS->First();
 if(TablePS->RecordCount==0||TablePS->FieldByName("PassWord")->AsString=="") goto L700;
 if(PasswordDlg->ShowModal()==1) ;
 else return;
 if(Edit16->Text=="0") return;
 else Edit16->Text="0";
L700:;


 if(MessageBox(0,"确定要删除当前记录吗?","删除提示",MB_OKCANCEL)==IDOK) ;
 else return;
 if(TableD->RecordCount==0){                   //delete alarm records
 ShowMessage("无告警记录可删除!");return;
 }

 TableD->Edit();
TableD->Delete();
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::BitBtn1Click(TObject *Sender)
{
 TablePS->First();
 if(TablePS->RecordCount==0||TablePS->FieldByName("PassWord")->AsString=="") goto L694;
 if(PasswordDlg->ShowModal()==1) ;
 else return;
 if(Edit16->Text=="0") return;
 else Edit16->Text="0";
L694:;

 Form2->Show();

}
//---------------------------------------------------------------------------

void __fastcall TFormMain::ActionRunExecute(TObject *Sender)
{  //Action Run       
   if(!Comm1->PortOpen) {ShowMessage("串口未打开!!"); return;}
A1->Enabled=false;
TableD->Filtered=false;
TableP->Filtered=false;
BitBtn24->Enabled=false;
BitBtn25->Enabled=false;
BitBtn26->Enabled=false;
BitBtn27->Enabled=false;
BitBtn28->Enabled=false;
BitBtn29->Enabled=false;
BitBtn30->Enabled=false;
BitBtn31->Enabled=false;
BitBtn32->Enabled=false;
BitBtn33->Enabled=false;
BitBtn16->Enabled=false;    //  manual run button
BitBtn13->Enabled=false;
BitBtn14->Enabled=false;
BitBtn20->Enabled=false;
BitBtn1->Enabled=false;
BitBtn2->Enabled=false;
BitBtn3->Enabled=false;
BitBtn5->Enabled=false;
BitBtn6->Enabled=false;
BitBtn7->Enabled=false;
BitBtn9->Enabled=false;
BitBtn11->Enabled=false;

S3->Enabled=false;
BitBtn39->Enabled=false;
BitBtn36->Enabled=false;
BitBtn38->Enabled=false;


ActionAdd->Enabled=false;
ActionDel->Enabled=false;
ActionComm->Enabled=false;
ActionADSet->Enabled=false;
ToolButton3->Enabled=false;


autoread=1;stopedread=0;

TreeView1->Enabled=false;

PageControl1->ActivePageIndex=0;
ActionRun->Enabled=false;
ActionStop->Enabled=true;
StatusBar1->Panels->Items[3]->Text="自动监控";

if(RadioButton1->Checked)
   {degree=0;
    if(Edit26->Text.ToInt()>65535) Edit26->Text=65535;
    rundegree=Edit26->Text.ToInt(); }   //Autorun degree reset
        else if(RadioButton2->Checked)
        {
                if(Edit23->Text.ToInt()>17) Edit23->Text=17;
                if(Edit24->Text.ToInt()>59) Edit24->Text=59;
                if(Edit25->Text.ToInt()>59) Edit25->Text=59;
                runtime=(Edit23->Text.ToInt())*3600+(Edit24->Text.ToInt())*60+Edit25->Text.ToInt();
                timerstoptime=0;
                TimerStop->Enabled=true;
        }
        tableturn=0;       //express current tableP recorder point

        TimerRun->Interval=(Edit6->Text.ToInt())*1000;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -