📄 rytestdlg.cpp
字号:
TerminateThread(hCOM5Thread->m_hThread,LpExit[5]);
hCOM5Thread->m_hThread=NULL;
//写DO信号
Sleep(1000);
if(hCOM5Thread->m_hThread==NULL)
{
LPVOID COM5hWnd=NULL;
hCOM5Thread=AfxBeginThread(COM5Thread,COM5hWnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
}
}
}
else num[5]=0;*/
/*if(watch[6]==count[6])
{
num[6]++;
if(num[6]>=3)
{
GetExitCodeThread(hCOM6Thread->m_hThread,&LpExit[6]);
ExitThread(LpExit[6]);
CloseHandle(m_hPort6);
CloseHandle(hCOM6Thread->m_hThread);
hCOM6Thread->m_hThread=NULL;
//写DO信号
Sleep(1000);
if(hCOM6Thread->m_hThread==NULL)
{
LPVOID COM6hWnd=NULL;
hCOM6Thread=AfxBeginThread(COM6Thread,COM6hWnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
}
}
}
else num[6]=0;*/
l1=serflag[132]+serflag[133];
l2=serflag[134]+serflag[135];
l3=serflag[136]+serflag[141];
l4=serflag[137]+serflag[138];
l5=serflag[139];
l6=serflag[140];
if(serflag[16]==1||serflag[18]==1||serflag[20]==1||serflag[22]==1||serflag[24]==1||
serflag[26]==1||serflag[28]==1||serflag[30]==1||(l1>=serflag[49])||(l2>=serflag[55])
||(l3>=serflag[61])||(l4>=serflag[67])||(l5>=serflag[73])||(l6>=serflag[79]))
{
COM1flag=0,COM2flag=0,COM3flag=0,COM5flag=0,COM4flag=0;
COM7flag=0,COM8flag=0;
send1flag=0,send2flag=0; //???
serflag[3]=0xaa;
serflag[7]=0xaa;
serflag[11]=0xaa;
serflag[5]=0x04;
serflag[30]=1;
SingalRead(0xDE021,0); //清除DO信号
SingalRead(0xDE020,0);
Sleep(6000);
sendflag=0,Rysflag=0;
LPVOID RyrhWnd=NULL;
Ryrflag=1,revflag=1;
watdog(0x01);
Ryr=AfxBeginThread(RyRThread,RyrhWnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
Monitorflag=0;
CloseHandle(Monitor->m_hThread);
return 0;
}
//Sleep(2000);
//watdog(0x00);
}
CloseHandle(Monitor->m_hThread);
return 0;
}
UINT RySThread(LPVOID pArg)
{
WSADATA Data;
SOCKET destSocket=INVALID_SOCKET,newSocket=INVALID_SOCKET;
SOCKADDR_IN destSockAddr,RemoteAddr;
unsigned long destAddr;
int status,addrlen;
unsigned char readbuf[26],id;
int i,n=0,l,numbytes;
char reg[1024];
unsigned short saveaddr;
Rysflag=1;
status=WSAStartup(MAKEWORD(2, 2),&Data);
if(status!=0)
exit(1);
destAddr=inet_addr(DEST_IP_ADDR2);
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)
exit(1);
}
if((bind(destSocket,(struct sockaddr*)&destSockAddr,sizeof(destSockAddr)))==SOCKET_ERROR)
{
status=closesocket(destSocket);
if(status==SOCKET_ERROR)
status=WSACleanup();
if(status==SOCKET_ERROR)
exit(1);
}
if(listen(destSocket,SOMAXCONN)==SOCKET_ERROR)
{
status=closesocket(destSocket);
if(status == SOCKET_ERROR)
status=WSACleanup();
if(status == SOCKET_ERROR)
exit(1);
}
while(Rysflag)
{
addrlen=sizeof(SOCKADDR_IN);
if(newSocket==INVALID_SOCKET)
{
newSocket=accept(destSocket,(SOCKADDR*)&RemoteAddr,&addrlen);
if(newSocket==INVALID_SOCKET)
{
status=closesocket(newSocket);
}
else sendflag=1;
//else if(newSocket!=INVALID_SOCKET)
{
while(sendflag)
{
if(newSocket!=INVALID_SOCKET)
{
memset(readbuf,0,sizeof(readbuf));
numbytes=recv(newSocket,(char*)readbuf,22,0);
readbuf[numbytes]=0;
if(numbytes!=SOCKET_ERROR&&numbytes!=0)
{
serflag[15]=0x00;
if(numbytes>=8)
{
if((readbuf[0]==0xff)&&(readbuf[1]==0xff))
{
id=readbuf[2];
switch(readbuf[3])
{
case 3:
memset(reg,0,sizeof(reg));
reg[0]=readbuf[0];
reg[1]=readbuf[1];
reg[2]=readbuf[2];
reg[3]=readbuf[3];
reg[4]=readbuf[4];
reg[5]=readbuf[5];
reg[6]=readbuf[6];
reg[7]=readbuf[7];
l=readbuf[6]*256+readbuf[7];
if(id==0)
{
//dev.Lock();
for(i=0;i<l;i++)
reg[i+8]=serflag[i];
//dev.Unlock();
send(newSocket,reg,l+8,0);
break;
}
if(id==1)
{
grc2041.Lock();
for(i=0;i<l;i++)
reg[i+8]=COM1Send[0][i];
grc2041.Unlock();
send(newSocket,reg,l+8,0);
break;
}
if(readbuf[2]==2)
{
grc2042.Lock();
for(i=0;i<l;i++)
reg[i+8]=COM1Send[1][i];
grc2042.Unlock();
send(newSocket,reg,l+8,0);
break;
}
if(readbuf[2]==3)
{
mmpr.Lock();
for(i=0;i<l;i++)
reg[i+8]=COM2Send[0][i];
mmpr.Unlock();
send(newSocket,reg,l+8,0);
break;
}
if(readbuf[2]==4)
{
mlpr.Lock();
for(i=0;i<l;i++)
reg[i+8]=COM2Send[1][i];
mlpr.Unlock();
send(newSocket,reg,l+8,0);
break;
}
if(readbuf[2]==5)
{
lsa1146.Lock();
for(i=0;i<l;i++)
reg[i+8]=COM3Send[0][i];
lsa1146.Unlock();
send(newSocket,reg,l+8,0);
break;
}
if(readbuf[2]==6)
{
ejw2000.Lock();
for(i=0;i<l;i++)
reg[i+8]=COM7Send[i];
ejw2000.Unlock();
send(newSocket,reg,l+8,0);
break;
}
if(readbuf[2]==7)
{
pt.Lock();
for(i=0;i<l;i++)
reg[i+8]=COM4Send[0][i];
pt.Unlock();
send(newSocket,reg,l+8,0);
break;
}
if(readbuf[2]==8)
{
chymlx.Lock();
for(i=0;i<l;i++)
reg[i+8]=COM5Send[0][i];
chymlx.Unlock();
send(newSocket,reg,l+8,0);
break;
}
if(readbuf[2]==9)
{
lsa1145.Lock();
for(i=0;i<l;i++)
reg[i+8]=COM3Send[1][i];
lsa1145.Unlock();
send(newSocket,reg,l+8,0);
break;
}
case 6:
send(newSocket,(char*)readbuf,8,0);
saveaddr=readbuf[5];
serflag[13]=0xAA;
if(id==1)
{
if(saveaddr==1||saveaddr==2||saveaddr==3)
{
grc2041.Lock();
COM1Send[id-1][saveaddr*2]=readbuf[6],COM1Send[id-1][saveaddr*2+1]=readbuf[7];
grc2041.Unlock();
}
break;
}
else if(id==2)
{
if(saveaddr==2||saveaddr==3)
{
grc2042.Lock();
COM1Send[id-1][saveaddr*2]=readbuf[6],COM1Send[id-1][saveaddr*2+1]=readbuf[7];
grc2042.Unlock();
}
break;
}
else if(id==3)
{
if(saveaddr==1||saveaddr==3)
{
mmpr.Lock();
COM2Send[id-3][saveaddr*2]=readbuf[6],COM2Send[id-3][saveaddr*2+1]=readbuf[7];
mmpr.Unlock();
}
break;
}
else if(id==4)
{
if(saveaddr==1||saveaddr==3)
{
mlpr.Lock();
COM2Send[id-3][saveaddr*2]=readbuf[6],COM2Send[id-3][saveaddr*2+1]=readbuf[7];
mlpr.Unlock();
}
break;
}
else if(id==5)
{
//if(saveaddr!=1||saveaddr!=17)
//break;
if(saveaddr==1)
{
lsa1146.Lock();
COM3Send[id-5][saveaddr*2]=readbuf[6],COM3Send[id-5][saveaddr*2+1]=readbuf[7];
lsa1146.Unlock();
}
break;
}
else if(id==7)
{
//if(saveaddr!=1||saveaddr!=17)
//break;
if(saveaddr==3)
{
pt.Lock();
COM4Send[id-7][saveaddr*2]=readbuf[6],COM4Send[id-7][saveaddr*2+1]=readbuf[7];
pt.Unlock();
}
break;
}
else if(id==9)
{
//if(saveaddr!=1||saveaddr!=17)
//break;
if(saveaddr==1)
{
lsa1145.Lock();
COM3Send[id-8][saveaddr*2]=readbuf[6],COM3Send[id-8][saveaddr*2+1]=readbuf[7];
lsa1145.Unlock();
}
break;
}
}
}
}
}
else if(numbytes==0||numbytes==SOCKET_ERROR)
{
serflag[15]=0xAA; //冗余网口故障
closesocket(newSocket);
newSocket=INVALID_SOCKET;
sendflag=0;
}
}
}
}
}
} //while(1)
closesocket(newSocket);
newSocket=INVALID_SOCKET;
CloseHandle(Rys->m_hThread);
return 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -