twain3/device/GScan.h

141 lines
3.1 KiB
C
Raw Normal View History

#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
};