📄 main.cpp
字号:
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 + -