twain3/device/GScan.h

141 lines
3.1 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <memory>
#include <vector>
#include <string>
#include <queue>
#include <time.h>
#include <mutex>
#include <thread>
#include <opencv2/opencv.hpp>
#ifdef WIN32
#include <Windows.h>
#include <WinUser.h>
#endif
#include "callbackdefines.h"
#include "common.h"
#include "Global.h"
class CImageApply;
class IUsb;
class ImageMatQueue;
class IGScan
{
public:
IGScan();
virtual ~IGScan(){}
virtual void open(int vid, int pid) = 0;
virtual int open(int vid) = 0;
virtual bool close() = 0;//add 2020.3.11
virtual bool is_open() = 0;//add 2020.3.11
virtual void setusbreport_callback(usbreport_callback callback=0,void* usrdata=0)=0;
virtual int get_image_front_info(ImageInfo* info) = 0;
virtual int aquire_image(cv::Mat& mat, int& bppinfo) = 0;
virtual void clear_hwerror() = 0;
virtual bool IsConnected() = 0;
virtual std::string GetFWVersion(int mode) = 0;
virtual std::string GetSerialNum(int mode) = 0;
virtual bool is_scan() = 0;
virtual bool Get_Scanner_PaperOn() = 0;
virtual void config_params(GScanCap& params,int mode) = 0;
virtual void Scanner_StartScan(UINT32 count,int mode) = 0;
virtual void Stop_scan() = 0;
virtual void ResetScanner() =0;
virtual bool Get_IsImageQueueEmpty() = 0;
virtual void reset() = 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;
virtual int get_roller_num() = 0;
virtual void clr_roller_num() = 0;
virtual int get_sleep_time() = 0;
virtual void set_sleep_time(int time) =0;
virtual bool clr_hardware_cache() = 0;
void setmode(int mode);
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;
};
//
//class GScan
//{
//public:
// GScan();
// virtual ~GScan();
//
//protected:
//
//};
void DoEvents();
typedef enum tagUsbSupported
{
/*ֹͣɨ<D6B9><C9A8>**/
SCAN_STOP = -1,
/*<2A>쳣******/
HAVE_ERROR = -2,
/*<2A><><EFBFBD><EFBFBD>״̬****/
NORMAL = 0,
/*<2A><><EFBFBD><EFBFBD>***/
OPEN_COVER = 1,
/*<2A><>ֽ****/
NO_FEED = 2,
/*<2A><>ֽʧ<D6BD><CAA7>****/
FEED_IN_ERROR = 4,
/**<2A><>ֽ*****/
PAPER_JAM = 8,
/**<2A><><EFBFBD>⵽˫<E2B5BD><CBAB>**/
DETECT_DOUBLE_FEED = 16,
/**<2A><><EFBFBD><EFBFBD><E2B5BD><EFBFBD>鶤**/
DETECT_STAPLE = 32,
/*ֽ<><D6BD><EFBFBD><EFBFBD>б******/
PAPER_SKEW = 64,
/**<2A>Զ<EFBFBD>ģʽ****/
AUTO_SCAN_MODE = 65,
/**<2A>ֶ<EFBFBD>ģʽ****/
MANAUL_SCAN_MODE = 66,
/**<2A><><EFBFBD><EFBFBD>ģʽ****/
COUNT_MODE = 67,
/*Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*****/
HARDWARE_ERROR = 68,
/*FPGA<47><41><EFBFBD><EFBFBD>***/
FPGA_ERROR = 68,
/*<2A><>ʼ******/
START_SCAN = 69,
/**ֹͣ*****/
STOP_SCAN = 70,
/**<2A><>ͼ*****/
HAVE_IMAGE = 71,
/*<2A><><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,
/*PC<50><43>æ<EFBFBD><C3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***/
DOG_EAR = 74,
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SIZE_ERROR = 75,
/*USB<53><42><EFBFBD>ӶϿ<D3B6>***/
DEVICE_OFF_LINE = 200,
/*<2A>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ֹͣ***/
USER_STOP = 201
} UsbSupported;
enum tagDevState
{
DEV_STOP = -1,
DEV_RUNNING,
DEV_WRONG
};