twain2/hugaotwainds/gscn_drv.h

79 lines
1.5 KiB
C
Raw Normal View History

2020-03-11 02:53:30 +00:00
#pragma once
#include "UsbScanEx.h"
#include <memory>
#include <vector>
#include <string>
#include <queue>
#include <Windows.h>
#include "MutexEx.h"
#include "opencv2/core/core.hpp"
#include <opencv2\highgui\highgui.hpp>
#include "jpeglib.h"
#include <time.h>
#include <boost\thread\mutex.hpp>
#include <boost\thread.hpp>
#include "ImageMatQueue.h"
#include "PublicFunc.h"
using namespace cv;
enum tagDevState
{
DEV_STOP = -1,
DEV_ISRUNNING,
DEV_WRONG
};
typedef enum tagDevState DevState, PDevState;
enum tagEventIndex
{
EVENT_IMAGE,
EVENT_NUM
};
class GScn_Drv
{
public:
GScn_Drv();
~GScn_Drv();
void open(int vid, int pid);
int aquire_image(cv::Mat& image);
BOOL IsConnected();
std::string GetFWVersion();
std::string GetSerialNum();
bool is_scan();
USBCB Get_Scanner_Status();
BOOL Get_Scanner_PaperOn();
void Config_Scanner(PUSBCB pUSBCB);
void Scanner_StartScan(UINT16 count);
void Stop_scan();
void ResetScanner();
bool Get_IsImageQueueEmpty();
void reset();
void run();
void set_decompress_pix_type(int pixtype);
void SetIsDuplex(BOOL value);
void setlist(std::vector<std::shared_ptr<CImageApply> >list);
UINT32 get_ErrorCode();
void Set_ErrorCode(UINT32 value);
private:
cv::Mat popMat();
void pushMat(JpegBuffer& data);
cv::Mat Get_Img_Data(int buffersize);
DWORD usbmain();
void Pop_Image();
private:
std::shared_ptr<IUsb> m_usb;
ImageMatQueue m_pImages;
bool m_bRun;
boost::mutex m_Locker;
boost::mutex m_imgLocker;
int pixType;
volatile UINT32 Error_Code;
volatile int devState;
boost::thread m_threadUsb;
};