📄 symbolql.cpp
字号:
// SymbolQL.cpp : implementation file
//
#include "stdafx.h"
#include "mc3000.h"
#include "SymbolQL.h"
#include "DataShowDlg.h"
#include "TimeMsgDlg.h"
extern "C"
{
#include <ScanCAPI.h>
};
// CSymbolQL dialog
HINSTANCE hInst = NULL;
HANDLE hScanner = NULL;
LPSCAN_BUFFER lpScanBuffer = NULL;
TCHAR szScannerName[MAX_PATH] = TEXT("SCN1:"); // default scanner name
DWORD dwScanSize = 7095; // default scan buffer size
DWORD dwScanTimeout = 2000; // default timeout value (0 means no timeout)
BOOL bUseText = TRUE;
BOOL bTriggerFlag = FALSE;
BOOL bRequestPending = FALSE;
BOOL bStopScanning = FALSE;
BOOL bContinuousMode = FALSE;
IMPLEMENT_DYNAMIC(CSymbolQL, CDialog)
CSymbolQL::CSymbolQL(CWnd* pParent /*=NULL*/)
: CDialog(CSymbolQL::IDD, pParent)
{
// m_pFind = NULL;
}
CSymbolQL::~CSymbolQL()
{
SCAN_Flush(hScanner);
SCAN_Disable(hScanner);
if (lpScanBuffer)
SCAN_DeallocateBuffer(lpScanBuffer);
SCAN_Close(hScanner);
}
void CSymbolQL::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CSymbolQL, CDialog)
ON_BN_CLICKED(IDC_BUTTON_QL, &CSymbolQL::OnBnClickedButtonQl)
ON_BN_CLICKED(IDCANCEL, &CSymbolQL::OnBnClickedCancel)
ON_WM_ACTIVATE()
ON_MESSAGE(UM_SCAN, OnScanData)
// ON_MESSAGE(UM_SCAN,OnScanData)
END_MESSAGE_MAP()
// CSymbolQL message handlers
void CSymbolQL::OnBnClickedButtonQl()
{
// TODO: Add your control notification handler code here
}
void CSymbolQL::OnBnClickedCancel()
{
// TODO: Add your control notification handler code here
OnCancel();
}
void CSymbolQL::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
CDialog::OnActivate(nState, pWndOther, bMinimized);
DWORD dwResult;
// TODO: Add your message handler code here
dwResult = SCAN_Open(szScannerName, &hScanner);
if ( dwResult != E_SCN_SUCCESS )
{
AfxMessageBox(_T("设备无法打开!"));
}
dwResult = SCAN_Enable(hScanner);
if ( dwResult != E_SCN_SUCCESS )
{
AfxMessageBox(_T("设备无效!"));
}
lpScanBuffer = SCAN_AllocateBuffer(bUseText, dwScanSize);
if (lpScanBuffer == NULL)
{
AfxMessageBox(_T("缓冲打开失败!"));
}
dwResult = SCAN_ReadLabelMsg(hScanner,
lpScanBuffer,
this->m_hWnd,
UM_SCAN,
dwScanTimeout,
NULL);
if ( dwResult != E_SCN_SUCCESS )
AfxMessageBox(_T("事件发送失败!"));
else
bRequestPending = TRUE;
}
BOOL CSymbolQL::OnInitDialog()
{
CDialog::OnInitDialog();
return TRUE;
}
LRESULT CSymbolQL::OnScanData(WPARAM wParam, LPARAM lParam)
{
TCHAR szLabelType[10];
DWORD dwResult;
bTriggerFlag = FALSE;
SCAN_SetSoftTrigger(hScanner,&bTriggerFlag);
LPSCAN_BUFFER lpScanBuf;
bRequestPending = FALSE;
lpScanBuf = (LPSCAN_BUFFER)lParam;
if ( lpScanBuf == NULL )
{
AfxMessageBox(_T("缓冲错误!"));
}
DWORD dwState = SCNBUF_GETSTAT(lpScanBuf);
switch (dwState)
{
case E_SCN_DEVICEFAILURE:
AfxMessageBox(_T("设备失败!"));
break;
case E_SCN_READPENDING:
// AfxMessageBox(_T("Readpending!"));
break;
case E_SCN_READCANCELLED:
if (bStopScanning)
{ // complete the second step of UM_STOPSCANNING
}
break;
case E_SCN_READTIMEOUT:
{
SetDlgItemText(IDC_EDIT_STATE,_T("等待中...."));
}
break;
case E_SCN_SUCCESS:
SetDlgItemText(IDC_EDIT_STATE,_T("成功...."));
SetDlgItemText(IDC_EDIT_RESULT,(LPTSTR)SCNBUF_GETDATA(lpScanBuffer));
// Format label type as a hex constant for display
wsprintf(szLabelType, TEXT("0x%.2X"), SCNBUF_GETLBLTYP(lpScanBuf));
SetDlgItemText(IDC_EDIT_TYPE,szLabelType);
SetDlgItemInt(IDC_EDIT_LENGTH,SCNBUF_GETLEN(lpScanBuf));
DoQL();
break;
}
dwResult = SCAN_ReadLabelMsg(hScanner,
lpScanBuffer,
this->m_hWnd,
UM_SCAN,
dwScanTimeout,
NULL);
if ( dwResult != E_SCN_SUCCESS )
;
else
bRequestPending = TRUE;
return 0;
};
CString CSymbolQL::GetKey()
{
return m_sKey;
}
void CSymbolQL::DoQL()
{
CString skey ;
GetDlgItemText(IDC_EDIT_RESULT,m_sKey);
CDialog::OnOK();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -