mirror of http://192.168.1.51:8099/lmh188/twain3.0
parent
382e47ec7a
commit
d6b6eda07a
|
@ -61,7 +61,9 @@ typedef enum tagUsbSupported {
|
||||||
// PC繁忙或出错
|
// PC繁忙或出错
|
||||||
PC_SCAN_BUSY_or_ERROR = 73,
|
PC_SCAN_BUSY_or_ERROR = 73,
|
||||||
//USB 未连接
|
//USB 未连接
|
||||||
USB_DISCONNECTED = 200
|
USB_DISCONNECTED = 200,
|
||||||
|
//用户点击停止
|
||||||
|
USER_STOP = 201
|
||||||
} UsbSupported, * PUsbSupported;
|
} UsbSupported, * PUsbSupported;
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,10 +73,10 @@ enum tagEventIndex
|
||||||
EVENT_NUM
|
EVENT_NUM
|
||||||
};
|
};
|
||||||
|
|
||||||
class DiscardBlank;
|
|
||||||
class CImageApply;
|
class CImageApply;
|
||||||
class IUsb;
|
class IUsb;
|
||||||
class ImageMatQueue;
|
class ImageMatQueue;
|
||||||
|
typedef void(*deviceevent_callback)(int eventID, void* userdata);
|
||||||
|
|
||||||
class IScanner
|
class IScanner
|
||||||
{
|
{
|
||||||
|
@ -82,7 +84,8 @@ public:
|
||||||
IScanner() { bFilterMsg = false; }
|
IScanner() { bFilterMsg = false; }
|
||||||
virtual ~IScanner() { bFilterMsg = true; }
|
virtual ~IScanner() { bFilterMsg = true; }
|
||||||
void ResetMsgFiter() { bFilterMsg = true; }
|
void ResetMsgFiter() { bFilterMsg = true; }
|
||||||
virtual void open(int vid, int pid) = 0;;
|
virtual void open(int vid, int pid) = 0;
|
||||||
|
virtual void regist_deviceevent_callback(deviceevent_callback callback, void* usrdata = 0) = 0;
|
||||||
virtual int aquire_bmpdata(std::vector<unsigned char>& bmpdata) = 0;
|
virtual int aquire_bmpdata(std::vector<unsigned char>& bmpdata) = 0;
|
||||||
virtual BOOL IsConnected() = 0;
|
virtual BOOL IsConnected() = 0;
|
||||||
virtual std::string GetFWVersion() = 0;
|
virtual std::string GetFWVersion() = 0;
|
||||||
|
|
|
@ -27,6 +27,10 @@ void GScan200::open(int vid, int pid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GScan200::regist_deviceevent_callback(deviceevent_callback callback, void* usrdata)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
int GScan200::aquire_bmpdata(std::vector<unsigned char>& bmpdata)
|
int GScan200::aquire_bmpdata(std::vector<unsigned char>& bmpdata)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -11,6 +11,7 @@ public:
|
||||||
GScan200();
|
GScan200();
|
||||||
virtual ~GScan200();
|
virtual ~GScan200();
|
||||||
virtual void open(int vid, int pid) override;
|
virtual void open(int vid, int pid) override;
|
||||||
|
virtual void regist_deviceevent_callback(deviceevent_callback callback, void* usrdata = 0) override;
|
||||||
virtual int aquire_bmpdata(std::vector<unsigned char>& bmpdata) override;
|
virtual int aquire_bmpdata(std::vector<unsigned char>& bmpdata) override;
|
||||||
virtual BOOL IsConnected() override;
|
virtual BOOL IsConnected() override;
|
||||||
virtual std::string GetFWVersion() override;
|
virtual std::string GetFWVersion() override;
|
||||||
|
|
|
@ -143,6 +143,7 @@ typedef enum tagUsbKeyWords : UINT32
|
||||||
} UsbKeyWords, * PUsbKeyWords;
|
} UsbKeyWords, * PUsbKeyWords;
|
||||||
|
|
||||||
GScanO200::GScanO200() :
|
GScanO200::GScanO200() :
|
||||||
|
huagods(NULL),
|
||||||
m_bread_fixed_ratio_fromDSP(false)
|
m_bread_fixed_ratio_fromDSP(false)
|
||||||
{
|
{
|
||||||
m_pImages.reset(new ImageMatQueue());
|
m_pImages.reset(new ImageMatQueue());
|
||||||
|
@ -192,11 +193,22 @@ void GScanO200::open(int vid, int pid)
|
||||||
{
|
{
|
||||||
m_usb = *usbs.begin();
|
m_usb = *usbs.begin();
|
||||||
bool ret = m_usb->open();
|
bool ret = m_usb->open();
|
||||||
|
USBCB status = { GET_DSP_STATUS ,0,0 };
|
||||||
|
if (m_usb.get() && m_usb->is_connected())
|
||||||
|
m_usb->write_bulk(&status, sizeof(status));
|
||||||
|
|
||||||
|
if (m_usb.get() && m_usb->is_connected())
|
||||||
|
m_usb->read_bulk(&status, sizeof(status));
|
||||||
if (ret) {
|
if (ret) {
|
||||||
m_usb->set_usbhotplug_callback(usbhotplug_callback, this);
|
m_usb->set_usbhotplug_callback(usbhotplug_callback, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void GScanO200::regist_deviceevent_callback(deviceevent_callback callback, void* usrdata)
|
||||||
|
{
|
||||||
|
huagods = usrdata;
|
||||||
|
dev_callback = callback;
|
||||||
|
}
|
||||||
#ifdef LOG_NORMAL
|
#ifdef LOG_NORMAL
|
||||||
fstream fsaquire;
|
fstream fsaquire;
|
||||||
static int aquiretimes = 1;
|
static int aquiretimes = 1;
|
||||||
|
@ -368,12 +380,14 @@ void GScanO200::Scanner_StartScan(UINT16 count)
|
||||||
m_pImages->setscanflags(false);
|
m_pImages->setscanflags(false);
|
||||||
devState = DEV_WRONG;
|
devState = DEV_WRONG;
|
||||||
Set_ErrorCode(status.u32_Data);
|
Set_ErrorCode(status.u32_Data);
|
||||||
|
if (huagods)
|
||||||
|
dev_callback(status.u32_Data, huagods);
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef G200
|
//#ifndef G200
|
||||||
USBCB paperstatus = { GET_PAPER_STATUS ,0,0 };
|
USBCB paperstatus = { GET_PAPER_STATUS ,0,0 };
|
||||||
if (m_usb.get() && m_usb->is_connected())
|
if (m_usb.get() && m_usb->is_connected())
|
||||||
m_usb->write_bulk(&paperstatus, sizeof(paperstatus));
|
m_usb->write_bulk(&paperstatus, sizeof(paperstatus));
|
||||||
|
@ -383,9 +397,11 @@ void GScanO200::Scanner_StartScan(UINT16 count)
|
||||||
m_pImages->setscanflags(false);
|
m_pImages->setscanflags(false);
|
||||||
devState = DEV_WRONG;
|
devState = DEV_WRONG;
|
||||||
Set_ErrorCode(NO_FEED);
|
Set_ErrorCode(NO_FEED);
|
||||||
|
if (huagods)
|
||||||
|
dev_callback(NO_FEED, huagods);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif // !G200
|
//#endif // !G200
|
||||||
|
|
||||||
if (gcap.is_duplex)
|
if (gcap.is_duplex)
|
||||||
count = count == 65535 ? 65535 : count / 2;
|
count = count == 65535 ? 65535 : count / 2;
|
||||||
|
@ -484,6 +500,9 @@ void GScanO200::usbhotplug(bool isleft)
|
||||||
m_pImages->setscanflags(false);
|
m_pImages->setscanflags(false);
|
||||||
if (m_usb.get())
|
if (m_usb.get())
|
||||||
m_usb.reset();
|
m_usb.reset();
|
||||||
|
|
||||||
|
if (huagods)
|
||||||
|
dev_callback(USB_DISCONNECTED, huagods);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -529,6 +548,7 @@ void GScanO200::usbmain()
|
||||||
// continue;
|
// continue;
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
if (sw.elapsed_ms() > 10000)
|
if (sw.elapsed_ms() > 10000)
|
||||||
{
|
{
|
||||||
m_pImages->setscanflags(false);
|
m_pImages->setscanflags(false);
|
||||||
|
@ -590,11 +610,15 @@ void GScanO200::usbmain()
|
||||||
Set_ErrorCode(usbcb.u32_Data);
|
Set_ErrorCode(usbcb.u32_Data);
|
||||||
m_pImages->setscanflags(false);
|
m_pImages->setscanflags(false);
|
||||||
devState = DEV_WRONG;
|
devState = DEV_WRONG;
|
||||||
|
if (huagods)
|
||||||
|
dev_callback(usbcb.u32_Data, huagods);
|
||||||
#else
|
#else
|
||||||
if (!haveError)
|
if (!haveError)
|
||||||
{
|
{
|
||||||
haveError = true;
|
haveError = true;
|
||||||
Set_ErrorCode(usbcb.u32_Data);
|
Set_ErrorCode(usbcb.u32_Data);
|
||||||
|
if (huagods)
|
||||||
|
dev_callback(usbcb.u32_Data, huagods);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -16,6 +16,7 @@ public:
|
||||||
virtual ~GScanO200();
|
virtual ~GScanO200();
|
||||||
// 通过 IGScan 继承
|
// 通过 IGScan 继承
|
||||||
virtual void open(int vid, int pid) override;
|
virtual void open(int vid, int pid) override;
|
||||||
|
virtual void regist_deviceevent_callback(deviceevent_callback callback, void* usrdata = 0) override;
|
||||||
virtual int aquire_bmpdata(std::vector<unsigned char>& bmpdata) override;
|
virtual int aquire_bmpdata(std::vector<unsigned char>& bmpdata) override;
|
||||||
virtual BOOL IsConnected() override;
|
virtual BOOL IsConnected() override;
|
||||||
virtual std::string GetFWVersion() override;
|
virtual std::string GetFWVersion() override;
|
||||||
|
@ -47,5 +48,7 @@ private:
|
||||||
std::shared_ptr<IUsb> m_usb;
|
std::shared_ptr<IUsb> m_usb;
|
||||||
std::unique_ptr<thread> m_threadUsb;
|
std::unique_ptr<thread> m_threadUsb;
|
||||||
GScanCap gcap;
|
GScanCap gcap;
|
||||||
|
void* huagods;
|
||||||
|
deviceevent_callback dev_callback;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,10 @@ void GScanVirtual::open(int vid, int pid)
|
||||||
fs.close();
|
fs.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GScanVirtual::regist_deviceevent_callback(deviceevent_callback callback, void* usrdata)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
int GScanVirtual::aquire_bmpdata(std::vector<unsigned char>& bmpdata)
|
int GScanVirtual::aquire_bmpdata(std::vector<unsigned char>& bmpdata)
|
||||||
{
|
{
|
||||||
StopWatch sw;
|
StopWatch sw;
|
||||||
|
|
|
@ -10,6 +10,7 @@ public:
|
||||||
virtual ~GScanVirtual();
|
virtual ~GScanVirtual();
|
||||||
// 通过 IGScan 继承
|
// 通过 IGScan 继承
|
||||||
virtual void open(int vid, int pid) override;
|
virtual void open(int vid, int pid) override;
|
||||||
|
virtual void regist_deviceevent_callback(deviceevent_callback callback, void* usrdata = 0) override;
|
||||||
virtual int aquire_bmpdata(std::vector<unsigned char>& bmpdata) override;
|
virtual int aquire_bmpdata(std::vector<unsigned char>& bmpdata) override;
|
||||||
virtual BOOL IsConnected() override;
|
virtual BOOL IsConnected() override;
|
||||||
virtual std::string GetFWVersion() override;
|
virtual std::string GetFWVersion() override;
|
||||||
|
|
Loading…
Reference in New Issue