📄 rytestdlg.cpp
字号:
}
else if(numbytes==0||numbytes==SOCKET_ERROR)
{
serflag[15]=0xAA; //冗余网口故障
closesocket(destSocket);
destSocket=INVALID_SOCKET;
revflag=0;
}
}
}
}//if(socket)
if(serflag[15]==0xAA)
{
SingalRead(0xDE011,5);
if(DI[1]==1)
{
//冗余服务器变为主服务器
SingalRead(0xDE020,1);
Ryrflag=0,revflag=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;
SingalRead(0xDE021,1);
closesocket(destSocket);
destSocket=INVALID_SOCKET;
CloseHandle(Ryr->m_hThread);
return 0;
}
}
} //while(revflag)
}//while(Rysflag)
closesocket(destSocket);
destSocket=INVALID_SOCKET;
CloseHandle(Ryr->m_hThread);
return 0;
}
UINT COM1Thread(LPVOID pArg)
{
HWND hWnd;
hWnd=(HWND)pArg;
DCB PortDCB1;
COMMTIMEOUTS CommTimeouts1;
DWORD dwBytesWritten=0,dwByteRead=0;
BYTE fun1[21]={0xEB,0x90,0xEB,0x90,0x02,0xFF,0x47,0x01,0x00,0x0C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x03}; // check time
BYTE fun2[13]={0xEB,0x90,0xEB,0x90,0x02,0x02,0x46,0x01,0x00,0x04,0x00,0x00,0x03}; //FU GUI
BYTE fun3[13]={0xEB,0x90,0xEB,0x90,0x02,0x02,0x40,0x01,0x00,0x04,0x00,0x00,0x03}; //C1
BYTE fun4[13]={0xEB,0x90,0xEB,0x90,0x02,0x02,0x06,0x01,0x00,0x04,0x0d,0x00,0x03}; // ACK
BYTE fun5[13]={0xEB,0x90,0xEB,0x90,0x02,0x02,0x43,0x01,0x00,0x04,0x00,0x00,0x03}; // MO NI LIANG
BYTE fun6[13]={0xEB,0x90,0xEB,0x90,0x02,0x01,0x50,0x01,0x00,0x04,0x00,0x00,0x03}; // YAO CE
BYTE fun7[13]={0xEB,0x90,0xEB,0x90,0x02,0x01,0x54,0x01,0x00,0x04,0x00,0x00,0x03}; // YAO XIN
BYTE fun8[19]={0xEB,0x90,0xEB,0x90,0x02,0x01,0x52,0x01,0x00,0x0A,0x00,0xCC,0xFF,
0x33,0x00,0xCC,0x00,0x00,0x03}; // YAO KONG HE
BYTE fun9[19]={0xEB,0x90,0xEB,0x90,0x02,0x01,0x53,0x01,0x00,0x0A,0x00,0xCC,0xFF,
0x33,0x00,0xCC,0x00,0x00,0x03}; // YAO KONG HE ACK
BYTE fun10[19]={0xEB,0x90,0xEB,0x90,0x02,0x01,0x57,0x01,0x00,0x0A,0x00,0xCC,0xFF,
0x33,0x00,0xCC,0x00,0x00,0x03}; // YAO KONG HE CANEL
BYTE fun11[19]={0xEB,0x90,0xEB,0x90,0x02,0x01,0x52,0x01,0x00,0x0A,0x00,0x33,0xFF,
0xCC,0x00,0x33,0x00,0x00,0x03}; // YAO KONG FEN
BYTE fun12[19]={0xEB,0x90,0xEB,0x90,0x02,0x01,0x53,0x01,0x00,0x0A,0x00,0x33,0xFF,
0xCC,0x00,0x33,0x00,0x00,0x03}; // YAO KONG FEN ACK
BYTE fun13[19]={0xEB,0x90,0xEB,0x90,0x02,0x01,0x57,0x01,0x00,0x0A,0x00,0x33,0xFF,
0xCC,0x00,0x33,0x00,0x00,0x03}; // YAO KONG FEN CANEL
BYTE fun14[13]={0xEB,0x90,0xEB,0x90,0x02,0x01,0x41,0x01,0x00,0x04,0x00,0x00,0x03}; //DING ZHI
BYTE fun15[13]={0xEB,0x90,0xEB,0x90,0x02,0x01,0x51,0x01,0x00,0x04,0x00,0x00,0x03}; //DIAN DU LIANG
BYTE Readbuf[80],codebuf[80],addr[5]={0x01,0x02,0x01,0x02,0x02},Col=0x01,flag=0x01;
unsigned short cs=0;
int i,j,n=0,l;
char DevErr[5]={0,0,0,0,0};
SYSTEMTIME time;
COM1Send[0][118]=COM1Send[1][118]=0;
COM1Send[0][119]=COM1Send[1][119]=0;
COM1flag=1;
while(COM1flag)
{
//watdog(0x04);
if(m_hPort1==INVALID_HANDLE_VALUE)
{
for(i=0;i<3;i++)
{
m_hPort1=CreateFile(_T("COM2:"),
GENERIC_READ | GENERIC_WRITE, // Access (read-write) mode
// Access (read-write) mode
0, // Share mode
NULL, // Pointer to the security attribute
OPEN_EXISTING,// How to open the serial port
0, // Port attributes
NULL);
if ( m_hPort1!=INVALID_HANDLE_VALUE)
{
PortDCB1.DCBlength=sizeof(DCB);
// Get the default port setting information.
GetCommState(m_hPort1,&PortDCB1);
// Change the DCB structure settings.
PortDCB1.fBinary=TRUE;
PortDCB1.fParity=TRUE;
PortDCB1.BaudRate = 4800; // Current baud
PortDCB1.ByteSize = 8; // Number of bits
PortDCB1.Parity = NOPARITY;
PortDCB1.StopBits = ONESTOPBIT;
SetCommState (m_hPort1, &PortDCB1);
// Configure the port according to the specifications of the DCB
GetCommTimeouts(m_hPort1, &CommTimeouts1);
CommTimeouts1.ReadIntervalTimeout=MAXWORD;
CommTimeouts1.ReadTotalTimeoutMultiplier=200;
CommTimeouts1.ReadTotalTimeoutConstant=200;
CommTimeouts1.WriteTotalTimeoutMultiplier=0;
CommTimeouts1.WriteTotalTimeoutConstant=0;
SetCommTimeouts (m_hPort1,&CommTimeouts1);
DWORD Inbuff1=80,Outbuff1=80;
SetupComm(m_hPort1,Inbuff1,Outbuff1);
serflag[16]=0;
break;
}
} //for(i)
if(i==3)
{
Sleep(300000);
//串口故障;
serflag[16]=1;
}
}
if(count[0]>=200)
count[0]=0;
if(count[0]==0)
{
cs=0;
PurgeComm(m_hPort1,PURGE_TXCLEAR);
GetLocalTime(&time);
fun1[10]=time.wYear%100;
fun1[11]=time.wMonth;
fun1[12]=time.wDay;
fun1[13]=time.wHour;
fun1[14]=time.wMinute;
fun1[15]=time.wSecond;
fun1[16]=time.wMilliseconds%256;
fun1[17]=time.wMilliseconds/256;
for(i=0;i<13;i++)
cs=cs+fun1[5+i];
fun1[18]=cs%256;
fun1[19]=cs/256;
WriteFile(m_hPort1,fun1,sizeof(fun1),&dwBytesWritten, NULL);
FlashCol(Col,flag);
}
for(i=0;i<1;i++)
{
fun3[5]=fun4[5]=fun5[5]=fun6[5]=fun7[5]=fun14[5]=fun15[5]=addr[i];
fun3[10]=(fun3[5]+fun3[6]+fun3[7]+fun3[8]+fun3[9])%256;
fun3[11]=(fun3[5]+fun3[6]+fun3[7]+fun3[8]+fun3[9])/256;
fun4[10]=(fun4[5]+fun4[6]+fun4[7]+fun4[8]+fun4[9])%256;
fun4[11]=(fun4[5]+fun4[6]+fun4[7]+fun4[8]+fun4[9])/256;
fun5[10]=(fun5[5]+fun5[6]+fun5[7]+fun5[8]+fun5[9])%256;
fun5[11]=(fun5[5]+fun5[6]+fun5[7]+fun5[8]+fun5[9])/256;
fun6[10]=(fun6[5]+fun6[6]+fun6[7]+fun6[8]+fun6[9])%256;
fun6[11]=(fun6[5]+fun6[6]+fun6[7]+fun6[8]+fun6[9])/256;
fun7[10]=(fun7[5]+fun7[6]+fun7[7]+fun7[8]+fun7[9])%256;
fun7[11]=(fun7[5]+fun7[6]+fun7[7]+fun7[8]+fun7[9])/256;
fun15[10]=(fun15[5]+fun15[6]+fun15[7]+fun15[8]+fun15[9])%256;
fun15[11]=(fun15[5]+fun15[6]+fun15[7]+fun15[8]+fun15[9])/256;
//FU GUI DEVICE
if(COM1Send[i][7]==0x0f)
{
fun2[5]=addr[i];
fun2[10]=(fun2[5]+fun2[6]+fun2[7]+fun2[8]+fun2[9])%256;
fun2[11]=(fun2[5]+fun2[6]+fun2[7]+fun2[8]+fun2[9])/256;
PurgeComm(m_hPort1,PURGE_TXCLEAR);
WriteFile(m_hPort1,fun2,sizeof(fun2), &dwBytesWritten,NULL);
FlashCol(Col,flag);
COM1Send[i][7]=0x00;
}
//request
do
{
PurgeComm(m_hPort1,PURGE_TXCLEAR);
WriteFile(m_hPort1,fun3, sizeof(fun3), &dwBytesWritten, NULL);
if(dwBytesWritten==13)
{
FlashCol(Col,flag);
flag=~flag;
ReadFile(m_hPort1,Readbuf,10,&dwByteRead,NULL);
if(dwByteRead==10)
{
FlashCol(Col,flag);
l=Readbuf[9];
ReadFile(m_hPort1,codebuf,l-1,&dwByteRead,NULL);
if(dwByteRead==l-1)
{
FlashCol(Col,flag);
flag=~flag;
if(Readbuf[6]==0x46) //XIN GU ZHANG
{
for(j=0;j<l-1;j++)
Readbuf[j+10]=codebuf[j];
cs=0;
for(j=0;j<l+1;j++)
cs=cs+Readbuf[j+5];
if(((cs%256)==Readbuf[l+6])&&((cs/256)==Readbuf[l+7]))
{
WriteFile(m_hPort1,fun4,sizeof(fun4),&dwBytesWritten,NULL);
FlashCol(Col,flag);
flag=~flag;
grc2041.Lock();
if(COM1Send[i][119]>=30)
COM1Send[i][119]=30;
else
{
n=COM1Send[i][119]*22;
COM1Send[i][120+n]=0x00,COM1Send[i][120+n+1]=Readbuf[10];
COM1Send[i][120+n+2]=Readbuf[11],COM1Send[i][120+n+3]=Readbuf[12];
COM1Send[i][120+n+4]=Readbuf[13],COM1Send[i][120+n+5]=Readbuf[14];
COM1Send[i][120+n+6]=(Readbuf[15]*1000+Readbuf[16]+Readbuf[17]*256)/256;
COM1Send[i][120+n+7]=(Readbuf[15]*1000+Readbuf[16]+Readbuf[17]*256)%256;
COM1Send[i][120+n+8]=0x00,COM1Send[i][120+n+9]=0x00;
COM1Send[i][120+n+10]=Readbuf[19],COM1Send[i][120+n+11]=Readbuf[18];
COM1Send[i][120+n+12]=0x00,COM1Send[i][120+n+13]=Readbuf[22];
COM1Send[i][120+n+14]=Readbuf[21],COM1Send[i][120+n+15]=Readbuf[20];
COM1Send[i][120+n+16]=0x00,COM1Send[i][120+n+17]=0x00;
COM1Send[i][120+n+18]=0x00,COM1Send[i][120+n+19]=0xff;
COM1Send[i][119]=COM1Send[i][119]+1;
}
grc2041.Unlock();
DevErr[i]=0;
serflag[132+i]=0;
}
}
if(Readbuf[6]==0x47)
{
for(j=0;j<l-1;j++)
Readbuf[j+10]=codebuf[j];
cs=0;
for(j=0;j<l+1;j++)
cs=cs+Readbuf[j+5];
if(((cs%256)==Readbuf[l+6])&&((cs/256)==Readbuf[l+7]))
{
WriteFile(m_hPort1,fun4, sizeof(fun4), &dwBytesWritten, NULL);
FlashCol(Col,flag);
flag=~flag;
grc2041.Lock();
if(COM1Send[i][119]>=30)
COM1Send[i][119]>=30;
else
{
n=COM1Send[i][119]*22;
COM1Send[i][120+n]=0x00,COM1Send[i][120+n+1]=Readbuf[10];
COM1Send[i][120+n+2]=Readbuf[11],COM1Send[i][120+n+3]=Readbuf[12];
COM1Send[i][120+n+4]=Readbuf[13],COM1Send[i][120+n+5]=Readbuf[14];
COM1Send[i][120+n+6]=(Readbuf[15]*1000+Readbuf[16]+Readbuf[17]*256)/256;
COM1Send[i][120+n+7]=(Readbuf[15]*1000+Readbuf[16]+Readbuf[17]*256)%256;
COM1Send[i][120+n+8]=0x00,COM1Send[i][120+n+9]=0x01;
COM1Send[i][120+n+10]=Readbuf[20],COM1Send[i][120+n+11]=Readbuf[19];
COM1Send[i][120+n+12]=0x00,COM1Send[i][120+n+13]=0x00;
COM1Send[i][120+n+14]=0x00,COM1Send[i][120+n+15]=0x00;
COM1Send[i][120+n+16]=0x00,COM1Send[i][120+n+17]=0x00;
COM1Send[i][120+n+18]=0x00,COM1Send[i][120+n+19]=0xff;
COM1Send[i][119]=COM1Send[i][119]+1;
}
grc2041.Unlock();
DevErr[i]=0;
serflag[132+i]=0;
}
}//if(Readbuf[6]==0x47)
}
if(dwByteRead==0)
DevErr[i]++;
}
} //if(dwBytesWritten==13)
}while(Readbuf[6]==0x46||Readbuf[6]==0x47||Readbuf[6]==0x40);
//YAO CE
PurgeComm(m_hPort1,PURGE_RXCLEAR&PURGE_TXCLEAR);
WriteFile(m_hPort1,fun6, sizeof(fun6), &dwBytesWritten, NULL);
if(dwBytesWritten==13)
{
FlashCol(Col,flag);
flag=~flag;
ReadFile(m_hPort1,Readbuf,10,&dwByteRead,NULL);
if(dwByteRead==10&&Readbuf[6]==0x50)
{
FlashCol(Col,flag);
l=Readbuf[9];
ReadFile(m_hPort1,codebuf,l-1,&dwByteRead,NULL);
if(dwByteRead==l-1)
{
FlashCol(Col,flag);
flag=~flag;
for(j=0;j<l-1;j++)
Readbuf[j+10]=codebuf[j];
cs=0;
for(j=0;j<l+1;j++)
cs=cs+Readbuf[j+5];
if(((cs%256)==Readbuf[l+6])&&((cs/256)==Readbuf[l+7]))
{
grc2041.Lock();
for(j=0;j<12;j=j+2)
COM1Send[i][88+j]=Readbuf[10+j+1],COM1Send[i][88+j+1]=Readbuf[10+j];
grc2041.Unlock();
DevErr[i]=0;
serflag[132+i]=0;
}
}
}
if(dwByteRead==10&&Readbuf[6]==0x46)
{
FlashCol(Col,flag);
l=Readbuf[9];
ReadFile(m_hPort1,codebuf,l-1,&dwByteRead,NULL);
if(dwByteRead==l-1)
{
FlashCol(Col,flag);
flag=~flag;
for(j=0;j<l-1;j++)
Readbuf[j+10]=codebuf[j];
cs=0;
for(j=0;j<l+1;j++)
cs=cs+Readbuf[j+5];
if(((cs%256)==Readbuf[l+6])&&((cs/256)==Readbuf[l+7]))
{
WriteFile(m_hPort1,fun4, sizeof(fun4), &dwBytesWritten, NULL);
FlashCol(Col,flag);
flag=~flag;
grc2041.Lock();
if(COM1Send[i][119]>=30)
COM1Send[i][119]=30;
else
{
n=COM1Send[i][119]*22;
COM1Send[i][120+n]=0x00,COM1Send[i][120+n+1]=Readbuf[10];
COM1Send[i][120+n+2]=Readbuf[11],COM1Send[i][120+n+3]=Readbuf[12];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -