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

📄 dwmain.cpp

📁 vb直流系统上位机测试软件,直流电力监控系统源码。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	case IDC_TIMER1:   //灯的各种状态控制
	  if ((slampOn==1)&&(SingleLampNumber!=0))
	  {
		k=SingleLampNumber;
		//add program in here
		KillTimer(IDC_TIMER3);   //stop data inspect
		for( s3=0;s3<23;s3++){ Visit_East_data[s3]=Control_data[s3];}
		Visit_East_data[14]=0x00;  //0-on,1-off,2-flash
		Visit_East_data[15]=k;
		Visit_East_data[19]=k;
		if (SendNumber<=5)
		  {GuZhangZhuangTai();SendNumber++;}
		 else {SendNumber=0;
				 slampOn=0;
				 SingleLampNumber=0;
				 SetTimer(IDC_TIMER3,1000);
				}
	  }
	  if ((slampOff==1)&&(SingleLampNumber!=0))
		{
		k=SingleLampNumber;
		//add program in here
		KillTimer(IDC_TIMER3);   //stop data inspect
		for( s3=0;s3<23;s3++){ Visit_East_data[s3]=Control_data[s3];}
		Visit_East_data[14]=0x01;  //0-on,1-off,2-flash
		Visit_East_data[15]=k;
		Visit_East_data[19]=k;
		if (SendNumber<=5)
		  {GuZhangZhuangTai();SendNumber++;}
		 else {SendNumber=0;
				 slampOff=0;
				 SingleLampNumber=0;
				 SetTimer(IDC_TIMER3,1000);
				}
		//add program in here
	  }
	 if ((slampflash==1)&&(SingleLampNumber!=0))
	  {
		k=SingleLampNumber;
		//add program in here
		KillTimer(IDC_TIMER3);   //stop data inspect
		for( s3=0;s3<23;s3++){ Visit_East_data[s3]=Control_data[s3];}
		Visit_East_data[14]=0x02;  //0-on,1-off,2-flash
		Visit_East_data[15]=k;
		Visit_East_data[19]=k;
		if (SendNumber<=5)
		  {GuZhangZhuangTai();SendNumber++;}
		 else {SendNumber=0;
				 slampflash=0;
				 SingleLampNumber=0;
				 SetTimer(IDC_TIMER3,1000);
				}
		//add program in here
	  }
	 if ((plampOn==1)&&(PartsLampNumber1!=0)&&(PartsLampNumber2!=0))
	  {
		 k1=PartsLampNumber1;
		 k2=PartsLampNumber2;
		 //add code in here
		KillTimer(IDC_TIMER3);   //stop data inspect
		for( s3=0;s3<23;s3++){ Visit_East_data[s3]=Parts_Data[s3];}
		Visit_East_data[14]=0x00;  //0-on,1-off,2-flash
		Visit_East_data[15]=k1;
		Visit_East_data[19]=k2;
		if (SendNumber<=5)
		  {GuZhangZhuangTai();SendNumber++;}
		 else {SendNumber=0;
				 plampOn=0;
				 PartsLampNumber1=0;
				 PartsLampNumber2=0;
				 SetTimer(IDC_TIMER3,1000);
				}
	  }
	 if ((plampOff==1)&&(PartsLampNumber1!=0)&&(PartsLampNumber2!=0))
	  {
		 k1=PartsLampNumber1;
		 k2=PartsLampNumber2;
		 //add code in here
		KillTimer(IDC_TIMER3);   //stop data inspect
		for( s3=0;s3<23;s3++){ Visit_East_data[s3]=Parts_Data[s3];}
		Visit_East_data[14]=0x00;  //0-on,1-off,2-flash
		Visit_East_data[15]=k1;
		Visit_East_data[19]=k2;
		if (SendNumber<=5)
		  {GuZhangZhuangTai();SendNumber++;}
		 else {SendNumber=0;
				 plampOff=0;
				 PartsLampNumber1=0;
				 PartsLampNumber2=0;
				 SetTimer(IDC_TIMER3,1000);
				}
	  }
	 if ((plampflash==2)&&(PartsLampNumber1!=0)&&(PartsLampNumber2!=0))
	  {
		 k1=PartsLampNumber1;
		 k2=PartsLampNumber2;
		 //add code in here
		 KillTimer(IDC_TIMER3);   //stop data inspect
		for( s3=0;s3<23;s3++){ Visit_East_data[s3]=Parts_Data[s3];}
		Visit_East_data[14]=0x00;  //0-on,1-off,2-flash
		Visit_East_data[15]=k1;
		Visit_East_data[19]=k2;
		if (SendNumber<=5)
		  {GuZhangZhuangTai();SendNumber++;}
		 else {SendNumber=0;
				 plampflash=0;
				 PartsLampNumber1=0;
				 PartsLampNumber2=0;
				 SetTimer(IDC_TIMER3,1000);
				}
	  }
	  DrawLampStation();
	//调光器处理开始
	 if (gj!=0)
	 {
		KillTimer(IDC_TIMER3);   //stop data inspect
		MydelaY(100);
		Lrc_visit=0;
		for( s3=0;s3<23;s3++){ Visit_East_data[s3]=tControl_data[s3];}
		Visit_East_data[3]=0xfd;
		Visit_East_data[8]=0x02;
		Visit_East_data[18]=gj;     //1为关机,0为开机
		for( s31=3;s31<=21;s31++){ Lrc_visit+=Visit_East_data[s31];}
		Lrc_visit=0xff&Lrc_visit;
		Lrc_visit=0xff-Lrc_visit;
		Visit_East_data[22]=Lrc_visit;
		for( s32=0;s32<=23;s32++){Control_data[s32]=Visit_East_data[s32];}
		VisitControlData();
		TrCount++;
		gj=0;
		SetTimer(IDC_TIMER3,1000);
	 }

	//调光器处理结束?
	break;
  case IDC_TIMER2:
		 char  z3_buf_temp[150];
		 Lrc=0;rCount=0;
		 for ( i1=0;i1<255;i1++) {Center_read_data[i1]=0;}
		 Get_Leng(&length);
		 InitData(&buffer,&pflag_com1);
		 for ( i2=0;i2<255;i2++) {Center_read_data[i2]=*(unsigned char*)(buffer+i2);}


			//控制定位主机的返回命令------------------------------------------
			  rCount=0;Lrc=0;
		 while ((Center_read_data[rCount]!=0x27)&&(Center_read_data[rCount+2]!=0x81)&&(rCount<=200))
				{rCount++;}
			 if ((Center_read_data[rCount]==0x27)&& (Center_read_data[rCount+2]==0x81))
			  {//1.1
				 for ( len1=0;len1<=11;len1++) {Control_response_data[len1]=Center_read_data[len1+rCount];}
				 for ( c1=1;c1<=10;c1++){Lrc+=Control_response_data[c1];}
				 Lrc=Lrc&0xff;
				 Lrc=0xff-Lrc;
				if (Control_response_data[11]==Lrc)
				 {
				  ReCount++;
				  wsprintf(ls1,"%d ",ReCount);
				  ed1->SetText(ls1);
				  Init_Num();
				  for(int i=0;i<=11;i++){
					 sprintf(&z3_buf_temp[i*3]," %2x",Control_response_data[i]);}
				  ed4->SetText((unsigned char*)z3_buf_temp);
				 }
			  }
				wsprintf(ls1,"%d ",ReCount);
				ed1->SetText(ls1);
				wsprintf(ls1,"%d ",TrCount);
				ed2->SetText(ls1);

	//访问定位主机测试命令的响应命令开始---------------------------
				rCount=0;Lrc=0;
			 while ((Center_read_data[rCount]!=0x27)&&
					(Center_read_data[rCount+2]!=0x83)&&(rCount<=200))
				{rCount++;}
			 if ((Center_read_data[rCount]==0x27)  &&
						(Center_read_data[rCount+2]==0x83))
			  { //1.1
			 if (dw==2)
				{
				 for ( len4=0;len4<=36;len4++) {Test_response_data[len4]=Center_read_data[len4+rCount];}
				 for ( c4=1;c4<=35;c4++){Lrc+=Test_response_data[c4];}
				 Lrc=Lrc&0xff;
				 Lrc=0xff-Lrc;
				if (Test_response_data[36]==Lrc)
				 {//2.4
				  for (int st=0;st<=36;st++)
					PressData[st]=Test_response_data[st];
				  Init_Num();
				  InspectDataPress();
				  ReCount++;
					for(int i=0;i<=36;i++){
					 sprintf(&z3_buf_temp[i*3]," %2x",PressData[i]);}
				  ed4->SetText((unsigned char*)z3_buf_temp);
				 }
				}
			  if (cs=2)
				{
				 for ( len4=0;len4<=44;len4++) {Test_response_data[len4]=Center_read_data[len4+rCount];}
				 for ( c4=1;c4<=43;c4++){Lrc+=Test_response_data[c4];}
				 Lrc=Lrc&0xff;
				 Lrc=0xff-Lrc;
				if (Test_response_data[44]==Lrc)
				 {
				  for (int st=0;st<=44;st++)
					PressData[st]=Test_response_data[st];
				  Init_Num();
				  InspectDataPress();
				  ReCount++;
					for(int i=0;i<=44;i++){
					 sprintf(&z3_buf_temp[i*3]," %2x",PressData[i]);}
				  ed4->SetText((unsigned char*)z3_buf_temp);
				 }
				}
			  }//1.1

//			  PressData[18]=0x03;
//			  PressData[22]=0x02;
//			  PressData[26]=0x03;
//			  InspectDataPress();
			  Lrc=0;rCount=0;
			 com2_read_data();
		 //灯光站计算机发来的测试命令----------------------------------------
		  while ((Lamp_read_data[rCount]!=0x14)&&(Lamp_read_data[rCount+2]!=0x83)&&(rCount<=200))
				{rCount++;}
			 if ((Lamp_read_data[rCount]==0x14)&& (Lamp_read_data[rCount+2]==0x83))
			  {//1.1
				 for ( len3=0;len3<=10;len3++) {Control_command_data[len3]=Lamp_read_data[len3+rCount];}
				 for ( c3=1;c3<=9;c3++){Lrc+=Control_command_data[c3];}
				 Lrc=Lrc&0xff;
				 Lrc=0xff-Lrc;
				if (Control_command_data[10]==Lrc)
				 {
				  Init_Num();
				  BackLampStationData();
				 }
			  }
		 //灯光站计算机发来的控制命令-----------------------------------------------
		 while ((Lamp_read_data[rCount]!=0x14)&&(Lamp_read_data[rCount+2]!=0x81)&&(rCount<=200))
				{rCount++;}
			 if ((Lamp_read_data[rCount]==0x14)&& (Lamp_read_data[rCount+2]==0x81))
			  {//1.1
				 for ( len2=0;len2<=13;len2++) {Control_command_data[len2]=Lamp_read_data[len2+rCount];}
				 for ( c2=1;c2<=12;c2++){Lrc+=Control_command_data[c2];}
				 Lrc=Lrc&0xff;
				 Lrc=0xff-Lrc;
				if (Control_command_data[13]==Lrc)
				 {
				  Init_Num();
				  Lrc=0;
				  BackControl[13]=0xff;
				  for ( c3=3;c3<=13;c3++){Lrc+=BackControl[c3];}
				  Lrc=Lrc&0xff;
				  Lrc=0xff-Lrc;
				  BackControl[13]=Lrc;
				  ControlBackData();
				  if (Control_command_data[7]!=0)
				  {
					 switch (Control_command_data[6])
					 {
					  case 1:slampOn=1;SingleLampNumber=Control_command_data[7];break;
					  case 2:slampOff=1;SingleLampNumber=Control_command_data[7];break;
					  case 3:slampflash=1;SingleLampNumber=Control_command_data[7];break;
					 }
				  }
				  for(int i1=0;i1<=15;i1++){
					 sprintf(&z3_buf_temp[i1*3]," %2x",Control_response_data[i1]);}
				  ed4->SetText((unsigned char*)z3_buf_temp);
				 }
				 else
				 {
				  BackControl[13]=0xff;
				  for ( c3=3;c3<=13;c2++){Lrc+=BackControl[c3];}
				  Lrc=Lrc&0xff;
				  Lrc=0xff-Lrc;
				  BackControl[13]=Lrc;
				  ControlBackData();
				  }
			  }
		 //控制命令-----------------------------------------------

				break;
	 case IDC_TIMER3:
					Lrc_visit=0;
					if (dw==2)
						{
						for( s1=0;s1<=16;s1++)
						 {Visit_Tower_data[s1]=SendInspect[s1];}
						}
					else
						{
						for( s1=0;s1<=16;s1++) {Visit_Tower_data[s1]=Visit_data[s1];}
						Visit_Tower_data[3]=0xfd;
						Visit_Tower_data[8]=0x07;
						}
					for( s11=3;s11<=15;s11++){ Lrc_visit+=Visit_Tower_data[s11];}
					Lrc_visit=0xff&Lrc_visit;
					Lrc_visit=0xff-Lrc_visit;
					Visit_Tower_data[16]=Lrc_visit;
					for( s12=0;s12<=17;s12++){Send_data[s12]=Visit_Tower_data[s12];}
					VisitSendData();
					TrCount++;
			  break;
	}
}
void  TMainWindow::VisitSendData()
{
  outportb(0x3fc,0x0b);
  for(int t=0;t<=16+1;t++)  //多发送一个为了对方稳定接受
	{
	  outportb(0x3f8,Send_data[t]);
	  if (dw==2)Mydelay(3);
		 else Mydelay(5);
	  while(!(inportb(0x3fd)&0x20));
	};
  outportb(0x3fc,0x09);
}
void  TMainWindow::VisitControlData()
{
  outportb(0x3fc,0x0b);
  for(int t=0;t<=23+1;t++)  //多发送一个为了对方稳定接受
	{
	  outportb(0x3f8,Control_data[t]);
	  Mydelay(3);
	  while(!(inportb(0x3fd)&0x20));
	};
  outportb(0x3fc,0x09);
}
void TMainWindow::ControlBackData()
{
 outportb(0x3fc,0x0b);
  for(int t=0;t<=13+1;t++)  //多发送一个为了对方稳定接受
	{
	  outportb(0x3f8,BackControl[t]);
	  Mydelay(3);
	  while(!(inportb(0x3fd)&0x20));
	};
  outportb(0x3fc,0x09);
}
void  TMainWindow::InspectDataPress()
{
	LampData[8]=0;
	switch (PressData[14])  //#0 lamp
	{
	 case 0: Lamp0Station=0; break;
	 case 1: Lamp0Station=1; break;
	 case 2: Lamp0Station=2; break;
	 case 3: Lamp0Station=3; break;
	}
	switch (PressData[18])  //#1 lamp
	{
	 case 0: Lamp1Station=0; break;
	 case 1: Lamp1Station=1;LampData[8]=LampData[8]|0x40; break;
	 case 2: Lamp1Station=2;LampData[8]=LampData[8]|0x80; break;
	 case 3: Lamp1Station=3;LampData[8]=LampData[8]|0xc0; break;
	}
	switch (PressData[22])  //#2 lamp
	{
	 case 0: Lamp2Station=0;  break;
	 case 1: Lamp2Station=1;LampData[8]=LampData[8]|0x10;break;
	 case 2: Lamp2Station=2;LampData[8]=LampData[8]|0x20; break;
	 case 3: Lamp2Station=3;LampData[8]=LampData[8]|0x30; break;
	}
	switch (PressData[26])  //#3 lamp
	{
	 case 0: Lamp3Station=0;  break;
	 case 1: Lamp3Station=1;LampData[8]=LampData[8]|0x04; break;
	 case 2: Lamp3Station=2;LampData[8]=LampData[8]|0x08; break;
	 case 3: Lamp3Station=3;LampData[8]=LampData[8]|0x0c; break;
	}
	switch (PressData[30])  //#4 lamp
	{
	 case 0: Lamp4Station=0; break;
	 case 1: Lamp4Station=1; break;
	 case 2: Lamp4Station=2; break;
	 case 3: Lamp4Station=3; break;
	}
	switch (PressData[34])  //#5 lamp
	{
	 case 0: Lamp5Station=0; break;
	 case 1: Lamp5Station=1; break;
	 case 2: Lamp5Station=2; break;
	 case 3: Lamp5Station=3; break;
	}

}
void  TMainWindow::SendLampData()
{
  outportb(0x18c,0x0b);
  for(int t=0;t<=48+1;t++)  //多发送一个为了对方稳定接受
	{
	  outportb(0x188,LampData[t]);
	  Mydelay(1);
	  while(!(inportb(0x18d)&0x20));
	};
  outportb(0x18c,0x09);
}
void TMainWindow::BackLampStationData()
{
 int  Lrc_lamp=0;
 for (int n=3;n<=47;n++){Lrc_lamp+=LampData[n];}
 Lrc_lamp=Lrc_lamp&0xff;
 Lrc_lamp=0xff-Lrc_lamp;
 LampData[48]=Lrc_lamp;
 SendLampData();
 }
void TMainWindow::com2_read_data()
{
 int i1=0,ls1=0;
 long timeout=0;
 outportb(0x18c,0x09);
 for(int i=0;i<255;i++)Lamp_read_data[i]=0;
 while(((timeout++)<16800)&&(i1<70))
  {
	if(inport(0x18d)&0x01)
	{
	i1++;
	Lamp_read_data[ls1++]=(char)inportb(0x188);//inportb(0x2f8);
	}
  }
}

⌨️ 快捷键说明

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