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