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

📄 symbolql.cpp

📁 Symbol_MC3000_C#.条码扫码范例程序之5
💻 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 + -