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

📄 main.~cpp

📁 平台:c++ builder V6.0 功能:利用串口设备通讯,
💻 ~CPP
📖 第 1 页 / 共 3 页
字号:
Label_Pause->Caption=String(X)+"/"+String(CHK.Break_Time);
Label_Com_Hint->Caption="读取间歇时间"+String(X);
SINGLE+=Read_Value(RS);
//
ProgressBar_Single->Position=SINGLE;
Label_Single->Caption=String(SINGLE)+"/"+String(CHK.Spray_Time+CHK.InOut_Time+CHK.Break_Time);   
Label_Com_Hint->Caption="单次循环进度"+String(SINGLE);

//////
if(REPORT.CHECK_1){
   CMD="0101086E0001";
   SendString(CMD);//发送工位1是否结束:读取M110(地址\X086E)
   RS=ReadString();
   REPORT.F1=false;
   if(Is_Running(RS)){Label_Hint1->Caption="完成";REPORT.F1=true;}
   Shape_1_Stop->Brush->Color=clRed;
   Shape_1_Running->Brush->Color=clGreen;
   Shape_1_Warning->Brush->Color=clOlive;
   CHK.Done=CHK.Done&REPORT.F1;
  }

if(REPORT.CHECK_2){
   CMD="0101086F0001";
   SendString(CMD);//发送工位2是否结束:读取M111(地址\X086F)
   RS=ReadString();
   REPORT.F2=false;
   if(Is_Running(RS)){Label_Hint2->Caption="完成";REPORT.F2=true;}
   Shape_2_Stop->Brush->Color=clRed;
   Shape_2_Running->Brush->Color=clGreen;
   Shape_2_Warning->Brush->Color=clOlive;
   REPORT.F2=true;
   CHK.Done=CHK.Done&REPORT.F2;
  }
if(REPORT.CHECK_3){
   CMD="010108700001";
   SendString(CMD);//发送工位3是否结束:读取M112(地址\X0870)
   RS=ReadString();
   REPORT.F3=false;
   if(Is_Running(RS)){Label_Hint3->Caption="完成";REPORT.F3=true;}
   Shape_3_Stop->Brush->Color=clRed;
   Shape_3_Running->Brush->Color=clGreen;
   Shape_3_Warning->Brush->Color=clOlive;
   REPORT.F3=true;
   CHK.Done=CHK.Done&REPORT.F3;
  }

if(CHK.Done||(REPORT.E1&&REPORT.E2&&REPORT.E3)) {
   BitBtn_Report->Enabled=true;
   BitBtn_StopAll->Enabled=false;
   BitBtn_Stop1->Enabled=false;
   BitBtn_Stop2->Enabled=false;
   BitBtn_Stop3->Enabled=false;
   Timer1->Enabled=false;
   }
}
//---------------------------------------
bool __fastcall TForm_Main::Is_Running(AnsiString RS)//询问是否启动
{
AnsiString rs;
int M;

rs="X"+RS.SubString(8,2);
M=rs.ToIntDef(0)&1;
return M;
}
//---------------------------------------------------------------------------
int __fastcall TForm_Main::Read_Value(AnsiString RS)//读单字节值
{
AnsiString rs;
int M;


rs="X"+RS.SubString(8,4);
M=rs.ToIntDef(0);
return M;
}
//---------------------------------------------------------------------------
void __fastcall TForm_Main::X1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm_Main::A2Click(TObject *Sender)
{
Form_About->ShowModal();
}
//------------------------------------------------------------------------
void __fastcall TForm_Main::FormCreate(TObject *Sender)
{
str_EXEC_PATH=GetCurrentDir();//执行文件路径
Init_Check_Value(15,50,15,100);
ProgressBar_Single->Max=CHK.Spray_Time+CHK.InOut_Time+CHK.Break_Time;
Close_All_Lamp();
Clear_All_Hint();
Reset_All_ProgressBar();
Init_Comm_Value();
COMM.Linked=false;
COMM.Comm_OK=false;
COMM.Linked=false;
COMM.hComm=NULL;


REPORT.Number="";
REPORT.Code="";
REPORT.Name="";
REPORT.Technic="";
REPORT.UserNumber="";
REPORT.State=0;
REPORT.Assem=0;
REPORT.Memo="";
REPORT.CHECK_1=true;
REPORT.CHECK_2=true;
REPORT.CHECK_3=true;

BitBtn_Set->Enabled=false;
BitBtn_Reset->Enabled=false;
BitBtn_Start_All->Enabled=false;
BitBtn_Start1->Enabled=false;
BitBtn_Start2->Enabled=false;
BitBtn_Start3->Enabled=false;
BitBtn_StopAll->Enabled=false;
BitBtn_Stop1->Enabled=false;
BitBtn_Stop2->Enabled=false;
BitBtn_Stop3->Enabled=false;
BitBtn_Report->Enabled=false;
Label_Com_Hint->Caption="";

TIniFile *MM;                 //从初始化文件读取设置
  MM = new TIniFile(Form_Main->str_EXEC_PATH + "\\DCW.INI");
  COMPANY.Name=MM->ReadString("公司信息","名称","使用者未确定");
  COMPANY.Icon=MM->ReadString("公司信息","图标","图标未注册");
  delete MM;

Label_User->Caption=COMPANY.Name;
if(FileExists(COMPANY.Icon)) Image1->Picture->LoadFromFile(COMPANY.Icon);
CHK.Checking=false;
CHK.Info_Read=true;
CHK.Info_Send=true;
CHK.Done=true;
CHK.ERR=true;
CHK.Exit=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm_Main::Close_All_Lamp(void)
{
Shape_Running->Brush->Color=clGreen;
Shape_1_Stop->Brush->Color=clMaroon;
Shape_1_Running->Brush->Color=clGreen;
Shape_1_Warning->Brush->Color=clOlive;
Shape_2_Stop->Brush->Color=clMaroon;
Shape_2_Running->Brush->Color=clGreen;
Shape_2_Warning->Brush->Color=clOlive;
Shape_3_Stop->Brush->Color=clMaroon;
Shape_3_Running->Brush->Color=clGreen;
Shape_3_Warning->Brush->Color=clOlive;
}
//---------------------------------------------------------------------------
void __fastcall TForm_Main::Open_All_Lamp(void)
{
Shape_Running->Brush->Color=clLime;
Shape_1_Stop->Brush->Color=clRed;
Shape_1_Running->Brush->Color=clLime;
Shape_1_Warning->Brush->Color=clYellow;
Shape_2_Stop->Brush->Color=clRed;
Shape_2_Running->Brush->Color=clLime;
Shape_2_Warning->Brush->Color=clYellow;
Shape_3_Stop->Brush->Color=clRed;
Shape_3_Running->Brush->Color=clLime;
Shape_3_Warning->Brush->Color=clYellow;
}
//--------------------------------------------------------------------------
void __fastcall TForm_Main::Clear_All_Hint(void)
{
Label_Hint1->Caption="";
Label_Hint2->Caption="";
Label_Hint3->Caption="";
}
//--------------------------------------------------------------------------
void __fastcall TForm_Main::Reset_All_ProgressBar(void)
{
ProgressBar_Total->Position=0;
ProgressBar_Total->Max=CHK.Total_Times;
Label_Total->Caption="0/"+String(ProgressBar_Total->Max);

ProgressBar_Single->Position=0;
ProgressBar_Single->Max=CHK.Spray_Time+CHK.InOut_Time+CHK.Break_Time;
Label_Single->Caption="0/"+String(ProgressBar_Single->Max);

ProgressBar_Air->Position=0;
ProgressBar_Air->Max=CHK.Spray_Time;
Label_Air->Caption="0/"+String(ProgressBar_Air->Max);

ProgressBar_In_Out->Position=0;
ProgressBar_In_Out->Max=CHK.InOut_Time;
Label_In_Out->Caption="0/"+String(ProgressBar_In_Out->Max);

ProgressBar_Pause->Position=0;
ProgressBar_Pause->Max=CHK.Break_Time;
Label_Pause->Caption="0/"+String(ProgressBar_Pause->Max);
Edit_Data_Send->Text="";
Edit_Data_Get->Text="";
}
//--------------------------------------------------------------------------
void __fastcall TForm_Main::Init_Check_Value(int Total,int Air,int PP,int Rest)
{
CHK.Total_Times=Total;
CHK.Spray_Time=Air;
CHK.InOut_Time=PP;
CHK.Break_Time=Rest;
}
//--------------------------------------------------------------------------
void __fastcall TForm_Main::Init_Comm_Value()
{
TIniFile *NN;                 //从初始化文件读取设置
       NN = new TIniFile(Form_Main->str_EXEC_PATH + "\\DCW.ini");
       COMM.Comm_No=NN->ReadInteger("通讯参数","端口",1);//读端口号
       COMM.Comm_BaudRate=NN->ReadInteger("通讯参数","波特率",9600);//读波特率
       COMM.Comm_ByteSize=NN->ReadInteger("通讯参数","数据位",8);//读数据位数
       COMM.Comm_Parity=NN->ReadInteger("通讯参数","校验位",2);//读校验位
       COMM.Comm_StopBits=NN->ReadInteger("通讯参数","停止位",0);//读停止位
       CHK.Total_Times=NN->ReadInteger("测试参数","总循环次数",15);//
       CHK.Spray_Time=NN->ReadInteger("测试参数","吹粉尘时间",50);//
       CHK.InOut_Time=NN->ReadInteger("测试参数","进出次数",10);//
       CHK.Break_Time=NN->ReadInteger("测试参数","间歇时间",10950);//
       delete NN;
}
//------------------------------------------------------------------------
void __fastcall TForm_Main::BitBtn_Stop1Click(TObject *Sender)
{
AnsiString CMD,RS;

//Timer1->Enabled=false;
for(int i=0;i<2;i++)
if(REPORT.CHECK_1){
   CMD="01050930FF00";
   SendString(CMD);//发送工位1安装:强迫M304-1(地址\X0930)
   RS=ReadString();
   }
for(int i=0;i<2;i++)
if(REPORT.CHECK_1){
   CMD="010509300000";
   SendString(CMD);//发送工位1安装:强迫M304-0(地址\X0930)
   RS=ReadString();
   }

BitBtn_Set->Enabled=false;
BitBtn_Reset->Enabled=false;
BitBtn_Start_All->Enabled=false;
BitBtn_Start1->Enabled=false;

BitBtn_Stop1->Enabled=false;
BitBtn_StopAll->Enabled=true;
Shape_1_Stop->Brush->Color=clRed;

//Timer1->Enabled=true;
}
//---------------------------------------------------------------------------

void __fastcall TForm_Main::L1Click(TObject *Sender)
{
Form_Set_Comm->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TForm_Main::FormCloseQuery(TObject *Sender, bool &CanClose)
{
int R;

R=Application->MessageBox("退出监控并不会停止设备运行,但是无法获知设备的运行详细情况,确实要退出监控吗?","确认",MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2);
if(R==IDYES) {
   if(COMM.hComm) CloseHandle(COMM.hComm);
   Timer1->Enabled=false;
   CanClose=true;
   }
else CanClose=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm_Main::Open_Comm()
{
AnsiString Temp;
  char *CommNo;
      Temp = "COM" + IntToStr(Form_Main->COMM.Comm_No);
      CommNo = Temp.c_str();
      Form_Main->COMM.hComm = CreateFile(CommNo,GENERIC_READ|GENERIC_WRITE,0,NULL,
                                OPEN_EXISTING,0,0);
}
//-------------------------------------------------------------------------
void __fastcall TForm_Main::Set_Comm()
{
DCB dcb;
  GetCommState(Form_Main->COMM.hComm,&dcb);
  dcb.BaudRate = Form_Main->COMM.Comm_BaudRate;
  dcb.ByteSize = Form_Main->COMM.Comm_ByteSize;
  dcb.Parity   = Form_Main->COMM.Comm_Parity;
  dcb.StopBits = Form_Main->COMM.Comm_StopBits;

  if(!SetCommState(Form_Main->COMM.hComm,&dcb)){
     COMM.Comm_OK=false;
     }
  else
     COMM.Comm_OK=true;
}
//-------------------------------------------------------------------------
void __fastcall TForm_Main::Menu_OperateClick(TObject *Sender)
{
//Menu_Operate_Link->Enabled=!COMM.Linked;   
}
//---------------------------------------------------------------------------
void __fastcall TForm_Main::SendString(String Temp)//发送字符串(参数Temp无引导符号和后缀符号)
{
char *SendData;
unsigned long lrc,BS;

Temp=CheckString(Temp);//增加校验码
Temp=":"+Temp;//引导符

SendData=Temp.c_str();
BS=Temp.Length();
Edit_Data_Send->Text=Temp+"crlf";
WriteFile(COMM.hComm,SendData,BS,&lrc,NULL);//发送数据
}
/***************************************************************************/
String __fastcall TForm_Main::CheckString(String OutStr) //自定义字符串校验函数
{
int BufLen,i;
String CHKBuf,tmp;
DWORD CheckSum;
BufLen=OutStr.Length();
CheckSum=0;

for(i=0;i<BufLen/2;i++){
    tmp="\x"+OutStr.SubString(i*2+1,2);
    CheckSum=CheckSum+tmp.ToInt();
    }
CheckSum=CheckSum%256;
CheckSum=(~CheckSum)%256;
CheckSum+=1;
CHKBuf=CHKBuf.IntToHex(CheckSum,2);
return (OutStr+CHKBuf+'\x0d'+'\x0a');
}
//-----------------------------------------------------------------
/***************************************************************************/
String __fastcall TForm_Main::ReadString(void)//读字符串
{
String Temp;
char inbuff[1024];
DWORD nBytesRead,dwEvent,dwError;
COMSTAT cs;
long tt,dd;
unsigned char CH;

Temp="";
tt=GetTickCount();
do{     Timer1->Enabled=false;//000000000000000

⌨️ 快捷键说明

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