📄 rytestdlg.cpp
字号:
}
UINT RyRThread(LPVOID pArg)
{
WSADATA Data;
SOCKADDR_IN destSockAddr;
SOCKET destSocket=INVALID_SOCKET;
unsigned long destAddr;
int i,j,status,l;
int numbytes,ErrNum;
BYTE readbuf[1024];
BYTE fun1[8]={0xFF,0xFF,0x00,0x03,0x00,0x00,0x00,0x00};
BYTE fun2[8]={0xFF,0xFF,0x00,0x06,0x00,0x00,0x00,0x00};
BYTE id[40]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
Ryrflag=1;
while(Ryrflag)
{
status=WSAStartup(MAKEWORD(2,2),&Data);
if(status!=0)
return 0;
destAddr=inet_addr(DEST_IP_ADDR3);
memcpy(&destSockAddr.sin_addr,&destAddr,sizeof(destAddr));
destSockAddr.sin_port=htons(PORT2);
destSockAddr.sin_family=AF_INET;
destSocket=socket(AF_INET,SOCK_STREAM,0);
if(destSocket==INVALID_SOCKET)
{
status=WSACleanup();
if(status == SOCKET_ERROR)
return(1);
}
status=connect(destSocket,(struct sockaddr*)&destSockAddr,sizeof(struct sockaddr));
//status=WSAGetLastError();
if(status==SOCKET_ERROR)
{
status=closesocket(destSocket);
if(status == SOCKET_ERROR)
status=WSACleanup();
revflag=0;
ErrNum++;
}
else revflag=1;
if(ErrNum>=20)
{
ErrNum=0;
AfxMessageBox(_T("Connect fail more than 20 times!"));
}
while(revflag)
{
//SingalRead(0xDE020,1); //写DO信号给主服务器
for(i=0;i<10;i++)
{
fun1[2]=id[i];
if(i==0)
fun1[6]=220/256,fun1[7]=220%256;
else if(i==6)
fun1[6]=40/256,fun1[7]=40%256;
else fun1[6]=800/256,fun1[7]=800%256;
numbytes=send(destSocket,(char*)fun1,8,0);
l=fun1[6]*256+fun1[7];
numbytes=recv(destSocket,(char*)readbuf,l+8,0);
if(numbytes!=SOCKET_ERROR&&numbytes!=0)
{
serflag[15]=0x00;
if(numbytes>=l+8)
{
if((readbuf[0]==0xff)&&(readbuf[1]==0xff))
{
switch(readbuf[2])
{
case 0:
{
for(j=0;j<l;j++)
serflag[j]=readbuf[j+8];
if(readbuf[3]==0xaa||readbuf[7]==0xaa||readbuf[11]==0xaa)
{
SingalRead(0xDE011,5); //读DI信号
if(DI[1]==1) //无信号
{
//冗余服务器变为主服务器
SingalRead(0xDE020,1); //写DO信号
revflag=0,Ryrflag=0;
LPVOID COM1hWnd=NULL,COM2hWnd=NULL,COM3hWnd=NULL,COM7hWnd=NULL,COM4hWnd=NULL,
COM5hWnd=NULL,MBTCPSlave1Wnd=NULL,RyshWnd=NULL,MonitorhWnd=NULL;
COM1flag=TRUE,COM2flag=TRUE,COM3flag=TRUE,COM5flag=TRUE,COM4flag=TRUE;
COM7flag=TRUE,COM8flag=TRUE;
//send1flag=TRUE,send2flag=TRUE;
SOCKflag=1,Rysflag=1,Monitorflag=1,sendflag=1;
hCOM1Thread=AfxBeginThread(COM1Thread,COM1hWnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
hCOM2Thread=AfxBeginThread(COM2Thread,COM2hWnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
hCOM3Thread=AfxBeginThread(COM3Thread,COM3hWnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
hCOM7Thread=AfxBeginThread(COM7Thread,COM7hWnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
hCOM4Thread=AfxBeginThread(COM4Thread,COM4hWnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
hCOM5Thread=AfxBeginThread(COM5Thread,COM5hWnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
Rys=AfxBeginThread(RySThread,RyshWnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
Sleep(5000);
Monitor=AfxBeginThread(MonitorThread,MonitorhWnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
serflag[3]=0x00,serflag[5]=0x03;
closesocket(destSocket);
destSocket=INVALID_SOCKET;
CloseHandle(Ryr->m_hThread);
return 0;
}
}
else serflag[3]=0xAA;
serflag[5]=0x04;
break;
}
case 1:
{
for(j=0;j<l;j++)
COM1Send[0][j]=readbuf[j+8];
break;
}
case 2:
{
for(j=0;j<l;j++)
COM1Send[1][j]=readbuf[j+8];
break;
}
case 3:
{
for(j=0;j<l;j++)
COM2Send[0][j]=readbuf[j+8];
break;
}
case 4:
{
for(j=0;j<l;j++)
COM2Send[1][j]=readbuf[j+8];
break;
}
case 5:
{
for(j=0;j<l;j++)
COM3Send[0][j]=readbuf[j+8];
break;
}
case 6:
{
for(j=0;j<l;j++)
COM7Send[j]=readbuf[j+8];
break;
}
case 7:
{
for(j=0;j<l;j++)
COM4Send[0][j]=readbuf[j+8];
break;
}
case 8:
{
for(j=0;j<l;j++)
COM5Send[0][j]=readbuf[j+8];
break;
}
case 9:
{
for(j=0;j<l;j++)
COM3Send[1][j]=readbuf[j+8];
break;
}
} //switch
} //if(readbuf[0]==0xff)
} //if(numbytes>=l+8)
} //if(numbytes!=0)
else if((numbytes==0)||(numbytes==SOCKET_ERROR))
{
serflag[15]=0xAA; //冗余网口故障
closesocket(destSocket);
destSocket=INVALID_SOCKET;
revflag=0;
break;
}
} //for(i)
if((newSocket1!=INVALID_SOCKET)||(newSocket2!=INVALID_SOCKET)
||(newSocket3!=INVALID_SOCKET)
||(newSocket4!=INVALID_SOCKET)
||(newSocket5!=INVALID_SOCKET))
{
for(i=1;i<3;i++)
{
fun2[2]=i;
if(COM1Send[i-1][3]==0xf0||COM1Send[i-1][3]==0x0f)
{
fun2[5]=0x01;
fun2[6]=0x00,fun2[7]=COM1Send[i-1][3];
send(destSocket,(char*)fun2,8,0);
numbytes=recv(destSocket,(char*)readbuf,8,0);
if(numbytes==8)
{
serflag[15]=0x00;
if(readbuf[0]==0xFF&&readbuf[1]==0xFF&&readbuf[2]==0x01&&readbuf[3]==0x06)
COM1Send[i-1][3]=0x01;
}
else if((numbytes==0)||(numbytes==SOCKET_ERROR))
{
serflag[15]=0xAA; //冗余网口故障
closesocket(destSocket);
destSocket=INVALID_SOCKET;
revflag=0;
}
}
if(COM1Send[i-1][5]==0x0f)
{
fun2[5]=0x02;
fun2[6]=0x00,fun2[7]=COM1Send[i-1][5];
send(destSocket,(char*)fun2,8,0);
numbytes=recv(destSocket,(char*)readbuf,8,0);
if(numbytes==8)
{
serflag[15]=0x00;
if(readbuf[0]==0xFF&&readbuf[1]==0xFF&&readbuf[2]==0x01&&readbuf[3]==0x06)
COM1Send[i-1][5]=0x01;
}
else if((numbytes==0)||(numbytes==SOCKET_ERROR))
{
serflag[15]=0xAA; //冗余网口故障
closesocket(destSocket);
destSocket=INVALID_SOCKET;
revflag=0;
}
}
if(COM1Send[i-1][7]==0x0f)
{
fun2[5]=0x03;
fun2[6]=0x00,fun2[7]=COM1Send[i-1][7];
send(destSocket,(char*)fun2,8,0);
numbytes=recv(destSocket,(char*)readbuf,8,0);
if(numbytes==8)
{
serflag[15]=0x00;
if(readbuf[0]==0xFF&&readbuf[1]==0xFF&&readbuf[2]==0x01&&readbuf[3]==0x06)
COM1Send[i-1][7]=0x01;
}
else if((numbytes==0)||(numbytes==SOCKET_ERROR))
{
serflag[15]=0xAA; //冗余网口故障
closesocket(destSocket);
destSocket=INVALID_SOCKET;
revflag=0;
}
}
}
for(i=3;i<5;i++)
{
fun2[2]=i;
if(COM2Send[i-3][3]!=0x00&&COM2Send[i-3][3]!=0x01)
{
fun2[5]=0x01;
fun2[6]=COM2Send[i-3][2],fun2[7]=COM2Send[i-3][3];
send(destSocket,(char*)fun2,8,0);
numbytes=recv(destSocket,(char*)readbuf,8,0);
if(numbytes==8)
{
serflag[15]=0x00;
if(readbuf[0]==0xFF&&readbuf[1]==0xFF&&readbuf[2]==0x01&&readbuf[3]==0x06)
COM2Send[i-3][3]=0x01;
}
else if((numbytes==0)||(numbytes==SOCKET_ERROR))
{
serflag[15]=0xAA; //冗余网口故障
closesocket(destSocket);
destSocket=INVALID_SOCKET;
revflag=0;
}
}
if(COM2Send[i-3][7]!=0x00&&COM2Send[i-3][7]!=0x01)
{
fun2[5]=0x03;
fun2[6]=COM1Send[i-3][6],fun2[7]=COM1Send[i-3][7];
send(destSocket,(char*)fun2,8,0);
numbytes=recv(destSocket,(char*)readbuf,8,0);
if(numbytes==8)
{
serflag[15]=0x00;
if(readbuf[0]==0xFF&&readbuf[1]==0xFF&&readbuf[2]==0x01&&readbuf[3]==0x06)
COM2Send[i-3][7]=0x01;
}
else if((numbytes==0)||(numbytes==SOCKET_ERROR))
{
serflag[15]=0xAA; //冗余网口故障
closesocket(destSocket);
destSocket=INVALID_SOCKET;
revflag=0;
}
}
}
for(i=5;i<6;i++)
{
fun2[2]=i;
if(COM3Send[i-5][3]!=0x00&&COM2Send[i-5][3]!=0x01)
{
fun2[5]=0x01;
fun2[6]=COM3Send[i-5][2],fun2[7]=COM3Send[i-5][3];
send(destSocket,(char*)fun2,8,0);
numbytes=recv(destSocket,(char*)readbuf,8,0);
if(numbytes==8)
{
serflag[15]=0x00;
if(readbuf[0]==0xFF&&readbuf[1]==0xFF&&readbuf[2]==0x01&&readbuf[3]==0x06)
COM3Send[i-5][3]=0x01;
}
else if((numbytes==0)||(numbytes==SOCKET_ERROR))
{
serflag[15]=0xAA; //冗余网口故障
closesocket(destSocket);
destSocket=INVALID_SOCKET;
revflag=0;
}
}
}
for(i=7;i<8;i++)
{
fun2[2]=i;
if(COM4Send[i-7][7]==0x0F)
{
fun2[5]=0x03;
fun2[6]=COM4Send[i-7][6],fun2[7]=COM4Send[i-7][7];
send(destSocket,(char*)fun2,8,0);
numbytes=recv(destSocket,(char*)readbuf,8,0);
if(numbytes==8)
{
serflag[15]=0x00;
if(readbuf[0]==0xFF&&readbuf[1]==0xFF&&readbuf[2]==0x01&&readbuf[3]==0x06)
COM4Send[i-7][7]=0x01;
}
else if((numbytes==0)||(numbytes==SOCKET_ERROR))
{
serflag[15]=0xAA; //冗余网口故障
closesocket(destSocket);
destSocket=INVALID_SOCKET;
revflag=0;
}
}
}
for(i=9;i<10;i++)
{
fun2[2]=i;
if(COM3Send[i-8][3]!=0x00&&COM2Send[i-8][3]!=0x01)
{
fun2[5]=0x01;
fun2[6]=COM3Send[i-8][2],fun2[6]=COM3Send[i-8][3];
send(destSocket,(char*)fun2,8,0);
numbytes=recv(destSocket,(char*)readbuf,8,0);
if(numbytes==8)
{
serflag[15]=0x00;
if(readbuf[0]==0xFF&&readbuf[1]==0xFF&&readbuf[2]==0x01&&readbuf[3]==0x06)
COM3Send[i-8][3]=0x01;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -