mirror of http://192.168.1.51:8099/lmh188/uv-twain
89 lines
2.0 KiB
C++
89 lines
2.0 KiB
C++
#pragma once
|
|
#include "IGDevice.h"
|
|
#include <memory>
|
|
#include <thread>
|
|
#include <mutex>
|
|
#include "BlockingQueue.h"
|
|
#include <string>
|
|
|
|
class IUsb;
|
|
class GDevice : public IGDevice
|
|
{
|
|
public:
|
|
GDevice(std::shared_ptr<IUsb> usb);
|
|
virtual ~GDevice();
|
|
// ͨ¹ý IGDevice ¼Ì³Ð
|
|
virtual bool open() override;
|
|
virtual void close() override;
|
|
virtual bool is_open() override;
|
|
bool start(image_callback callfunc, void* userdata);
|
|
void set_event_call(event_callback event_callfunc, void* userdata);
|
|
virtual void stop() override;
|
|
virtual int is_run() override;
|
|
virtual void reset() override;
|
|
|
|
void write_dsp_fw(std::string path);
|
|
|
|
void write_devname(std::string name);
|
|
std::string read_devname();
|
|
|
|
void write_reg(int type, int addr, int value);
|
|
int read_reg(int type, int addr);
|
|
|
|
bool write_flash(unsigned int addr, void* data, int size);
|
|
bool read_flash(unsigned int addr, void* data, int size);
|
|
|
|
void trigger_scan(void);
|
|
|
|
void write_pid(unsigned short pid);
|
|
unsigned short read_pid();
|
|
|
|
private:
|
|
void recv_main();
|
|
void Int_main();
|
|
|
|
void init_cam();
|
|
|
|
int read_data(void* data, int lenght, int timeout);
|
|
void read_frame(int index, int offset);
|
|
int frame_size(int index);
|
|
|
|
|
|
|
|
|
|
void pick_paper(void);
|
|
|
|
bool DataOn();
|
|
|
|
std::shared_ptr<IUsb> m_usb;
|
|
const int buffer_size = 1204 * 1024;
|
|
const int crtlBufferSize = 512;
|
|
volatile bool m_bScan;
|
|
volatile bool m_bListen;
|
|
|
|
std::shared_ptr<std::thread> m_threadInt;
|
|
std::shared_ptr<std::thread> m_threadrecv;
|
|
std::mutex m_mtxInt;
|
|
std::mutex m_mtxCtrl;
|
|
image_callback image_call;
|
|
event_callback event_call;
|
|
const int to_device = 0x40;
|
|
const int from_device = 0xc0;
|
|
const int regs_access = 0x0c;
|
|
const int flash_access = 0x04;
|
|
|
|
const int regs_req = 0x0c;
|
|
|
|
BlockingQueue<int> image_indexs;
|
|
|
|
void* m_imagecall_userdata;
|
|
void* m_eventcall_userdata;
|
|
volatile bool m_run;
|
|
|
|
|
|
// ͨ¹ý IGDevice ¼Ì³Ð
|
|
virtual void set_option(Cam_Options option,unsigned int value) override;
|
|
virtual int get_option(Cam_Options option) override;
|
|
virtual std::vector<Cam_Options> support_options() override;
|
|
};
|