twain3.0/huagao/Device/GScan.h

125 lines
2.5 KiB
C
Raw Normal View History

#pragma once
#include <memory>
#include <vector>
#include <string>
#include <queue>
#include <Windows.h>
#include <time.h>
#include <mutex>
#include <thread>
#include "PublicFunc.h"
enum tagDevState
{
DEV_STOP = -1,
DEV_ISRUNNING,
DEV_WRONG
};
typedef enum tagDevState DevState, PDevState;
//u32_Data
typedef enum tagUsbSupported {
//ֹͣɨ<D6B9><C9A8>
SCAN_STOP = -2,
//<2F>
HAVE_ERROR = -1,
//<2F><><EFBFBD><EFBFBD>״̬
NORMAL = 0,
//<2F><><EFBFBD><EFBFBD>
OPEN_COVER = 1,
// <20><>ֽ
NO_FEED = 2,
// <20><>ֽʧ<D6BD><CAA7>
FEED_IN_ERROR = 4,
// <20><>ֽ
PAPER_JAM = 8,
// <20><><EFBFBD>⵽˫<E2B5BD><CBAB>
DETECT_DOUBLE_FEED = 16,
// <20><><EFBFBD><EFBFBD><E2B5BD><EFBFBD>
DETECT_STAPLE = 32,
// ֽ<><D6BD><EFBFBD><EFBFBD>б
PAPER_SKEW = 64,
// <20>Զ<EFBFBD>ģʽ
AUTO_SCAN_MODE = 65,
// <20>ֶ<EFBFBD>ģʽ
MANAUL_SCAN_MODE = 66,
// <20><><EFBFBD><EFBFBD>ģʽ
COUNT_MODE = 67,
// Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HARDWARE_ERROR = 68,
// FPGA<47><41><EFBFBD><EFBFBD>
FPGA_ERROR = 68,
// <20><>ʼ
START_SCAN = 69,
//ֹͣ
STOP_SCAN = 70,
//<2F><>ͼ
HAVE_IMAGE = 71,
// <20><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UPDATE_SCAN_PARAMETER = 72,
// PC<50><43>æ<EFBFBD><C3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PC_SCAN_BUSY_or_ERROR = 73,
//USB δ<><CEB4><EFBFBD><EFBFBD>
USB_DISCONNECTED = 200
} UsbSupported, * PUsbSupported;
enum tagEventIndex
{
EVENT_IMAGE,
EVENT_NUM
};
class DiscardBlank;
class CImageApply;
class IUsb;
class ImageMatQueue;
class IScanner
{
public:
IScanner() { bFilterMsg = false; }
virtual ~IScanner() { bFilterMsg = true; }
void ResetMsgFiter() { bFilterMsg = true; }
virtual void open(int vid, int pid) = 0;;
virtual int aquire_bmpdata(std::vector<unsigned char>& bmpdata) = 0;
virtual BOOL IsConnected() = 0;
virtual std::string GetFWVersion() = 0;
virtual std::string GetSerialNum() = 0;
virtual bool is_scan() = 0;
virtual BOOL Get_Scanner_PaperOn() = 0;
virtual void config_params(GScanCap& params) = 0;
virtual void Scanner_StartScan(UINT16 count) = 0;
virtual void Stop_scan() = 0;
virtual void ResetScanner() = 0;
virtual bool Get_IsImageQueueEmpty() = 0;
virtual void reset() = 0;
virtual void clear_hwerror() = 0;
virtual void setdecodepixtype(int twpixtype) = 0;
virtual UINT32 get_ErrorCode() = 0;
virtual void Set_ErrorCode(UINT32 value) = 0;
virtual int get_scanned_num() = 0;
void DoEvents() {
MSG msg;
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
if (msg.message != WM_LBUTTONUP && bFilterMsg)
{
bFilterMsg = false;
return;
}
DispatchMessage(&msg);
TranslateMessage(&msg);
}
}
protected:
volatile UINT32 Error_Code;
volatile int devState;
std::shared_ptr<ImageMatQueue> m_pImages;
std::mutex m_Locker;
std::mutex m_imgLocker;
std::string fwVersion;
std::string SerialNum;
int pixType;
bool bFilterMsg;
};