huago-corrcet_tools/HuaGoCorrect/gscan3399.h

104 lines
3.0 KiB
C
Raw Normal View History

#pragma once
#include "IScanner.h"
#include "ThreadPool.h"
#include <thread>
#include <chrono>
class gscan3399 :public IScanner
{
public:
gscan3399();
virtual ~gscan3399();
virtual void open(int vid, int pid, int index);
virtual int aquire_image(std::string& image, int num);
virtual bool IsConnected();
virtual std::string GetFWVersion();
virtual void SetFWVersion();
virtual std::string GetSerialNum();
virtual void SetSerialNum(std::string serial);
2021-08-17 01:07:55 +00:00
virtual std::string GetKernelVersion();
virtual std::string GetIpAddr();
virtual std::string GetMbVersion();
2022-01-26 09:05:59 +00:00
virtual void SetRatio(int tyepe, int ration,int dpi=0);
virtual void GetRatio(int type, int& ratio,int dpi=0);
2021-12-30 05:55:29 +00:00
virtual void Reboot(bool loader=false);
virtual void PowerOff();
virtual bool is_scan();
virtual bool Get_Scanner_PaperOn();
virtual void Config_Scanner(HGScanConfig config);
virtual void Scanner_StartScan(UINT16 count);
virtual void Stop_scan();
virtual void ResetScanner();
virtual bool Get_IsImageQueueEmpty();
virtual void reset();
virtual void run();
virtual int get_decompress_pix_type();
virtual void set_decompress_pix_type(int pixtype);
2021-08-17 01:07:55 +00:00
virtual void GetFlatMaxBright(bool iscolor, unsigned int& val);
virtual void SetFlatMaxBright(bool iscolor, unsigned int val);
virtual bool Updata(std::string filename, std::function<void(long, long)> func);
virtual void SetIsDuplex(bool value);
virtual void ActiveteUSB();
virtual int GetScanNum();
virtual int GetRollerNum();
virtual void ClrRollerNum();
virtual void ClrScanNum();
virtual void SendFlatData(CorrectParam param, int index);
virtual CaptureParams GetFlatData();
virtual void StartFlat(bool iscolor);
virtual void DevStateChange();
virtual int getMatSum();
virtual void close();
virtual void GetExpose(int& Aside, int& Bside);
virtual void SetExpose(int aside, int bside);
virtual void GetSptime(int type, int& time);
virtual void SetSptime(int type, int time);
virtual void GetSleepTime(int& sleeptime);
virtual void SetSleepTime(int sleeptime);
2021-08-17 01:07:55 +00:00
virtual void SetFlatCallback(std::function<void(std::string)> func);
virtual void GetSpeedMode(int& speedmode,bool getorset);
virtual void GetOrSetVIDPID(int& value, bool get) override;
2022-01-26 09:05:59 +00:00
virtual std::string GetSysInfo() override;
private:
static void usbcallback(bool isleft, void* usrdata);
int read_data(void* data, int length, int timeout);
void get_imgdata();
bool is_runing();
bool bulk_starttransfer();
bool is_bulktransferring();
void popimg();
int front_datasize();
int get_imgremains();
void imgproce(std::shared_ptr<std::vector<char>>& buffs);
void OnUsbHotplug(bool isleft);
void usb_run();
int codeconvter(HGEIntInfo code);
std::string GetDeviceFile(std::string path);
private:
volatile int devState;
volatile int Error_Code;
volatile bool b_usbthread;
ThreadPool m_imgthread;
std::shared_ptr<std::thread> m_usbthread;
std::shared_ptr<std::vector<char>> im_data;
BlockingQueue<std::string> m_imagespath;
std::atomic_int imgremains;
HGScanConfig m_config;
2021-08-17 01:07:55 +00:00
std::function<void(std::string)> m_flatcallback;
};