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

📄 operatedlg.cpp

📁 用算法来实现一个收费系统
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	case 2:
		if(nChar == 0xff)
		{
			CharNum = 0;
			m_nCurrenBmp = 4;
			m_DIB.LoadFromFile(m_HelpFilename[m_nCurrenBmp]);
			m_bShowManNum = TRUE;
			m_bShowTickNum = TRUE;
			Invalidate();
			m_nStep1 = 0;
			value = 2;
		}
		else
		{
			value = m_nStatu;
		}
		break;
	case 3:
		if(nChar == 0x74)
		{
			CharNum = 0;
			m_nCurrenBmp = 4;
			m_DIB.LoadFromFile(m_HelpFilename[m_nCurrenBmp]);
			m_bShowManNum = TRUE;
			m_bShowTickNum = TRUE;
//		    AfxBeginThread(Bar_Down,NULL,THREAD_PRIORITY_NORMAL); HM 2001.10.18
			PostMessage(WM_BAR_DOWN);
			m_pMainView->SendMessage(WM_CHANGE_TLAMP,1,0);
			m_pMainView->SendMessage(WM_CHANGE_BAR,1,0);

			Invalidate();
			m_nStep1 = 0;
			value = 2;
		}
		else
		{
			value = m_nStatu;
		}
		break;

	default:
		value = m_nStatu;
		break;
	}
	return value;
}
int COperateDlg::Key_Che(int nChar)
{
	int value;
	int tempTicketNum ;
	static int CharNum = 0;
	CRect rect(245,13,30,190);
	switch(m_nStep1)
	{
	case 0:
		if(nChar == 0x1b)
		{
			CharNum = 0;
			m_nCurrenBmp = 8;
			m_DIB.LoadFromFile(m_HelpFilename[m_nCurrenBmp]);
			m_bShowManNum = FALSE;
			m_bShowTickNum = FALSE;
			m_bShowFee = FALSE;
			Invalidate();
			m_nStep1 = 1;
			value = m_nStatu;

			if((m_nVehicleType > 0)&&(m_nVehicleType < 7))
			{
				g_nFeie.Format("%d",m_nFee[m_nVehicleType]),
				TVShowType(m_nVehicleType);
				if(g_Print==1)
				{
					PrintStation();
				}
			}
			else
			{
				g_nFeie = '0' ;
				TVShowTZType((m_nVehicleType-6),0) ;
			}

			g_nCheXing.Format("%d",m_nVehicleType) ;

			SetTimer(IDT_SHOWMES,2000,NULL);
			FeeShowEnd();

			TVShowTicketNum(atoi(g_nTicketNum.GetBuffer(g_nTicketNum.GetLength()))) ;

			FillTheData(2);
			m_pMainFrame->m_pDatawrite->PostThreadMessage(WM_KEY_PRESS,0,(LONG)&m_dDataUse);

		}
		else if(nChar == 0x0d)
		{
			CharNum = 0;
			m_nCurrenBmp = 11;
			m_DIB.LoadFromFile(m_HelpFilename[m_nCurrenBmp]);
			m_bShowManNum = FALSE;
			m_bShowTickNum = FALSE;
			m_bShowFee = FALSE;
			Invalidate();
			m_nStep1 = 1;
			value = m_nStatu;
			if((m_nVehicleType > 0)&&(m_nVehicleType < 7))
			{
				g_nFeie.Format("%d",m_nFee[m_nVehicleType]),
				TVShowType(m_nVehicleType);
				if(g_Print==1)
				{
					PrintStation();
				}
			}
			else
			{
				g_nFeie = '0' ;
				TVShowTZType((m_nVehicleType-6),0) ;
			}

			g_nCheXing.Format("%d",m_nVehicleType) ;

			FeeShowEnd();
			tempTicketNum = atoi(g_nTicketNum.GetBuffer(g_nTicketNum.GetLength())) ;//1234567890
			TVShowTicketNum(tempTicketNum) ;
//			AfxBeginThread(Bar_Up,NULL,THREAD_PRIORITY_NORMAL);HM 2001.10.18
			PostMessage(WM_BAR_UP);
			m_pMainView->SendMessage(WM_CHANGE_BAR,0,0);
			m_pMainView->SendMessage(WM_CHANGE_TLAMP,0,0);

			FillTheData(5);
			m_pMainFrame->m_pDatawrite->PostThreadMessage(WM_KEY_PRESS,0,(LONG)&m_dDataUse);
			m_TxjRead = "N" ;

			m_pMainFrame->m_pNetManger->PostThreadMessage(WM_KEYTXJ_USE,0,(LONG)&m_dDataUse) ;			
			m_nVehicleType = 0;
			SetTimer(IDT_SHOWMES,2000,NULL);
			Play_Sound(0);
			Sleep(100);//2001.10.18
		}
		else
		{
			value = m_nStatu;
		}
		break;
	case 1:
		if(nChar == 0xff)
		{
			CharNum = 0;
			m_nCurrenBmp = 4;
			m_DIB.LoadFromFile(m_HelpFilename[m_nCurrenBmp]);
			m_bShowManNum = TRUE;
			m_bShowTickNum = TRUE;
			Invalidate();
			m_nStep1 = 0;
			value = 2;
		}
		else
		{
			value = m_nStatu;
		}
		break;

	default:
		value = m_nStatu;
		break;
	}
	return value;
}
BOOL COperateDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	hwnd=m_hWnd ;
//WXP
	if (m_pComm1.GetPortOpen())
	m_pComm1.SetPortOpen(false) ;
	m_pComm1.SetCommPort(3) ;
	CString temp ;
	temp.Format("%d,n,8,1",2400);
	m_pComm1.SetSettings(temp);
	if( !m_pComm1.GetPortOpen())
	{
		m_pComm1.SetPortOpen(TRUE);//打开串口
	}
//WXP
//SBY
if(m_pShBYComm.GetPortOpen())
m_pShBYComm.SetPortOpen(FALSE);
m_pShBYComm.SetCommPort(5);

	m_pShBYComm.SetSettings("2400,n,8,1");

if( !m_pShBYComm.GetPortOpen())
	m_pShBYComm.SetPortOpen(TRUE);//打开串口
//SBY
m_nWorkClass=0;
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

int COperateDlg::Statu_Init(int nChar)
{
	CRect rect;
	int value;
	switch(nChar)
	{
	case 0x70://F1
		m_nCurrenBmp = 1;
		m_DIB.LoadFromFile(m_HelpFilename[m_nCurrenBmp]);
		Invalidate();

		value = 1;
		break;
	default:
		value = 0;
		break;
	}
	return value;
}

void COperateDlg::ShowText(CRect * rect, int num,char nByte)
{
	CString str;
	DWORD old_textcolor,old_textmode;
	CFont * pOldFont;
	str.Insert(0,nByte);
	CDC * pDC = GetDC();
		old_textcolor = pDC->SetTextColor(theIniData.m_dColor_Text6);
		old_textmode = pDC->SetBkMode(TRANSPARENT);
		pOldFont = pDC->SelectObject(&theIniData.m_fFont3);
		pDC->TextOut(rect->left+num*20,rect->top,str);
		pDC->SelectObject(pOldFont);
		pDC->SetTextColor(old_textcolor);
		pDC->SetBkMode(old_textmode);
	ReleaseDC(pDC);
}


void COperateDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if(nIDEvent == IDT_SHOWMES)
	{
	  	KillTimer(IDT_SHOWMES);
		SendMessage(WM_USER_KEY,0xff,0);
	}
	CDialog::OnTimer(nIDEvent);
}

void COperateDlg::PrintMessage(int nType)
{

	CString str;
	CTime time;
	BYTE * pBuffer;
	pBuffer = new BYTE[100];
	pBuffer[0] = 0x0e;
	time = CTime::GetCurrentTime();
	str="";
	if(nType!=11)//即非车队
	{
		m_sFee.Format("%d",m_nFee[nType]);
		m_sVehicleType.Format("%d",nType);
	}
	else
	{
		m_sVehicleType="车队";
	}
	str += "\n";
	//3line
	str += "      " ;
	str += time.Format("%Y/%m/%d\n");

//	strText = time.Format("%Y/%m/%d");
	str += "\n"; 
	//3line
	//4line
	str += "      " ;
	str += time.Format("%H:%M:%S\n");
//	strText +=time.Format("%H:%M:%S");
	str += "\n"; 
	//4line
	//5line
	str += "      " ;
	str += m_sFee ;
	if(nType!=11)//即非车队
	{
		str += "          " ; 
	}
	else
	{
		str += "      " ; 
	}
	str += m_sVehicleType;
	str += "\n\n\n\n\n\n\n\n\n\n\n\n"; 
	//5line
	AfxMessageBox(str);
	strcpy((char *)pBuffer+1,str.GetBuffer(str.GetLength()));
	m_pPrinter->WriteOut(pBuffer,str.GetLength()+1);
	delete []pBuffer;

	strText = "Y" + strText ;

//	CTime time;
//	time = CTime::GetCurrentTime();
//	strText = time.Format("%Y/%m/%d");
//	strText +=time.Format("%H:%M:%S");
//	strText = "Y" + strText ;
//	CDC * pDC ;
//	CPrintInfo * pInfo ;
	//m_pMainView::OnPrint(pDC,pInfo) ;
//	CLaneSoftView::OnPrint(pDC,pInfo) ;
	//m_pMainView->PostMessage(ID_FILE_PRINT,0,0) ;
	//m_pMainView->SendMessage(ID_FILE_PRINT,0,0) ;
}

void COperateDlg::PrintStation()
{
			CString str,temp;
			BYTE * pBuffer;

			pBuffer = new BYTE[100];
			pBuffer[0] = 0x0e;
			str = "\n\n\n" ;
			str += "      ";
			str += g_Station_Name;
			str += "\n\n";
			//2line
			str += "      " ;
			str += m_sManNum ;
			str += "        " ; 
			temp.Format("%d",g_Lane_No) ; 
			str += temp ;
			str += "\n"; 
			//2line
			strcpy((char *)pBuffer+1,str.GetBuffer(str.GetLength()));
			m_pPrinter->WriteOut(pBuffer,str.GetLength()+1);
			delete []pBuffer;
}

void COperateDlg::FeeShowEnd()
{
	CByteArray data0;
	tempFeeShowStr1 = "a1"+tempFeeShowStr1.Mid(3,6) ;
	int len=Str2Hex(tempFeeShowStr1,data0);
	m_pComm1.SetOutput(COleVariant(data0));//发送数据
}
		
void COperateDlg::FeeShowMessage(int nType)
{
	if( !m_pComm1.GetPortOpen())
		m_pComm1.SetPortOpen(TRUE);//打开串口
	CByteArray data;
	CString tempFeeShowStr ;
	CString tempStr ;
	
	tempFeeShowStr = "a0" ;
	tempStr.Format("%d",nType) ;
	for (int i = tempStr.GetLength() ;i <2 ;i = i +1)
		tempStr = "0" +tempStr ;
	
	tempFeeShowStr = tempFeeShowStr + tempStr ;
	
	int Fee,Feeh,Feel;
	if (nType > 6 || nType==0)
	{
		if (nType == 9)
		{
			Fee = TZCheFee ;
		}
		else
		{
			Fee = 0;
		}
	}
	else
	{
		Fee = m_nFee[nType];
	}
	Feeh = Fee/100;
	Feel = Fee - (Fee/100)*100;
	tempStr.Format("%d",Feel) ;
	for (int i0 = tempStr.GetLength() ;i0 <2 ;i0 = i0 +1)
		tempStr = "0" +tempStr ;
	
	tempFeeShowStr = tempFeeShowStr + tempStr ;
	
	tempStr.Format("%d",Feeh) ;
	for (int i1 = tempStr.GetLength() ;i1 <2 ;i1 = i1 +1)
		tempStr = "0" +tempStr ;
	
	tempFeeShowStr = tempFeeShowStr + tempStr ;
	tempFeeShowStr1 = tempFeeShowStr ;
	
	int len=Str2Hex(tempFeeShowStr,data);

	m_pComm1.SetOutput(COleVariant(data));//发送数据
}

int COperateDlg::HextoBcd(int num)
{
	return (num/10)*16 + (num- (num/10)*10);
}

void COperateDlg::TVWrite(int reg,int num)
{
	int i,a;
	_outp(0x368,(reg&0xff));
	_outp(0x369,(num&0xff));
	for(i = 0 ; i < 5000 ; i++)
	{
		a = _inp(0x36a);
		a &= 1;
		if(a==0)
			return;
	}
}

void COperateDlg::TVShowTime()
{
	int data,data1;
	CTime Time;
	Time = CTime::GetCurrentTime();
	data = Time.GetSecond();
	TVWrite(0x3d,HextoBcd(data));
	TVWrite2(0x3d,HextoBcd(data));
	if((data == 59)||(data == 1) || (data == 2) || (data ==3) ||(data ==58))
	{
		data = Time.GetMinute();
		TVWrite(0x3c,HextoBcd(data));
		TVWrite2(0x3c,HextoBcd(data));
		if(data == 1)
		{
			data = Time.GetHour();
			TVWrite(0x3b,HextoBcd(data));
			TVWrite2(0x3b,HextoBcd(data));
			if(data == 0)
			{
				data = Time.GetDay();
				TVWrite(0x3a,HextoBcd(data));
				TVWrite2(0x3a,HextoBcd(data));
				if(data == 1)
				{
					data = Time.GetMonth();
					TVWrite(0x39,HextoBcd(data));
					TVWrite2(0x39,HextoBcd(data));
					if(data ==1)
					{
						data = Time.GetYear();
						data1 = data/100;
						data -= data1*100;
						TVWrite(0x38,HextoBcd(data));
						TVWrite2(0x38,HextoBcd(data));
						TVWrite(0x37,HextoBcd(data1));
						TVWrite2(0x37,HextoBcd(data1));
					}
				}
			}
		}
	}
}

void COperateDlg::TVShowAll()
{
	int data,data1;
	CTime Time;
	Time = CTime::GetCurrentTime();
	data = Time.GetSecond();
	TVWrite(0x3d,HextoBcd(data));
	TVWrite2(0x3d,HextoBcd(data));
	data = Time.GetMinute();
	TVWrite(0x3c,HextoBcd(data));
	TVWrite2(0x3c,HextoBcd(data));
	data = Time.GetHour();
	TVWrite(0x3b,HextoBcd(data));
	TVWrite2(0x3b,HextoBcd(data));
	data = Time.GetDay();
	TVWrite(0x3a,HextoBcd(data));
	TVWrite2(0x3a,HextoBcd(data));
	data = Time.GetMonth();
	TVWrite(0x39,HextoBcd(data));
	TVWrite2(0x39,HextoBcd(data));
	data = Time.GetYear();
	data1 = data/100;
	data -= data1*100;
	TVWrite(0x38,HextoBcd(data));
	TVWrite2(0x38,HextoBcd(data));
	TVWrite(0x37,HextoBcd(data1));
	TVWrite2(0x37,HextoBcd(data1));
}

void COperateDlg::TVShowClass(int nClass)
{
	int nManNum,nManNumh;
	TVWrite(0x3e,HextoBcd(nClass));
	TVWrite2(0x3e,HextoBcd(nClass));
	Sleep(10) ;
	TVWrite(0x3f,HextoBcd(g_Lane_No));
	TVWrite2(0x3f,HextoBcd(g_Lane_No));
	Sleep(10) ;
	nManNum = atoi(m_sManNum.GetBuffer(m_sManNum.GetLength()));
	nManNumh = nManNum/100;
	nManNum = nManNum - nManNumh*100;
	TVWrite(0x30,HextoBcd(nManNumh));
	TVWrite2(0x30,HextoBcd(nManNumh));
	Sleep(10) ;
	TVWrite(0x31,HextoBcd(nManNum));
	TVWrite2(0x31,HextoBcd(nManNum));
}

void COperateDlg::TVShowType(int nType)
{
	TVWrite(0x36,HextoBcd(nType));
	TVWrite2(0x36,HextoBcd(nType));
}

void COperateDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	m_bRunning = FALSE;
	
}

void COperateDlg::Setup_TLamp(int green)
{
	int a;
	a = m_nHard;
	if(green == 0)
	{
		m_nHard |= 0x01;
		//_outp(0x3e2,m_nHard);
		_outp(0x3e2,0x31);
	}
	else
	{
		m_nHard &= 0xfe ;
		_outp(0x3e2,m_nHard);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -