twain2/gscn_drv.h

86 lines
1.5 KiB
C++

#pragma once
#include <memory>
#include <vector>
#include <string>
#include <queue>
#include <Windows.h>
#include "MutexEx.h"
#include "jpeglib.h"
#include <time.h>
#include <mutex>
#include <thread>
#include "ImageMatQueue.h"
#include "PublicFunc.h"
#include "scn_config.h"
enum tagDevState
{
DEV_STOP = -1,
DEV_ISRUNNING,
DEV_WRONG
};
typedef enum tagDevState DevState, PDevState;
enum tagEventIndex
{
EVENT_IMAGE,
EVENT_NUM
};
class DiscardBlank;
class CImageApply;
class IGScan
{
public:
virtual ~IGScan()=0 {};
virtual void open(int vid, int pid) = 0;;
virtual int aquire_image(cv::Mat& image) = 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(SFreeImage& 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 setdecodepixtype(int twpixtype)= 0;
virtual UINT32 get_ErrorCode() = 0;
virtual void Set_ErrorCode(UINT32 value) = 0;
};
class IUsb;
class GScn_Drv
{
public:
GScn_Drv();
virtual ~GScn_Drv();
protected:
volatile UINT32 Error_Code;
cv::Mat popMat();
void pushMat(JpegBuffer& data);
void trim(std::string &s);
volatile int devState;
ImageMatQueue m_pImages;
std::mutex m_Locker;
std::mutex m_imgLocker;
std::string fwVersion;
std::string SerialNum;
int pixType;
};
void DoEvents();