2023-04-08 00:56:20 +00:00
|
|
|
#pragma once
|
2023-05-02 01:50:55 +00:00
|
|
|
#include <memory>
|
|
|
|
#include <thread>
|
|
|
|
#include "BlockingQueue.h"
|
|
|
|
#include "fsmstate.h"
|
|
|
|
#include <threadex.h>
|
|
|
|
#include "IScanner.h"
|
|
|
|
#include "wakeup.hpp"
|
|
|
|
#include "commondef.h"
|
2023-04-08 00:56:20 +00:00
|
|
|
|
2023-05-02 01:50:55 +00:00
|
|
|
class MotorBoard;
|
|
|
|
class ICapturer;
|
|
|
|
class IImageHandler;
|
|
|
|
class MotorController;
|
|
|
|
class CSizedetect;
|
|
|
|
class CImageApplyDogEarDetection;
|
2023-04-08 00:56:20 +00:00
|
|
|
|
2023-04-23 03:50:17 +00:00
|
|
|
class Scanner : public IScanner
|
2023-04-08 00:56:20 +00:00
|
|
|
{
|
|
|
|
public:
|
2023-05-02 01:50:55 +00:00
|
|
|
Scanner(std::shared_ptr<ICapturer> capturer, std::shared_ptr<MotorBoard> mb, std::shared_ptr<WakeUp> wake);
|
2023-04-23 03:50:17 +00:00
|
|
|
virtual ~Scanner();
|
2023-05-02 01:50:55 +00:00
|
|
|
virtual void try_scan(const std::string encodehexstr) override;
|
|
|
|
virtual void configparam(HGScanConfig config) override;
|
2023-04-23 03:50:17 +00:00
|
|
|
virtual void start_scan() override;
|
|
|
|
virtual void stop_scan() override;
|
2023-05-02 01:50:55 +00:00
|
|
|
|
|
|
|
virtual int count() override;
|
2023-04-23 03:50:17 +00:00
|
|
|
virtual int mode() override;
|
2023-05-02 01:50:55 +00:00
|
|
|
virtual void put(ScanEvent evt) override { sysEvent.Put(evt); }
|
|
|
|
virtual bool is_runscan() override;
|
|
|
|
virtual void set_imagehandler(std::shared_ptr<IImageHandler> handler = nullptr) override;
|
|
|
|
virtual void clear_error() override;
|
|
|
|
virtual bool paper_ready() override;
|
|
|
|
virtual bool get_keeplastpaper() override;
|
|
|
|
virtual void set_motorboardcallback(MotorBoardGlue glue) override;
|
|
|
|
virtual void set_imgprocparams(HGImgProcParms parmas) override;
|
|
|
|
virtual void test_autocorrect(int colormode) override;
|
|
|
|
virtual void test_cap(HGScanConfig config) override;
|
|
|
|
virtual bool set_hgimgconfig(GScanCap config) override;
|
|
|
|
virtual void add_scansever(HGIntInfo event) override;
|
|
|
|
virtual void set_sleeptime(int val) override;
|
|
|
|
virtual int get_sleeptime() override;
|
|
|
|
virtual void resettime() override;
|
|
|
|
virtual int get_sleepstatus() override;
|
|
|
|
virtual void set_sleepstatus(bool off) override;
|
|
|
|
virtual int getimageprocedone() override;
|
|
|
|
virtual void set_paprent(void *parent) override;
|
|
|
|
virtual bool getpaperon() override;
|
|
|
|
virtual int getmbstatus() override;
|
|
|
|
virtual std::string getmbversion() override;
|
|
|
|
virtual void setfeedmode(int value) override;
|
|
|
|
virtual void settrayposition(int value) override;
|
|
|
|
virtual void clean_paper_road() override;
|
2023-04-08 00:56:20 +00:00
|
|
|
private:
|
2023-05-02 01:50:55 +00:00
|
|
|
void runMessageLoop();
|
|
|
|
void runScan();
|
|
|
|
void testRunscan();
|
|
|
|
void preFeed();
|
|
|
|
void startcapimage(bool value);
|
|
|
|
bool getcapimageflag();
|
|
|
|
bool pickpaper();
|
|
|
|
void autosizescan();
|
|
|
|
void fixedsizescan();
|
|
|
|
int waitpaperout();
|
|
|
|
void ControlFeedMode();
|
|
|
|
bool ExceptionCheck();
|
|
|
|
ImgStatus ImgDetect();
|
|
|
|
std::thread threadRunMessageLoop;
|
|
|
|
volatile bool bMsgLoop = true;
|
|
|
|
BlockingQueue<ScanEvent> sysEvent;
|
|
|
|
|
|
|
|
std::shared_ptr<CImageApplyDogEarDetection> m_dog;
|
|
|
|
std::shared_ptr<CSizedetect> m_sizedetect;
|
|
|
|
|
|
|
|
std::shared_ptr<MotorBoard> mb;
|
|
|
|
std::shared_ptr<ICapturer> capturer;
|
|
|
|
std::shared_ptr<WakeUp> wake;
|
|
|
|
|
|
|
|
std::shared_ptr<ThreadEx> fu_runscan;
|
|
|
|
std::shared_ptr<IImageHandler> imagehandler;
|
|
|
|
std::shared_ptr<MotorController> m_motorcontrol;
|
|
|
|
|
|
|
|
std::shared_ptr<ThreadEx> m_capturereload;
|
|
|
|
std::function<void(int)> m_mtcallback;
|
2023-04-08 00:56:20 +00:00
|
|
|
volatile int done_scan = 0;
|
|
|
|
volatile bool is_ml_top = 0;
|
|
|
|
volatile bool handstop = 0;
|
2023-05-02 01:50:55 +00:00
|
|
|
volatile int scannum = 0;
|
|
|
|
int scancount = 0;
|
|
|
|
volatile unsigned int mb_error_code;
|
|
|
|
HGScanConfig m_config;
|
|
|
|
GScanCap m_cap;
|
|
|
|
ScannerNativeParam scannerinfo;
|
|
|
|
void *m_parent;
|
|
|
|
std::string mbversion;
|
|
|
|
unsigned int mfpgaversion;
|
2023-04-08 00:56:20 +00:00
|
|
|
};
|