2021-07-11 08:19:57 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
#include "IGDevice.h"
|
|
|
|
|
#include "GScan.h"
|
|
|
|
|
#include "CyUsbEx.h"
|
|
|
|
|
#include "IConfig.h"
|
|
|
|
|
#include "G400ScanConfig.h"
|
|
|
|
|
#include <memory>
|
|
|
|
|
#include <future>
|
|
|
|
|
#include <functional>
|
|
|
|
|
#include "ThreadPool.h"
|
|
|
|
|
#include "StopWatch.h"
|
|
|
|
|
#include "ImageMatQueue.h"
|
|
|
|
|
#include "opencv2/opencv.hpp"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-05-24 12:05:47 +00:00
|
|
|
|
static std::map<PaperStatus, unsigned int> SupPaperTyps_39 = {
|
|
|
|
|
{{TwSS::A3,PaperAlign::Rot0},0},
|
|
|
|
|
{{TwSS::A4,PaperAlign::Rot0},1},
|
|
|
|
|
{{TwSS::A4,PaperAlign::Rot270},2},
|
|
|
|
|
{{TwSS::A5,PaperAlign::Rot0 },3},
|
|
|
|
|
{{TwSS::A5,PaperAlign::Rot270},4},
|
|
|
|
|
{{TwSS::A6,PaperAlign::Rot0},5},
|
|
|
|
|
{{TwSS::A6,PaperAlign::Rot270},6},
|
|
|
|
|
{{TwSS::B4,PaperAlign::Rot0},7},
|
|
|
|
|
{{TwSS::B5,PaperAlign::Rot0},8},
|
|
|
|
|
{{TwSS::B5,PaperAlign::Rot270},9},
|
|
|
|
|
{{TwSS::B6,PaperAlign::Rot0},10},
|
|
|
|
|
{{TwSS::B6,PaperAlign::Rot270},11},
|
|
|
|
|
{{TwSS::USLetter,PaperAlign::Rot0},14},
|
|
|
|
|
{{TwSS::USLedger,PaperAlign::Rot0},12},
|
|
|
|
|
{{TwSS::USLegal,PaperAlign::Rot0},13},
|
|
|
|
|
{{TwSS::None,PaperAlign::Rot0},0},
|
|
|
|
|
{{TwSS::USLetter,PaperAlign::Rot270},15},
|
|
|
|
|
{{TwSS::USStatement,PaperAlign::Rot0},16},
|
|
|
|
|
{{TwSS::MaxSize,PaperAlign::Rot0},16},
|
|
|
|
|
{{TwSS::Trigeminy,PaperAlign::Rot0},16}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2021-07-11 08:19:57 +00:00
|
|
|
|
class GScanO1003399 :public IScanner
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
GScanO1003399();
|
|
|
|
|
virtual ~GScanO1003399();
|
|
|
|
|
virtual void open(int vid, int pid) override;
|
|
|
|
|
virtual void regist_deviceevent_callback(deviceevent_callback callback, void* usrdata = 0) override;
|
|
|
|
|
virtual void DogEar_callback(std::function<void(int)> fun) override;
|
|
|
|
|
virtual int aquire_bmpdata(std::vector<unsigned char>& bmpdata) override;
|
|
|
|
|
virtual BOOL IsConnected() override;
|
|
|
|
|
virtual std::string GetFWVersion() override;
|
|
|
|
|
virtual std::string GetSerialNum() override;
|
2022-02-14 02:30:19 +00:00
|
|
|
|
virtual std::string GetMacAdder() override;
|
2021-07-11 08:19:57 +00:00
|
|
|
|
virtual std::uint32_t GetMotorFPGA() override;
|
|
|
|
|
virtual std::uint32_t GetScanFPGA() override;
|
|
|
|
|
virtual bool is_scan() override;
|
|
|
|
|
virtual BOOL Get_Scanner_PaperOn() override;
|
|
|
|
|
virtual int Get_Roller_num() override;
|
|
|
|
|
virtual void config_params(GScanCap& param) override;
|
|
|
|
|
virtual void Scanner_StartScan(UINT16 count) override;
|
|
|
|
|
virtual void Stop_scan() override;
|
|
|
|
|
virtual int notifyscan() override;
|
|
|
|
|
virtual void ResetScanner() override;
|
|
|
|
|
virtual bool Get_IsImageQueueEmpty() override;
|
|
|
|
|
virtual void reset() override;
|
|
|
|
|
virtual void clear_hwerror() override;
|
|
|
|
|
virtual UINT32 get_ErrorCode() override;
|
|
|
|
|
virtual void Set_ErrorCode(UINT32 value) override;
|
|
|
|
|
virtual int get_scanned_num() override;
|
|
|
|
|
virtual void set_sleep_time(int mode) override;
|
|
|
|
|
virtual bool set_scannercode(std::string str) override;
|
|
|
|
|
virtual std::string get_scannercode() override;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
void usb_run();
|
|
|
|
|
void im_rx();
|
|
|
|
|
void start();
|
|
|
|
|
void stop();
|
|
|
|
|
bool is_runing();
|
|
|
|
|
int scan_mode();
|
|
|
|
|
int count();
|
|
|
|
|
void abort_dev_tx();
|
|
|
|
|
void config_scanparam(const HG_ScanConfig& cfg);
|
|
|
|
|
void config_imgprocparam(const HGImgProcParms& imgprocparams);
|
|
|
|
|
bool is_rx();
|
|
|
|
|
bool rx_cmd();
|
|
|
|
|
bool is_dev_tx();
|
|
|
|
|
int read_data(void* data, int length, int timeout);
|
|
|
|
|
void pop_dev_im();
|
|
|
|
|
int front_datasize();
|
|
|
|
|
int im_dev_count();
|
2021-07-21 02:41:17 +00:00
|
|
|
|
void imgproce(std::shared_ptr<std::vector<char>>& buffs);
|
2022-05-24 12:05:47 +00:00
|
|
|
|
void MultiOut(cv::Mat& pDid);
|
2021-07-11 08:19:57 +00:00
|
|
|
|
int codeconvter(HGEIntInfo code);
|
2021-07-21 02:41:17 +00:00
|
|
|
|
static void usbhotplug_callback(bool isconnect, void* userdata);
|
|
|
|
|
void usbhotplug(bool isleft);
|
2021-08-08 05:30:00 +00:00
|
|
|
|
void proc(bool bcachemode);
|
2021-07-11 08:19:57 +00:00
|
|
|
|
private:
|
|
|
|
|
volatile int devState;
|
|
|
|
|
volatile int Error_Code;
|
2022-02-14 02:30:19 +00:00
|
|
|
|
volatile bool is_back;
|
2021-07-11 08:19:57 +00:00
|
|
|
|
volatile bool scanflag;
|
2021-07-19 10:36:34 +00:00
|
|
|
|
volatile bool keeplastimg;
|
2021-12-16 08:21:35 +00:00
|
|
|
|
volatile bool autopaperstop;
|
|
|
|
|
volatile bool is_kernelsnap_211209;
|
2022-10-20 02:40:25 +00:00
|
|
|
|
volatile bool m_autopaper_timeout;
|
|
|
|
|
std::future<void> m_autopaper_ft;
|
2021-07-11 08:19:57 +00:00
|
|
|
|
GScanCap m_param;
|
|
|
|
|
std::shared_ptr<IUsb> m_usb;
|
2021-08-05 11:24:22 +00:00
|
|
|
|
volatile bool b_imgprothread;
|
2021-07-11 08:19:57 +00:00
|
|
|
|
volatile bool b_usbthread;
|
2021-07-21 02:41:17 +00:00
|
|
|
|
BlockingQueue<std::shared_ptr<std::vector<char>>> imgs;
|
2021-08-08 05:30:00 +00:00
|
|
|
|
BlockingQueue<std::string> m_paths;
|
2022-02-14 02:30:19 +00:00
|
|
|
|
//std::shared_ptr<CImageApplyRotation> m_autotext;
|
2021-08-08 05:30:00 +00:00
|
|
|
|
std::shared_ptr <std::thread> m_imgprocthread;
|
2021-07-11 08:19:57 +00:00
|
|
|
|
std::shared_ptr<std::thread> m_usbthread;
|
|
|
|
|
std::shared_ptr<std::vector<char>> im_data;
|
|
|
|
|
BlockingQueue<std::shared_ptr<std::vector<unsigned char>>> m_imagedata;
|
2022-05-24 12:05:47 +00:00
|
|
|
|
std::string fwversion;
|
2021-08-08 05:30:00 +00:00
|
|
|
|
std::atomic_int imagecount;
|
2022-02-14 02:30:19 +00:00
|
|
|
|
int preProcImgindex;//Ԥ<><D4A4><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2021-07-21 02:41:17 +00:00
|
|
|
|
void* huagods;
|
|
|
|
|
deviceevent_callback dev_callback;
|
2021-07-11 08:19:57 +00:00
|
|
|
|
};
|
|
|
|
|
|