⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netcommanger.cpp

📁 用算法来实现一个收费系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#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 + -