mirror of http://192.168.1.51:8099/lmh188/twain3.0
parent
2ac13fdcc5
commit
cdae53d794
|
@ -307,9 +307,14 @@ BOOL GScanO200::Get_Scanner_PaperOn()
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
USBCB usbcb = { GET_PAPER_STATUS ,0,0 };
|
USBCB usbcb = { GET_PAPER_STATUS ,0,0 };
|
||||||
|
usbcb.u32_Data = 1;//修改初始值防止通信异常时默认初始值为0报无纸
|
||||||
std::lock_guard<std::mutex> lck(m_imgLocker);
|
std::lock_guard<std::mutex> lck(m_imgLocker);
|
||||||
m_usb->write_bulk(&usbcb, sizeof(usbcb));
|
m_usb->write_bulk(&usbcb, sizeof(usbcb));
|
||||||
m_usb->read_bulk(&usbcb, sizeof(usbcb));
|
if (0 == m_usb->read_bulk(&usbcb, sizeof(usbcb)))
|
||||||
|
{
|
||||||
|
Set_ErrorCode(USB_DISCONNECTED);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return usbcb.u32_Data != 0;
|
return usbcb.u32_Data != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,24 +374,23 @@ void GScanO200::Scanner_StartScan(UINT16 count)
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifndef G200
|
//#ifndef G200
|
||||||
|
//
|
||||||
|
// USBCB paperstatus = { GET_PAPER_STATUS ,0,0 };
|
||||||
|
// paperstatus.u32_Data = 1;
|
||||||
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));
|
// if (m_usb.get() && m_usb->is_connected())
|
||||||
if (m_usb.get() && m_usb->is_connected())
|
// m_usb->read_bulk(&paperstatus, sizeof(paperstatus));
|
||||||
m_usb->read_bulk(&paperstatus, sizeof(paperstatus));
|
// if (paperstatus.u32_Data == 0) {
|
||||||
if (paperstatus.u32_Data == 0) {
|
// m_pImages->setscanflags(false);
|
||||||
m_pImages->setscanflags(false);
|
// devState = DEV_WRONG;
|
||||||
devState = DEV_WRONG;
|
// Set_ErrorCode(NO_FEED);
|
||||||
Set_ErrorCode(NO_FEED);
|
// if (huagods)
|
||||||
if (huagods)
|
// dev_callback(NO_FEED, huagods);
|
||||||
dev_callback(NO_FEED, huagods);
|
// return;
|
||||||
return;
|
// }
|
||||||
}
|
//#endif // !G200
|
||||||
#endif // !G200
|
|
||||||
m_pImages->reset_DogEar();
|
m_pImages->reset_DogEar();
|
||||||
if (gcap.is_duplex)
|
if (gcap.is_duplex)
|
||||||
count = count == 65535 ? 65535 : count / 2;
|
count = count == 65535 ? 65535 : count / 2;
|
||||||
|
|
|
@ -302,9 +302,14 @@ BOOL GScanO400::Get_Scanner_PaperOn()
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
USBCB usbcb = { GET_PAPER_STATUS ,0,0 };
|
USBCB usbcb = { GET_PAPER_STATUS ,0,0 };
|
||||||
|
usbcb.u32_Data = 1;
|
||||||
std::lock_guard<std::mutex> lck(m_imgLocker);
|
std::lock_guard<std::mutex> lck(m_imgLocker);
|
||||||
m_usb->write_bulk(&usbcb, sizeof(usbcb));
|
m_usb->write_bulk(&usbcb, sizeof(usbcb));
|
||||||
m_usb->read_bulk(&usbcb, sizeof(usbcb));
|
if (0 == m_usb->read_bulk(&usbcb, sizeof(usbcb)))
|
||||||
|
{
|
||||||
|
Set_ErrorCode(USB_DISCONNECTED);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return usbcb.u32_Data != 0;
|
return usbcb.u32_Data != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -364,18 +369,21 @@ void GScanO400::Scanner_StartScan(UINT16 count)
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
int readlenght = 0;
|
||||||
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));
|
||||||
if (m_usb.get() && m_usb->is_connected())
|
if (m_usb.get() && m_usb->is_connected())
|
||||||
m_usb->read_bulk(&paperstatus, sizeof(paperstatus));
|
readlenght= m_usb->read_bulk(&paperstatus, sizeof(paperstatus));
|
||||||
if (paperstatus.u32_Data == 0) {
|
if (paperstatus.u32_Data == 0) {
|
||||||
m_pImages->setscanflags(false);
|
m_pImages->setscanflags(false);
|
||||||
devState = DEV_WRONG;
|
devState = DEV_WRONG;
|
||||||
Set_ErrorCode(NO_FEED);
|
int errorcode = 0;
|
||||||
|
readlenght == 0 ? errorcode = USB_DISCONNECTED : errorcode = NO_FEED;
|
||||||
|
|
||||||
|
Set_ErrorCode(errorcode);
|
||||||
if (huagods)
|
if (huagods)
|
||||||
dev_callback(NO_FEED, huagods);
|
dev_callback(errorcode, huagods);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_pImages->reset_DogEar();
|
m_pImages->reset_DogEar();
|
||||||
|
|
|
@ -728,7 +728,7 @@ json GscanJsonConfig::GscancapToJson(GScanCap& cap)
|
||||||
js[CONFIG][SCREWLEVEL] = cap.hardwarecaps.skrewdetectlevel;
|
js[CONFIG][SCREWLEVEL] = cap.hardwarecaps.skrewdetectlevel;
|
||||||
js[CONFIG][NOISE] = cap.noise;
|
js[CONFIG][NOISE] = cap.noise;
|
||||||
js[CONFIG][INDENT] = cap.indent;
|
js[CONFIG][INDENT] = cap.indent;
|
||||||
js[CONFIG][AUTOCROP_THRESHOLD] = cap.indent;
|
js[CONFIG][AUTOCROP_THRESHOLD] = cap.AutoCrop_threshold;
|
||||||
js[CONFIG][ISCONVEX] = cap.is_convex;
|
js[CONFIG][ISCONVEX] = cap.is_convex;
|
||||||
js[CONFIG][ITEMCAPTION] = cap.Caption;
|
js[CONFIG][ITEMCAPTION] = cap.Caption;
|
||||||
js[CONFIG][SAVEPATH] = cap.SavePath;
|
js[CONFIG][SAVEPATH] = cap.SavePath;
|
||||||
|
@ -737,6 +737,7 @@ json GscanJsonConfig::GscancapToJson(GScanCap& cap)
|
||||||
|
|
||||||
GScanCap GscanJsonConfig::JsonToGscancap(json& js)
|
GScanCap GscanJsonConfig::JsonToGscancap(json& js)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!js.is_object())
|
if (!js.is_object())
|
||||||
js = GetDefaultJson();
|
js = GetDefaultJson();
|
||||||
GScanCap cap{ 0 };
|
GScanCap cap{ 0 };
|
||||||
|
@ -844,8 +845,12 @@ json GscanJsonConfig::Readjson(std::string path)
|
||||||
f.open(path, std::ios::in);
|
f.open(path, std::ios::in);
|
||||||
json js;
|
json js;
|
||||||
try {
|
try {
|
||||||
f.is_open() ? (js = json::parse(std::string((std::ostringstream()<<f.rdbuf()).str())),f.close()) : js="";
|
if(f.is_open()){
|
||||||
return js.is_object() ? throw std::exception("js pares error") : "";
|
std::string text = (std::ostringstream() << f.rdbuf()).str();
|
||||||
|
js = json::parse(text);
|
||||||
|
f.close();
|
||||||
|
}
|
||||||
|
return js.is_object() ? js: throw std::exception("js pares error");
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
|
|
|
@ -673,7 +673,6 @@ void HuagaoDs::dogear_callback(int indexpaper)
|
||||||
Result HuagaoDs::identityOpenDs(const Identity&) {
|
Result HuagaoDs::identityOpenDs(const Identity&) {
|
||||||
//writelog("identityOpenDs");
|
//writelog("identityOpenDs");
|
||||||
auto usblist= UsbScan_List::find_all_usb();
|
auto usblist= UsbScan_List::find_all_usb();
|
||||||
int pid,vid;
|
|
||||||
if (!usblist.empty())
|
if (!usblist.empty())
|
||||||
{
|
{
|
||||||
for each (auto &usb in usblist)
|
for each (auto &usb in usblist)
|
||||||
|
@ -697,16 +696,16 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef G100
|
#ifdef G100
|
||||||
if(usb.pid == 0x3072 && usb.vid == 0x100)
|
if(usb.vid == 0x3072 && usb.pid == 0x100)
|
||||||
#endif //
|
#endif //
|
||||||
#ifdef G200
|
#ifdef G200
|
||||||
if (usb.pid == 0x3072 && usb.vid == 0x200)
|
if (usb.vid == 0x3072 && usb.pid == 0x200)
|
||||||
#endif // G200
|
#endif // G200
|
||||||
#ifdef G300
|
#ifdef G300
|
||||||
if (usb.pid == 0x3072 && usb.vid == 0x300)
|
if (usb.vid == 0x3072 && usb.pid == 0x300)
|
||||||
#endif // G300
|
#endif // G300
|
||||||
#ifdef G400
|
#ifdef G400
|
||||||
if (usb.pid == 0x3072 && usb.vid == 0x400)
|
if (usb.vid == 0x3072 && usb.pid == 0x400)
|
||||||
#endif // G400
|
#endif // G400
|
||||||
{
|
{
|
||||||
pid = usb.pid; vid = usb.vid;
|
pid = usb.pid; vid = usb.vid;
|
||||||
|
@ -718,7 +717,11 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (vid ==0|| pid == 0)
|
||||||
|
{
|
||||||
|
MessageBox(NULL, L"未找到扫描仪,请连接扫描仪!",L"警告",MB_OK);
|
||||||
|
return seqError();
|
||||||
|
}
|
||||||
m_haveError = false;
|
m_haveError = false;
|
||||||
updataGscanCap();
|
updataGscanCap();
|
||||||
bmpData->resize(sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER));
|
bmpData->resize(sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER));
|
||||||
|
@ -1789,23 +1792,6 @@ Result HuagaoDs::userInterfaceEnable(const Identity&, UserInterface& ui) {
|
||||||
m_memXferYOff = 0;
|
m_memXferYOff = 0;
|
||||||
scanner->ResetMsgFiter();
|
scanner->ResetMsgFiter();
|
||||||
|
|
||||||
//if (m_capXferMech == Twpp::XferMech::Native)
|
|
||||||
//{
|
|
||||||
// MessageBox(NULL, TEXT("Native"), _T("bb"), MB_OK);
|
|
||||||
//}
|
|
||||||
//else if (m_capXferMech == Twpp::XferMech::File)
|
|
||||||
//{
|
|
||||||
// MessageBox(NULL, TEXT("File"), _T("bb"), MB_OK);
|
|
||||||
|
|
||||||
//}
|
|
||||||
//else if (m_capXferMech == Twpp::XferMech::Memory)
|
|
||||||
//{
|
|
||||||
// MessageBox(NULL, TEXT("Memory"), _T("bb"), MB_OK);
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// MessageBox(NULL, TEXT("MemoryFile"), _T("bb"), MB_OK);
|
|
||||||
//}
|
|
||||||
|
|
||||||
if (!ui.showUi()) {
|
if (!ui.showUi()) {
|
||||||
// this is an exception when we want to set state explicitly, notifyXferReady can be called only in enabled state
|
// this is an exception when we want to set state explicitly, notifyXferReady can be called only in enabled state
|
||||||
|
@ -2147,6 +2133,12 @@ Twpp::Result HuagaoDs::showTwainUI(Twpp::UserInterface& ui, bool bUiOnly)
|
||||||
m_pendingXfers = 1;
|
m_pendingXfers = 1;
|
||||||
m_scanparam.reset(new GScanCap(caps));
|
m_scanparam.reset(new GScanCap(caps));
|
||||||
saveGscanCapSetting();
|
saveGscanCapSetting();
|
||||||
|
if (scanner->get_ErrorCode() == USB_DISCONNECTED)
|
||||||
|
{
|
||||||
|
MessageBox(NULL, L"USB连接异常,请连接USB后重新打开扫描软件", L"提示", MB_OK | MB_SYSTEMMODAL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (startScan() == success()) {
|
if (startScan() == success()) {
|
||||||
notifyXferReady();
|
notifyXferReady();
|
||||||
}
|
}
|
||||||
|
@ -2251,7 +2243,7 @@ Twpp::Result HuagaoDs::startScan()
|
||||||
#ifdef LANXUM
|
#ifdef LANXUM
|
||||||
scanner->open(0x31c9, 0x8200);
|
scanner->open(0x31c9, 0x8200);
|
||||||
#else
|
#else
|
||||||
scanner->open(0x064B, 0x7823);
|
scanner->open(vid, pid);
|
||||||
#endif
|
#endif
|
||||||
if (!scanner->IsConnected())
|
if (!scanner->IsConnected())
|
||||||
return checkDeviceOnline();
|
return checkDeviceOnline();
|
||||||
|
|
|
@ -125,6 +125,7 @@ private://field
|
||||||
std::unique_ptr<std::thread> memoryinfo;
|
std::unique_ptr<std::thread> memoryinfo;
|
||||||
bool m_memoryfalg = true;
|
bool m_memoryfalg = true;
|
||||||
HANDLE hMutex;
|
HANDLE hMutex;
|
||||||
|
int pid = 0, vid = 0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
BIN
huagao/stdafx.h
BIN
huagao/stdafx.h
Binary file not shown.
|
@ -625,7 +625,6 @@ namespace Twpp {
|
||||||
if (!inState(DsState::Enabled, DsState::Xferring)) {
|
if (!inState(DsState::Enabled, DsState::Xferring)) {
|
||||||
return seqError();
|
return seqError();
|
||||||
}
|
}
|
||||||
|
|
||||||
return eventProcess(origin, data);
|
return eventProcess(origin, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2151,6 +2150,7 @@ namespace Twpp {
|
||||||
/// TWAIN entry, do not call from data source.
|
/// TWAIN entry, do not call from data source.
|
||||||
static ReturnCode entry(Identity* origin, DataGroup dg, Dat dat, Msg msg, void* data) noexcept {
|
static ReturnCode entry(Identity* origin, DataGroup dg, Dat dat, Msg msg, void* data) noexcept {
|
||||||
auto src = find(origin);
|
auto src = find(origin);
|
||||||
|
//FileTools::write_log("D:\\1.txt", "call:datagroup-" + to_string((int)dg) + "dat-" + to_string(int(dat)) + "msg-" + to_string(int(msg)));
|
||||||
try {
|
try {
|
||||||
auto rc = src == g_sources.end() ?
|
auto rc = src == g_sources.end() ?
|
||||||
staticControl(origin, dg, dat, msg, data) :
|
staticControl(origin, dg, dat, msg, data) :
|
||||||
|
|
Loading…
Reference in New Issue