mirror of http://192.168.1.51:8099/lmh188/twain3
141 lines
4.0 KiB
C++
141 lines
4.0 KiB
C++
#pragma once
|
||
#include "GScan.h"
|
||
#include <memory>
|
||
#include <thread>
|
||
#include "common.h"
|
||
#include "Global.h"
|
||
|
||
typedef struct tag_USBCB {
|
||
unsigned int u32_CMD;
|
||
unsigned int u32_Data;
|
||
unsigned int u32_Count;
|
||
}USBCB, * PUSBCB;
|
||
|
||
/*u32_CMD COMMAND*/
|
||
enum tagUsbKeyWords
|
||
{
|
||
/*无命令*/
|
||
NO_COMMAND = 0,
|
||
/*获取dsp 状态*/
|
||
GET_DSP_STATUS = 1,
|
||
/*取图*/
|
||
GET_IMAGE = 2,
|
||
/*销毁DSP中驻存的图*/
|
||
POP_IMAGE = 3,
|
||
/*开始扫描命令*/
|
||
START_COMMAND = 4,
|
||
/*停止扫描命令*/
|
||
STOP = 5,
|
||
/*获取扫描仪扫描模式*/
|
||
GET_SCAN_MODE = 6,
|
||
/*获取固件版本号*/
|
||
GET_FW_VERSION = 7,
|
||
/*返回PC端的状态*/
|
||
SEND_STATUS_PC = 8,
|
||
/*下发扫描配置参数*/
|
||
CONFIGURED_DATA = 9,
|
||
/*下发固件信息*/
|
||
SEND_FW = 10,
|
||
/*获取扫描参数*/
|
||
GET_CONFIG_DATA = 11,
|
||
/*获取扫描历史总张数*/
|
||
GET_SCANN_NUM = 12,
|
||
/*获取有无纸的状态*/
|
||
GET_PAPERFEEDER_STATUS = 13,
|
||
/*DSP初始化*/
|
||
INIT_HARDWARE_SYS = 14,
|
||
/*获取有无纸的状态*/
|
||
GET_PAPER_STATUS = 0x0d,
|
||
/*下发元器件配置参数(灰度,LED R曝光时间)*/
|
||
SEND_COMPONENTS_GR = 15,
|
||
/*下发元器件配置参数(LED G/B曝光时间)*/
|
||
SEND_COMPONENTS_GB = 16,
|
||
/*下发扫描模式*/
|
||
SEND_SCAN_MODE = 17,
|
||
/*开始进行平场矫正*/
|
||
START_FLAT = 18,
|
||
/*停止平场矫正*/
|
||
STOP_FLAT = 19,
|
||
/*下发200dpi彩色平场矫正参数*/
|
||
SEND_200_COLOR_FLAT_DATA = 20,
|
||
/*下发300dpi彩色平场矫正参数*/
|
||
SEND_300_COLOR_FLAT_DATA = 21,
|
||
/*获取200dpi彩色平场矫正参数*/
|
||
GET_200_COLOR_FLAT_DATA = 22,
|
||
/*获取300dpi彩色平场矫正参数*/
|
||
GET_300_COLOR_FLAT_DATA = 23,
|
||
/*下发200dpi灰度平场校正参数*/
|
||
SEND_200_GRAY_FLAT_DATA = 24,
|
||
/*下发300dpi灰度平场校正参数*/
|
||
SEND_300_GRAY_FLAT_DATA = 25,
|
||
/*获取200DPI灰度平场校正参数*/
|
||
GET_200_GRAY_FLAT_DATA = 26,
|
||
/*获取300DPI灰度平场校正参数*/
|
||
GET_300_GRAY_FLAT_DATA = 27,
|
||
/*下发序列号命令*/
|
||
SEND_SERIAL = 28,
|
||
/*获取序列号命令*/
|
||
GET_SERIAL = 29,
|
||
/*获取辊轴张数*/
|
||
GET_ROLLER_NUM = 30,
|
||
/*清空辊轴张数*/
|
||
CLR_ROLLER_NUM = 31,
|
||
/*下发扫描张数*/
|
||
START_COMMAND_COUNT = 38,
|
||
/*设置休眠时间*/
|
||
SET_SLEEP_TIME = 39,
|
||
/*获取休眠时间*/
|
||
GET_SLEEP_TIME = 40,
|
||
/*清空硬件缓存*/
|
||
CLR_HARDWARE_CACHE = 41
|
||
};
|
||
|
||
class GScanO200 : public IGScan
|
||
{
|
||
public:
|
||
GScanO200();
|
||
virtual ~GScanO200();
|
||
virtual void open(int vid = 0x064b, int pid = 0x7823) override;
|
||
virtual int open(int vid = 0x3072) override;
|
||
virtual bool close() override;
|
||
virtual bool is_open() override;
|
||
virtual void setusbreport_callback(usbreport_callback callback,void* usrdata) override;
|
||
virtual int get_image_front_info(ImageInfo* info) override;//add 2020.03.11
|
||
virtual int aquire_image(cv::Mat &mat,int& bppinfo) override;//add 2020.03.11
|
||
|
||
virtual bool IsConnected() override;
|
||
virtual std::string GetFWVersion(int mode) override;
|
||
virtual std::string GetSerialNum(int mode) override;
|
||
virtual bool is_scan() override;
|
||
virtual bool Get_Scanner_PaperOn() override;
|
||
virtual void config_params(GScanCap& params,int mode) override;
|
||
virtual void Scanner_StartScan(UINT32 count,int mode) override;
|
||
virtual void Stop_scan() override;
|
||
virtual void ResetScanner() override;
|
||
virtual bool Get_IsImageQueueEmpty() override;
|
||
virtual void clear_hwerror() override;
|
||
virtual void reset() override;
|
||
virtual void setdecodepixtype(int twpixtype) override;
|
||
virtual UINT32 get_ErrorCode() override;
|
||
virtual void Set_ErrorCode(UINT32 value) override;
|
||
virtual int get_scanned_num() override;
|
||
|
||
virtual int get_roller_num() override;
|
||
virtual void clr_roller_num() override;
|
||
virtual int get_sleep_time() override;
|
||
virtual void set_sleep_time(int time) override;
|
||
virtual bool clr_hardware_cache() override;
|
||
private:
|
||
static void on_usbcallback(bool isleft, void* usrdata);
|
||
void onusbcallback(bool isleft);
|
||
void usbmain();
|
||
USBCB Get_Scanner_Status();
|
||
std::shared_ptr<std::vector<char>> Get_Img_Data(int buffersize);
|
||
void Pop_Image();
|
||
std::shared_ptr<IUsb> m_usb;
|
||
volatile int mode = 0;
|
||
std::unique_ptr<std::thread> m_threadUsb;
|
||
usbreport_callback m_usbreport;
|
||
void* m_usrdata;
|
||
};
|