📄 operatedlg.cpp
字号:
// OperateDlg.cpp : implementation file
//
#include "stdafx.h"
#include "LaneSoft.h"
#include "LaneSoftDoc.h"
#include "LaneSoftView.h"
#include "OperateDlg.h"
#include "IniData.h"
#include "NetComThread.h"
#include "ComWin.h"
#include "conio.h"
#include "NameTable.h"
#include "Datawritetread.h"
#include "FeeTable.h"
#include "BarCode.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// COperateDlg dialog
HWND hwnd;
extern CLaneSoftApp theApp;
extern CIniData theIniData;
extern CMainFrame * m_pMainFrame;
extern CLaneSoftView * m_pMainView;
extern int g_Lane_No ;
extern CString g_LiuShuiHao ;
extern CString g_Station_Name ;
extern CString m_TxjRead ;
extern CString m_TxjSBYChexing ;
extern CString strText ;
extern int g_Print;
extern int g_code;
extern int g_check;
CDatabase Database;
int m_nInput;
int m_nHard;
int m_nBase_Statu;
CString g_nManNum ;
CString g_nTicketNum ;
CString g_nCheXing ;
CString g_nFeie ;
CString g_nBfh ;
CString g_nGongBan ;
CString g_nXuLieHao ;
int g_nLane ;
CString g_nManName ;
int g_nCommand ;
BOOL g_BTopRed;//顶棚红灯
BOOL g_BTopGreen;//顶棚绿灯
BOOL g_BLaneRed;//车道红灯
BOOL g_BLaneGreen;//车道绿灯
BOOL g_BBarUp;//栏杆起
BOOL g_BBarDown;//栏杆落
BOOL g_BLoop;//线圈
BOOL g_BBAK1;//
BOOL g_BBAK2;
BOOL g_BBAK3;
int TZCheFee = 0 ;
CString tempFeeShowStr1 ;
CString m_TicketNum;
/*UINT Bar_Up(LPVOID param)
{
_outp(0x3e2,0x20);
Sleep(300);
_outp(0x3e2,0x30);
return 0;
}
UINT Bar_Down(LPVOID param)
{
_outp(0x3e2,0x11);
Sleep(300);
_outp(0x3e2,0x31);
return 0;
}*/
UINT Hard_Check(LPVOID param)
{
int a;
static old = 06;
Sleep(5000);
while(TRUE)
{
a = _inp(0x3e1);
m_nInput = a;
a &= 0x06;
if(a != old)
{
old = a;
switch(a)
{
case 0:
PostMessage(hwnd,WM_USER_AUTO,0,0);
break;
case 2:
m_pMainView->SendMessage(WM_CHANGE_BAR,1,0);
m_pMainView->SendMessage(WM_CHANGE_TLAMP,1,0);
break;
case 4:
PostMessage(hwnd,WM_USER_AUTO,0,0);
//自动车型纪录
break;
case 6:
_outp(0x3e2,0x30);//hyh 2002.01.15 手动抬杆亮绿灯
m_pMainView->SendMessage(WM_CHANGE_TLAMP,0,0);
break;
}
}
Sleep(300);
}
return 0;
}
UINT Hard_Check1(LPVOID param)
{
int a,b;
Sleep(5000);
while(TRUE)
{
a = _inp(0x3e0);
m_nInput = a;
b = a ;
b &= 0x04;
if (b == 4)
{
g_BLoop= TRUE ;
}
else
{
g_BLoop= FALSE ;
}
b = a ;
b &= 0x10;
if (b == 0x10)
{
// g_BLaneRed= TRUE ;
}
else
{
// g_BLaneRed= FALSE ;
}
b = a ;
b &= 0x20;
if (b == 0x20)
{
// g_BLaneGreen= TRUE ;
// m_pMainView->SendMessage(WM_CHANGE_TLAMP,1,0);
}
else
{
// g_BLaneGreen= FALSE ;
// m_pMainView->SendMessage(WM_CHANGE_TLAMP,0,0);
}
b = a ;
b &= 0x40;
if (b == 0x40)
{
g_BTopRed= TRUE ;
// m_pMainView->SendMessage(WM_CHANGE_TLAMP,0,0);
}
else
{
g_BTopRed= FALSE ;
// m_pMainView->SendMessage(WM_CHANGE_TLAMP,1,0);
}
b = a ;
b &= 0x80;
if (a == 0x80)
{
g_BTopGreen= TRUE ;
}
else
{
g_BTopGreen= FALSE ;
}
Sleep(300);
}
return 0;
}
COperateDlg::COperateDlg(CWnd* pParent /*=NULL*/)
: CDialog(COperateDlg::IDD, pParent)
{
m_nSernum = atoi(g_LiuShuiHao.GetBuffer(20));
m_nHard = 0x00;
m_nBase_Statu = 0;
m_HelpFilename[0] = ".\\res\\help1.bmp";
m_HelpFilename[1] = ".\\res\\help2er.bmp";
m_HelpFilename[2] = ".\\res\\help3er.bmp";
m_HelpFilename[3] = ".\\res\\help4er.bmp";
m_HelpFilename[4] = ".\\res\\help5.bmp";
m_HelpFilename[5] = ".\\res\\help6.bmp";
m_HelpFilename[6] = ".\\res\\help7.bmp";
m_HelpFilename[7] = ".\\res\\help8.bmp";
m_HelpFilename[8] = ".\\res\\help9.bmp";
m_HelpFilename[9] = ".\\res\\help10.bmp";
m_HelpFilename[10] = ".\\res\\help11.bmp";
m_HelpFilename[11] = ".\\res\\help12.bmp";
m_HelpFilename[12] = ".\\res\\help13.bmp";
m_HelpFilename[13] = ".\\res\\help14.bmp";
m_HelpFilename[14] = ".\\res\\help15.bmp";
m_HelpFilename[15] = ".\\res\\help16.bmp";
m_nFee[0] = 2; m_nFee[1] = 5; m_nFee[2] = 10; m_nFee[3] =15;
m_nFee[4] = 20 ; m_nFee[5] = 25 ; m_nFee[6] = 30;
strcpy(m_sType[0],"闯道"); strcpy(m_sType[1],"免费");
strcpy(m_sType[2],"军用"); strcpy(m_sType[3],"月票");
// strcpy(m_sType[0],"军用"); strcpy(m_sType[1],"月票");
// strcpy(m_sType[2],"闯道"); strcpy(m_sType[3],"免费");
// Database.OpenEx("DSN=TempData1;UID=sa;PWD=",CDatabase::useCursorLib|CDatabase::noOdbcDialog);
Database.Open(_T("hm"),FALSE,FALSE,"ODBC;UID=sa;PWD=;",CDatabase::useCursorLib|CDatabase::noOdbcDialog);
CFeeTable FeeTable(&Database);
FeeTable.Open();
// int a = FeeTable.GetRecordCount();
while(true)
{
if(FeeTable.m_TYPEID == 0)
m_nFee[FeeTable.m_ID] = FeeTable.m_FEE;
if(FeeTable.m_ID == 0)
{
FeeTable.m_KIND.TrimRight();
strcpy(m_sType[FeeTable.m_TYPEID - 1],FeeTable.m_KIND.GetBuffer(FeeTable.m_KIND.GetLength()));
}
if(!FeeTable.IsEOF())
FeeTable.MoveNext();
else
break;
}
FeeTable.Close();
m_bShowManNum = FALSE;
m_bShowTickNum = FALSE;
m_bShowFee = FALSE;
m_nVehicleType = 0;
m_nCurrenBmp = 0;
m_nCurrenLane = 1;
m_nStatu = 0;
m_nStep1 = 0;
DCB dcb;
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
m_bRunning = TRUE;
AfxBeginThread(Hard_Check,NULL,THREAD_PRIORITY_NORMAL);
AfxBeginThread(Hard_Check1,NULL,THREAD_PRIORITY_NORMAL);
m_pPrinter = new CComWin(2,&dcb);
TVShowAll();
TVShowClass(0) ;
TVShowTicketNum(0);
// Setup_TLamp(0);
//{{AFX_DATA_INIT(COperateDlg)
//}}AFX_DATA_INIT
}
COperateDlg::~COperateDlg()
{
delete m_pPrinter;
}
void COperateDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(COperateDlg)
DDX_Control(pDX, IDC_MSCOMM1, m_pComm1);
DDX_Control(pDX, IDC_MSCOMM2, m_pShBYComm);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(COperateDlg, CDialog)
//{{AFX_MSG_MAP(COperateDlg)
ON_WM_CREATE()
ON_WM_PAINT()
ON_WM_TIMER()
ON_MESSAGE(WM_USER_KEY,On_Operate_Key)
ON_WM_DESTROY()
ON_MESSAGE(WM_BAR_UP,Bar_Up)
ON_MESSAGE(WM_USER_AUTO,FillTheDataAuto)
ON_MESSAGE(WM_BAR_DOWN,Bar_Down)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// COperateDlg message handlers
int COperateDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
m_rect.left = 799-513;
m_rect.top = 599-181;
m_rect.right = 799-133;
m_rect.bottom = 599;
m_wndpl.length = sizeof(WINDOWPLACEMENT);
m_wndpl.flags = 0;
m_wndpl.showCmd = SW_SHOW;
m_wndpl.rcNormalPosition = m_rect;
SetWindowPlacement(&m_wndpl);
m_DIB.LoadFromFile(m_HelpFilename[m_nCurrenBmp]);
return 0;
}
void COperateDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
if(m_DIB.m_pBMI ==NULL || m_DIB.m_pDIBData == NULL)
return;
CRect rect,rect1;
CDC *pDC = GetDC();
GetClientRect(rect);
m_DIB.ShowDIB(pDC,0,0,rect.Width(),rect.Height());
if(m_bShowManNum)
{
CString str = "工号:";
str += m_sManNum;
rect1.left = 50; rect1.top = 130;
DWORD old_textcolor,old_textmode;
CFont * pOldFont;
old_textcolor = pDC->SetTextColor(theIniData.m_dColor_Text7);
old_textmode = pDC->SetBkMode(TRANSPARENT);
pOldFont = pDC->SelectObject(&theIniData.m_fFont4);
pDC->TextOut(rect1.left,rect1.top,str);
pDC->SelectObject(pOldFont);
pDC->SetTextColor(old_textcolor);
pDC->SetBkMode(old_textmode);
}
if(m_bShowFee && ( m_nVehicleType != -1 ) )
{
CString str;
int Fee = 0;
if(m_nVehicleType <= 6)
{
str.Format(" %d 型车收费 %d 元",m_nVehicleType,m_nFee[m_nVehicleType]);
}
else if (m_nVehicleType == 0x0c)
{
if(g_code==0)
{
str.Format("%s 车","验票");
}
else
{
// str.Format("请输入条码");
}
}
else
{
str.Format("%s 车",m_sType[m_nVehicleType - 7]);
}
rect1.left = 50; rect1.top = 13;
DWORD old_textcolor,old_textmode;
CFont * pOldFont;
old_textcolor = pDC->SetTextColor(theIniData.m_dColor_Text8);
old_textmode = pDC->SetBkMode(TRANSPARENT);
pOldFont = pDC->SelectObject(&theIniData.m_fFont5);
pDC->TextOut(rect1.left,rect1.top,str);
if(m_nVehicleType <= 6)
{
str.Format("%d",m_nVehicleType);
rect1.left = 85 , rect1.top = 70;
}
else if(m_nVehicleType == 0x0c)
{
str.Format("%s","验票");
rect1.left = 70, rect1.top = 70;
}
else
{
str.Format("%s",m_sType[m_nVehicleType - 7]);
rect1.left = 70, rect1.top = 70;
}
pDC->SetTextColor(theIniData.m_dColor_Text4);
pDC->SelectObject(&theIniData.m_fFont6);
pDC->TextOut(rect1.left,rect1.top,str);
pDC->SelectObject(pOldFont);
pDC->SetTextColor(old_textcolor);
pDC->SetBkMode(old_textmode);
}
if(m_bShowTickNum)
{
CString str = "票号:";
str += m_TicketNum;
rect1.left = 180; rect1.top = 130;
DWORD old_textcolor,old_textmode;
CFont * pOldFont;
old_textcolor = pDC->SetTextColor(theIniData.m_dColor_Text7);
old_textmode = pDC->SetBkMode(TRANSPARENT);
pOldFont = pDC->SelectObject(&theIniData.m_fFont4);
pDC->TextOut(rect1.left,rect1.top,str);
pDC->SelectObject(pOldFont);
pDC->SetTextColor(old_textcolor);
pDC->SetBkMode(old_textmode);
}
ReleaseDC(pDC);
// Do not call CDialog::OnPaint() for painting messages
}
LONG COperateDlg::On_Operate_Key(UINT wParam , LONG lParam)
{
UINT nChar = wParam;
if(m_bKey_Free == TRUE)
{
return 0;
}
if(nChar == 0x72) //F3
{
m_pMainView->SendMessage(WM_CHANGE_LLAMP,0,0);
return 0;
}
else if(nChar == 0x73)//F4
{
m_pMainView->SendMessage(WM_CHANGE_LLAMP,1,0);
return 0;
}
switch(m_nStatu)
{
case 0://
m_nStatu = Statu_Init(nChar);
break;
case 1://上班
m_nStatu = Key_Shangban(nChar);
break;
case 2://车型
m_nStatu = Key_CheXing(nChar);
break;
case 3://下班
m_nStatu = Key_XiaBan(nChar);
break;
case 4://车队
m_nStatu = Key_CheDui(nChar);
break;
case 5://车
m_nStatu = Key_Che(nChar);
break;
case 6://验票车
m_nStatu = Key_CheckTicket(nChar);
break;
default:
m_nStatu = 0;
break;
}
return 0;
}
int COperateDlg::Key_Shangban(int nChar)
{
int value;
static int CharNum = 0;
// CRect rect(180,8,30,190);
CRect rect(140,8,30,190);//2002.4.10 hm add
switch(m_nStep1)
{
///键入工号
case 0:
if((nChar >= 0x30)&&(nChar <= 0x39))//30--0,39--9
{
if(CharNum++<4)
{
if(CharNum == 1)
m_sManNum = "";
m_sManNum += (char)nChar;
ShowText(&rect,CharNum,char(nChar));
}
else
{
CharNum = 6;
}
value = m_nStatu;
}
else if(nChar == 0x0d)//回车
{
CharNum = 0;
m_nCurrenBmp = 2;
m_DIB.LoadFromFile(m_HelpFilename[m_nCurrenBmp]);
Invalidate();
m_nStep1 = 1;
value = m_nStatu;
}
else if(nChar == 0x1b)//ESC键
{
CharNum = 0;
m_nCurrenBmp = 0;
m_DIB.LoadFromFile(m_HelpFilename[m_nCurrenBmp]);
Invalidate();
m_nStep1 = 0;
value = 0;
}
else
{
value = m_nStatu;
m_nStep1 = 0;
}
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -