www.pudn.com > CommSettings.rar > UnitMain.cpp


//--------------------------------------------------------------------------- 
 
#include  
#pragma hdrstop 
 
#include "UnitMain.h" 
#include "UnitCommSet.h" 
#include "UnitOptions.h" 
#include "UnitAbout.h" 
#include "TestSetData.h" 
//--------------------------------------------------------------------------- 
#pragma package(smart_init) 
#pragma link "YbCommDevice" 
#pragma resource "*.dfm" 
TForm1 *Form1; 
//--------------------------------------------------------------------------- 
__fastcall TForm1::TForm1(TComponent* Owner) 
    : TForm(Owner) 
{ 
  AppCfg.Load(YbCommDevice1); //如果配置文件存在,从配置文件载入信息 
  InitCtrls();                //初始化控件信息 
  PostMessage(Handle,WM_USERCMD,UC_LOGIN,0); 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::InitCtrls(void) //初始化控件信息 
{ 
  Font->Name    = AppLang.FontName; 
  Font->Charset = AppLang.Charset; 
  Font->Size    = AppLang.FontSize; 
 
  TAppStrings Msg; 
  Application->Title = Msg.Str_AppTitle; 
  Caption = Msg.Str_AppTitle; 
 
  MenuFile->Caption = Msg.Mnu_File; 
  MenuData->Caption = Msg.Mnu_Data; 
  MenuHelp->Caption = Msg.Mnu_Help; 
 
  ActionCommSet->Caption  = Msg.Mnu_CommSet ; 
  ActionLanguage->Caption = Msg.Mnu_Language; 
  ActionExit->Caption     = Msg.Mnu_Exit    ; 
  ActionHelp->Caption     = Msg.Mnu_Help    ; 
  ActionAbout->Caption    = Msg.Mnu_About   ; 
  ActionSend->Caption     = Msg.Mnu_Send    ; 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::UserLogin(int iParam) //当主窗体第一次显示出来时产生的事件 
{ 
  try 
   { 
     YbCommDevice1->Active = true; 
   } 
  catch(Exception &e) 
   { 
     if(!CommSet()) 
       Close(); 
   } 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::WndProc(Messages::TMessage &Message) 
{ 
  if(Message.Msg==WM_USERCMD) 
   { 
     if(Message.WParam == UC_LOGIN) 
      { 
        UserLogin(Message.LParam); 
      } 
   } 
  TForm::WndProc(Message); 
} 
//--------------------------------------------------------------------------- 
bool __fastcall TForm1::CommSet(void) 
{ 
  FormCommSettings = new TFormCommSettings(this,YbCommDevice1,true); 
  bool bSetOK = FormCommSettings->ShowModal() == IDOK; 
  delete FormCommSettings; 
 
  if(bSetOK) 
   { 
     AppCfg.ReadCommToCfg(YbCommDevice1); 
     AppCfg.Save(); //保存到配置文件 
   } 
  return bSetOK; 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::Panel4Resize(TObject *Sender) 
{ 
  Edit1->Width = Panel4->Width; 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::ActionExitExecute(TObject *Sender) 
{ 
  Close(); 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::ActionCommSetExecute(TObject *Sender) 
{ 
  CommSet(); 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::ActionLanguageExecute(TObject *Sender) 
{ 
  FormOptions = new TFormOptions(this); 
  bool bOK = FormOptions->ShowModal(); 
  delete FormOptions; 
  if(bOK)InitCtrls(); 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::ActionAboutExecute(TObject *Sender) 
{ 
  FormAbout = new TFormAbout(this); 
  FormAbout->ShowModal(); 
  delete FormAbout; 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::ActionSendExecute(TObject *Sender) 
{ 
  int nBytes = 0; 
  char Buffer[1000], *EndPtr; 
  AnsiString t,s = Edit1->Text.Trim(); 
  while(s.Length()>0) 
   { 
     int p = s.Pos(' '); //空格 
     if(p>0) 
      { 
        t = s.SubString(1,p-1); 
        s = s.SubString(p+1,s.Length()).Trim(); 
        Buffer[nBytes++] = strtol(t.c_str(), &EndPtr, 16); //十六进制字符串转成字节 
      } 
     else //还剩下最后一个字节 
      { 
        t = s; 
        s = ""; 
        Buffer[nBytes++] = strtol(t.c_str(), &EndPtr, 16); //十六进制字符串转成字节 
      } 
   } 
  YbCommDevice1->Write(Buffer,nBytes); 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::Timer1Timer(TObject *Sender) 
{ 
  unsigned char Buf[8192]; //收到的字节数不会超过串口缓存的容量, 所以分配一个缓存容量相同的Buf 
  int n = YbCommDevice1->Read(Buf,8192); //收到 n 个字节 
  AnsiString s; 
 
  for(int i=0; iLines->Add(s); 
} 
//---------------------------------------------------------------------------