📄 netcommanger.cpp
字号:
#include "stdafx.h"
#include "MainFrm.h"
#include "NetComManger.h"
#include "NetSocket.h"
#include "DatawriteTread.h"
#include "LaneSoft.h"
#include "LaneSoftDoc.h"
#include "LaneSoftView.h"
#include "winuser.h"
//#include "ListenSocket.h"
#include "NetSocketTxj.h"
extern CLaneSoftApp theApp;
extern int g_Print;
extern CMainFrame * m_pMainFrame;
extern int m_nHard,m_nInput;
extern int m_nBase_Statu;
extern CString g_nManNum ;
extern CString g_nTicketNum ;
extern CString g_nCheXing ;
extern CString g_nFeie ;
extern CString g_nBfh ;
extern CString g_nGongBan ;
extern CString g_nXuLieHao ;
extern int g_nLane ;
extern CString g_nManName ;
extern int g_nCommand ;
extern BOOL g_BTopRed;
extern BOOL g_BTopGreen;
extern BOOL g_BLaneRed;
extern BOOL g_BLaneGreen;
extern BOOL g_BBarUp;
extern BOOL g_BBarDown;
extern BOOL g_BLoop;
extern BOOL g_BBAK1;
extern BOOL g_BBAK2;
extern BOOL g_BBAK3;
extern BOOL Msgflag;
//
extern CString g_Server_Ip_Address;
extern int g_Server_Port;
extern int g_Lane_No;
//int g_Print;
//CString g_LiuShuiHao;
extern CString g_Txj_Ip_Address;
extern int g_Txj_Port;
//CString g_Station_Name;
//
extern BOOL m_BClose ;
extern BOOL m_BCloseTime;
extern BOOL m_BCloseTxj ;
extern BOOL m_BCloseTxjTime;
extern CString m_TxjRead ;
extern CString m_TxjSBYChexing ;
extern BOOL g_mmb ;
extern BOOL g_mmbd ;
extern BOOL g_feb ;
extern BOOL g_febd ;
int int_flag ;
char pMsg1[2000],tempMsg[10000];
CNetSocket * CNetComManger::ConnectToServer(LPCTSTR lpszHostAddress, UINT nHostPort)
{
CNetSocket * pNetSocket = new CNetSocket(this);
if(!(pNetSocket->Create()))
{
m_BCloseTime = false ;
delete pNetSocket;
pNetSocket = NULL;//hyh 2001.09.26
return NULL;
}
if(!pNetSocket->Connect(lpszHostAddress,nHostPort))
{
m_BClose = false ;
m_BCloseTime = false ;
delete pNetSocket;
pNetSocket = NULL;//hyh 2001.09.26
return NULL;
}
return pNetSocket;
}
CNetComManger::CNetComManger()
{
m_pNetSocket = NULL;
m_pNetSocketTxj = NULL;
m_nSocketReady = 0;
m_nSelfLane = SELF_LANE_NUM;
int_flag = 1 ;
}
CNetComManger::~CNetComManger()
{
Sleep(3000);
if(m_pNetSocket != NULL)
{
delete m_pNetSocket;
m_pNetSocket = NULL;//hyh 2001.09.26
}
if(m_pNetSocketTxj != NULL)
{
delete m_pNetSocketTxj;
m_pNetSocketTxj = NULL;//hyh 2001.09.26
}
}
void CNetComManger::FetchMsg(CNetSocket *pSocket)
{
// char pMsg[2000],tempMsg[10000];
int ByteCount;
int EndFlag = 0;
CString tempString ;
CString tempString1 ;
strcpy(pMsg1,"");
do
{
strcpy(tempMsg,"");
ByteCount = pSocket->Receive(tempMsg,2000);
if(ByteCount>2000||ByteCount<=0)
{
//接收错误
return;
}
else if(ByteCount<2000&&ByteCount>0)
{
EndFlag = 1;
}
// for(int i = 0 ; i < ByteCount ; i++)
// {
// pMsg[i] = tempMsg[i];
// }
tempMsg[ByteCount] = 0 ;
// pMsg[i] = 0;
strcat(pMsg1,tempMsg) ;
}while(EndFlag == 0);
tempString = pMsg1 ;
tempString1 = tempString.Mid(3,15) ;
if (tempString1 != "000000000000000")
OutReceiveMes(pMsg1);
}
void CNetComManger::OutReceiveMes(char *pMsg)
{
/*
int EndFlag = 0;
CString str;
int i = 0;
do
{
if(*pMsg == 0)
EndFlag = 1;
if((*pMsg == 'K')|(*pMsg == 'C')|(*pMsg == 'M')|(*pMsg == 'N'))
if(*pMsg == 'N')
{
for(int j = 0 ; j < 18 ; j++)
{
m_sReceive.Insert(500,*pMsg);
}
pMsg += 18;
m_pMainFrame->m_pDatawrite->PostThreadMessage(WM_HAVE_RESPOND,0,(LONG)&m_sReceive);
}
}while(EndFlag == 0);
*/
CString str;
if((*pMsg == 'K')|(*pMsg == 'C')|(*pMsg == 'M')|(*pMsg == 'N')|(*pMsg == 'L'))//根据返回值删除临时库
m_pMainFrame->m_pDatawrite->PostThreadMessage(WM_HAVE_RESPOND,0,(LONG)&pMsg);
if(Msgflag)
{
Msgflag=false;
if(*pMsg == 'X')//修改注册表信息
{
m_sReceive = pMsg ;
g_Print=atoi(m_sReceive.Mid(1,1));//打印检验
CString temp;
char buffer[2];
_itoa(g_Print,buffer,10);
temp=buffer;
theApp.WriteProfileString("信息","打印检验", temp);
temp=m_sReceive.Mid(2,1);
if(temp=="1")
{
ExitWindowsEx(EWX_REBOOT,3); //重新启动计算机
}
temp=m_sReceive.Mid(3,1);
if(temp=="1")
{
ExitWindowsEx(EWX_SHUTDOWN,3);
}
_itoa(g_Lane_No,buffer,10);
str=buffer;
str="X0"+str;
m_pNetSocket->Send(str,str.GetLength());
}
if (*pMsg == 'B') //调时
{
m_sReceive = pMsg ;
CString temp ;
temp = m_sReceive.Mid(3,4) ;
SYSTEMTIME t ;
t.wYear = atoi(temp.GetBuffer(temp.GetLength())) ;
temp = m_sReceive.Mid(7,2) ;
t.wMonth = atoi(temp.GetBuffer(temp.GetLength())) ;
temp = m_sReceive.Mid(9,2) ;
t.wDay = atoi(temp.GetBuffer(temp.GetLength())) ;
temp = m_sReceive.Mid(11,2) ;
t.wHour = atoi(temp.GetBuffer(temp.GetLength())) ;
temp = m_sReceive.Mid(13,2) ;
t.wMinute = atoi(temp.GetBuffer(temp.GetLength())) ;
temp = m_sReceive.Mid(15,2) ;
t.wSecond = atoi(temp.GetBuffer(temp.GetLength())) ;
SetLocalTime(&t) ;
char buffer[2];
_itoa(g_Lane_No,buffer,10);
str=buffer;
str="B0"+str;
m_pNetSocket->Send(str,str.GetLength());
}
if (*pMsg == 'P') //密码表
{
if (g_mmb)
{
do
{
m_pMainFrame->m_pDatawrite->PostThreadMessage(WM_KEY_NAME_DEL,0,0);
} while ((g_mmbd == TRUE)&&(g_mmb == TRUE)) ;
g_mmbd = false ;
g_mmb = false ;
Data_Name pDataName ;
CString temp ;
CString g_SourceString ;
long m_Count ;
CString g_TempString ;
CString m_xingming ;
long m_gonghao ;
CString m_kouling ;
long m_jibie ;
long m_gongban ;
g_SourceString = pMsg ;
temp = g_SourceString.Mid(1,4) ;
m_Count = atoi(temp.GetBuffer(temp.GetLength())) ;
m_Count = (m_Count - 5)/25 ;
for (int i = 0 ;i < m_Count ;i = i +1)
{
g_TempString = g_SourceString.Mid(5+i*25,25) ;
temp = g_TempString.Mid(0,8) ;
m_xingming = temp ;
temp = g_TempString.Mid(8,4);
m_gonghao = atoi(temp.GetBuffer(temp.GetLength())) ;
temp = g_TempString.Mid(16,6);
m_kouling = temp ;
temp = g_TempString.Mid(22,1);
m_jibie = atoi(temp.GetBuffer(temp.GetLength())) ;
temp = g_TempString.Mid(23,2);
m_gongban = atoi(temp.GetBuffer(temp.GetLength())) ;
pDataName.m_sManName = m_xingming;
pDataName.m_nManNo = m_gonghao;
pDataName.m_sPassword = m_kouling ;
pDataName.m_nGreade = m_jibie;
pDataName.m_nWork_Class = m_gongban ;
m_pMainFrame->m_pDatawrite->PostThreadMessage(WM_KEY_NAME,0,(LONG)&pDataName);
Sleep(300) ;
}
g_mmb = true ;
}
char buffer[2];
_itoa(g_Lane_No,buffer,10);
str=buffer;
str="P0"+str;
m_pNetSocket->Send(str,str.GetLength());
}
if (*pMsg == 'A') //费额表
{
if (g_feb)
{
do
{
m_pMainFrame->m_pDatawrite->PostThreadMessage(WM_KEY_FEE_DEL,0,0);
} while ((g_febd == TRUE)&&(g_feb == TRUE)) ;
g_febd = false ;
g_feb = false ;
CString w_temp ,tempp1;
CString wangyu ;
int Count1 ;
int int_temp ;
// int int_flag ;
// int_flag = 1 ;
w_temp = pMsg ;
Count1 = atoi(w_temp.GetBuffer(m_sReceive.GetLength())) ;
Count1 = (Count1 - 3)/6;
// for (int j = 0 ;j < Count1 ;j = j +1)
for (int j = 1 ;j < 11 ;j = j +1)
{
tempp1 = w_temp.Mid((3+(j-1)*6),6) ;
int_temp = atoi(tempp1.GetBuffer(tempp1.GetLength()));
wangyu.Format("%d",j) ;
if (int_temp!=0)
{
pDataFee.m_KIND = wangyu;
pDataFee.m_ID = j ;
pDataFee.m_FEE = int_temp ;//atoi(tempp1.GetBuffer(tempp1.GetLength()));
pDataFee.m_TYPEID = 0 ;
}
else
{
//if (int_flag==1)
if (j==7)
{
pDataFee.m_KIND = "违章";
pDataFee.m_ID = 0 ;
pDataFee.m_FEE = 0 ;//atoi(tempp1.GetBuffer(tempp1.GetLength()));
pDataFee.m_TYPEID = 1 ;
int_flag = 2 ;
}
//if (int_flag==2)
if (j==8)
{
pDataFee.m_KIND = "免费";
pDataFee.m_ID = 0 ;
pDataFee.m_FEE = 0 ;//atoi(tempp1.GetBuffer(tempp1.GetLength()));
pDataFee.m_TYPEID = 2 ;
int_flag = 3 ;
}
//if (int_flag==3)
if (j==9)
{
pDataFee.m_KIND = "军车";
pDataFee.m_ID = 0 ;
pDataFee.m_FEE = 0 ;//atoi(tempp1.GetBuffer(tempp1.GetLength()));
pDataFee.m_TYPEID = 3 ;
int_flag = 4 ;
}
//if (int_flag==4)
if (j==10)
{
pDataFee.m_KIND = "月票";
pDataFee.m_ID = 0 ;
pDataFee.m_FEE = 0 ;//atoi(tempp1.GetBuffer(tempp1.GetLength()));
pDataFee.m_TYPEID = 4 ;
}
}
m_pMainFrame->m_pDatawrite->PostThreadMessage(WM_KEY_FEE,0,(LONG)&pDataFee);
Sleep(500) ;
}
g_feb = true ;
int_flag =1 ;
}
Msgflag=true;//
char buffer[2];
_itoa(g_Lane_No,buffer,10);
str=buffer;
str="A0"+str;
m_pNetSocket->Send(str,str.GetLength());
}
}
//fee
/*
if (*pMsg == 'A') //费额表
{
CString w_temp ,tempp1 ,temptemp1;
long Count1 ;
temptemp1 ="" ;
m_sReceive = pMsg ;
Count1 = atoi(m_sReceive.GetBuffer(m_sReceive.GetLength())) ;
Count1 = (Count1 - 3)/6;
//m_pMainFrame->m_pDatawrite->PostThreadMessage(WM_KEY_FEE_DEL,0,0);
// for (int j = 1 ;j < Count1+1 ;j = j +1)
for (int j = 1 ;j < 10 ;j = j +1)
{
//int j ;
//j = 0 ;
tempp1 = m_sReceive.Mid((3+j*6),6) ;
temptemp1.Format("%d",j);
// tempp1 = m_sReceive.Mid(3,6) ;
//pDataFee.m_KIND = "月票";//temptemp1.Format("%d",i) ;
//pDataFee.m_ID = 0 ;//temptemp1.Format("%d",i) ;
//pDataFee.m_FEE = 0 ;//atoi(tempp1.GetBuffer(tempp1.GetLength()));
//pDataFee.m_TYPEID = 4 ;//temptemp1.Format("%d",i) ;
pDataFee.m_KIND = temptemp1 ;
pDataFee.m_ID = j ;//temptemp1.Format("%d",i) ;
pDataFee.m_FEE = atoi(tempp1.GetBuffer(tempp1.GetLength()));
pDataFee.m_TYPEID = 0 ;//temptemp1.Format("%d",i) ;
m_pMainFrame->m_pDatawrite->PostThreadMessage(WM_KEY_FEE,0,(LONG)&pDataFee);
Sleep(300) ;
}
}
*/
//fee
}
void CNetComManger::SendMsg(char *pMsg,int nLength)
{
if(m_pNetSocket == NULL)
{
//联网失败
return;
}
if(!m_pNetSocket->IsBlocking())
{
m_pNetSocket->Send(pMsg,nLength);
}
}
void CNetComManger::netSendMsg(Data_Use *pMsg, int nLength)
{
static int SecondCount1 = 0;
memcpy((char *)&m_dData_Use,(char *)pMsg,sizeof(Data_Use));
if (m_pNetSocket)
{
}
else
{
return ;
}
if(m_pNetSocket->IsBlocking())
{
m_pNetSocket->CancelBlockingCall() ;
return;
}
Data_01 SendData;
Build_StatuData(&SendData);
CString str,str1;
switch(m_dData_Use.command)
{
case 2:
str +="C";//错票车
break ;
case 3:
str += "A";//调时
break ;
case 4:
str +="K" ;//自动车型
break ;
case 5:
str += "N" ;//正常车
break ;
case 6:
str += "M" ;//上班
break ;
case 7:
str +="L" ;//下班
break ;
}
str1.Format("%s",m_dData_Use.name);
for(int i = str1.GetLength() ; i< 8 ; i++)
str1 += " ";
str += str1;
str1.Format("%.2d",SendData.lane);
str += str1;
str1.Format("%.4d",m_dData_Use.year);
str += str1;
str1.Format("%.2d",m_dData_Use.month);
str += str1;
str1.Format("%.2d",m_dData_Use.day);
str += str1;
str1.Format("%.2d",m_dData_Use.hour);
str += str1;
str1.Format("%.2d",m_dData_Use.min);
str += str1;
str1.Format("%.2d",m_dData_Use.sec);
str += str1;
str = str + SendData.bfh ;
str1.Format("%.8d",m_dData_Use.man_NO);
str += str1;
str1.Format("%.2d",m_dData_Use.vehcile_type);
str += str1;
str1.Format("%.4d",m_dData_Use.fee);
str += str1;
str1.Format("%.10d",m_dData_Use.ticket_NO);
str += str1;
str1.Format("%.2d",m_dData_Use.work_class);
str += str1;
str1.Format("%15d",m_dData_Use.record_ID);
str += str1;
if(SendData.BTopRed)
str += "t";
else
str += "f";
if(SendData.BTopGreen)
str += "t";
else
str += "f";
if(SendData.BLaneRed)
str += "t";
else
str += "f";
if(SendData.BLaneGreen)
str += "t";
else
str += "f";
if(SendData.BBarUp)
str += "t";
else
str += "f";
if(SendData.BBarDown)
str += "t";
else
str += "f";
if(SendData.BLoop)
str += "t";
else
str += "f";
//
//手动栏杆
if(SendData.BBAK1)
str = str + "t";
else
str = str + "f";
//上班状态
if(SendData.BBAK2)
str = str + "t";
else
str = str + "f";
//is_now_data
if(SendData.BBAK3)
str = str + "t";
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -