fix bugs.

This commit is contained in:
gb 2024-01-24 17:56:06 +08:00
parent 6fadf97d3e
commit 2ecad189e8
6 changed files with 120 additions and 33 deletions

View File

@ -30,6 +30,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "usb_tools", "usb_tools\usb_
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_TWAIN_App", "..\..\doc_and_tools\tools\apps\test_TWAIN_App\test_TWAIN_App.vcxproj", "{8C3DEF78-4DF1-4C26-A11E-7031FF773E7D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "saneui", "..\..\doc_and_tools\tools\apps\saneui\saneui.vcxproj", "{9C925903-62C0-4517-B435-93F6291E2D27}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@ -92,6 +94,14 @@ Global
{8C3DEF78-4DF1-4C26-A11E-7031FF773E7D}.Release|x64.Build.0 = Release|x64
{8C3DEF78-4DF1-4C26-A11E-7031FF773E7D}.Release|x86.ActiveCfg = Release|Win32
{8C3DEF78-4DF1-4C26-A11E-7031FF773E7D}.Release|x86.Build.0 = Release|Win32
{9C925903-62C0-4517-B435-93F6291E2D27}.Debug|x64.ActiveCfg = Debug|x64
{9C925903-62C0-4517-B435-93F6291E2D27}.Debug|x64.Build.0 = Debug|x64
{9C925903-62C0-4517-B435-93F6291E2D27}.Debug|x86.ActiveCfg = Debug|Win32
{9C925903-62C0-4517-B435-93F6291E2D27}.Debug|x86.Build.0 = Debug|Win32
{9C925903-62C0-4517-B435-93F6291E2D27}.Release|x64.ActiveCfg = Release|x64
{9C925903-62C0-4517-B435-93F6291E2D27}.Release|x64.Build.0 = Release|x64
{9C925903-62C0-4517-B435-93F6291E2D27}.Release|x86.ActiveCfg = Release|Win32
{9C925903-62C0-4517-B435-93F6291E2D27}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -104,6 +114,7 @@ Global
{D3579C48-F5AB-4F15-9B49-A2970FBA76C5} = {53E5EDD9-13BA-4F3C-A387-C73CB06C686D}
{4C912767-88BE-463E-BFFC-AF994A92E425} = {53E5EDD9-13BA-4F3C-A387-C73CB06C686D}
{8C3DEF78-4DF1-4C26-A11E-7031FF773E7D} = {53E5EDD9-13BA-4F3C-A387-C73CB06C686D}
{9C925903-62C0-4517-B435-93F6291E2D27} = {53E5EDD9-13BA-4F3C-A387-C73CB06C686D}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A89068FF-95C4-3C1E-B126-70B66C9824BB}

View File

@ -639,29 +639,78 @@ const wchar_t* peer_bulk_status(int s, wchar_t unk[20])
}
const wchar_t* scanner_status(int s, wchar_t unk[20])
{
RETURN_EQUAL(s, SCANNER_STATUS_READY);
RETURN_EQUAL(s, SCANNER_STATUS_NOT_OPEN);
RETURN_EQUAL(s, SCANNER_STATUS_LOST_CONNECT);
RETURN_EQUAL(s, SCANNER_STATUS_RESET_BULK);
RETURN_EQUAL(s, SCANNER_STATUS_START_SCANNING);
RETURN_EQUAL(s, SCANNER_STATUS_SCANNING);
RETURN_EQUAL(s, SCANNER_STATUS_SCAN_FINISHED);
RETURN_EQUAL(s, SCANNER_STATUS_BUSY);
RETURN_EQUAL(s, SCANNER_STATUS_COVER_OPENNED);
RETURN_EQUAL(s, SCANNER_STATUS_COVER_CLOSED);
RETURN_EQUAL(s, SCANNER_STATUS_SLEEPING);
RETURN_EQUAL(s, SCANNER_STATUS_WAKED_UP);
RETURN_EQUAL(s, SCANNER_STATUS_COUNT_MODE);
RETURN_EQUAL(s, SCANNER_STATUS_DOUBLE_FEEDED);
RETURN_EQUAL(s, SCANNER_STATUS_PAPER_JAMMED);
RETURN_EQUAL(s, SCANNER_STATUS_PAPER_ASKEW);
RETURN_EQUAL(s, SCANNER_STATUS_FEED_FAILED);
RETURN_EQUAL(s, SCANNER_STATUS_NO_PAPER);
RETURN_EQUAL(s, SCANNER_STATUS_PAPER_ON);
RETURN_EQUAL(s, SCANNER_STATUS_STAPLE_ON);
RETURN_EQUAL(s, SCANNER_STATUS_SIZE_ERR);
RETURN_EQUAL(s, SCANNER_STATUS_DOGEAR);
RETURN_EQUAL(s, SCANNER_STATUS_CFG_CHANGED);
RETURN_EQUAL(s, SCANNER_ERR_OK);
RETURN_EQUAL(s, SCANNER_ERR_INVALID_PARAMETER);
RETURN_EQUAL(s, SCANNER_ERR_USER_CANCELED);
RETURN_EQUAL(s, SCANNER_ERR_INSUFFICIENT_MEMORY);
RETURN_EQUAL(s, SCANNER_ERR_ACCESS_DENIED);
RETURN_EQUAL(s, SCANNER_ERR_IO_PENDING);
RETURN_EQUAL(s, SCANNER_ERR_NOT_EXACT);
RETURN_EQUAL(s, SCANNER_ERR_CONFIGURATION_CHANGED);
RETURN_EQUAL(s, SCANNER_ERR_NOT_OPEN);
RETURN_EQUAL(s, SCANNER_ERR_NOT_START);
RETURN_EQUAL(s, SCANNER_ERR_NOT_ANY_MORE);
RETURN_EQUAL(s, SCANNER_ERR_NO_DATA);
RETURN_EQUAL(s, SCANNER_ERR_HAS_DATA_YET);
RETURN_EQUAL(s, SCANNER_ERR_OUT_OF_RANGE);
RETURN_EQUAL(s, SCANNER_ERR_IO);
RETURN_EQUAL(s, SCANNER_ERR_TIMEOUT);
RETURN_EQUAL(s, SCANNER_ERR_OPEN_FILE_FAILED);
RETURN_EQUAL(s, SCANNER_ERR_CREATE_FILE_FAILED);
RETURN_EQUAL(s, SCANNER_ERR_WRITE_FILE_FAILED);
RETURN_EQUAL(s, SCANNER_ERR_DATA_DAMAGED);
RETURN_EQUAL(s, SCANNER_ERR_OPENED_BY_OTHER_PROCESS);
RETURN_EQUAL(s, SCANNER_ERR_LANG_PAK_LOST);
RETURN_EQUAL(s, SCANNER_ERR_RELOAD_IMAGE_PARAM);
RETURN_EQUAL(s, SCANNER_ERR_RELOAD_OPT_PARAM);
RETURN_EQUAL(s, SCANNER_ERR_THROW_EXCEPTION);
RETURN_EQUAL(s, SCANNER_ERR_USB_INIT_FAILED);
RETURN_EQUAL(s, SCANNER_ERR_USB_REGISTER_PNP_FAILED);
RETURN_EQUAL(s, SCANNER_ERR_USB_CLAIM_INTERFACE_FAILED);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_NOT_FOUND);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_NOT_SUPPORT);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_BUSY);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_SLEEPING);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_COUNT_MODE);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_STOPPED);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_COVER_OPENNED);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_NO_PAPER);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_FEEDING_PAPER);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_DOUBLE_FEEDING);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_PAPER_JAMMED);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_STAPLE_ON);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_PAPER_SKEW);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_SIZE_CHECK);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_DOGEAR);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_NO_IMAGE);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_SCANN_ERROR);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_PC_BUSY);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_ISLOCK);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_UPGRADE_SUCCESSFUL);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_UPGRADE_FAIL);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_AUTO_FAIL_OVER);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_AUTO_FAIL_INFO);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_DISTORTION);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_MAYBE_IS_HOLE);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_DEVS_BOOTING);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_UNKNOWN_STATUS);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_NOT_READY);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_GET_STATUS_FAILED);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_FEEDER_POS);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_CIS_OUT_OF_MEM);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_CIS_STREAM);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_HD_001);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_HD_002);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_HD_003);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_HD_004);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_HD_005);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_HD_006);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_HD_007);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_HD_008);
RETURN_EQUAL(s, SCANNER_ERR_DEVICE_HD_009);
swprintf_s(unk, 18, L"0x%x", s);
@ -791,7 +840,7 @@ void CDlgScanner::set_device(ONLNSCANNER* pnp)
{
int err = 0;
OnDeviceStatus(0, (LPARAM)SCANNER_STATUS_READY);
OnDeviceStatus(0, (LPARAM)SCANNER_ERR_OK);
scanner_ = new hg_scanner(pnp);
err = scanner_->status();
if (err)
@ -801,7 +850,7 @@ void CDlgScanner::set_device(ONLNSCANNER* pnp)
msg_box(m_hWnd, MB_OK, L"Error", L"Open %04X:%04X failed with error %d.", pnp->vid, pnp->pid, err);
enable_buttons(false);
buf_.EnableWindow(FALSE);
OnDeviceStatus(0, (LPARAM)SCANNER_STATUS_NOT_OPEN);
OnDeviceStatus(0, (LPARAM)SCANNER_ERR_NOT_OPEN);
}
else
{
@ -825,7 +874,7 @@ void CDlgScanner::set_device(ONLNSCANNER* pnp)
}
enable_buttons(false);
buf_.EnableWindow(FALSE);
OnDeviceStatus(0, (LPARAM)SCANNER_STATUS_NOT_OPEN);
OnDeviceStatus(0, (LPARAM)SCANNER_ERR_NOT_OPEN);
}
else
{
@ -859,7 +908,7 @@ void CDlgScanner::set_device(ONLNSCANNER* pnp)
}
else
{
OnDeviceStatus(0, (LPARAM)SCANNER_STATUS_LOST_CONNECT);
OnDeviceStatus(0, (LPARAM)SCANNER_ERR_DEVICE_NOT_FOUND);
::SetDlgItemTextW(m_hWnd, IDC_BUTTON_SCAN, L"Scan");
}
GetDlgItem(IDC_CHECK_AUTO)->EnableWindow(scanner_ != NULL);
@ -1183,6 +1232,7 @@ BEGIN_MESSAGE_MAP(CDlgScanner, CDialogEx)
ON_MESSAGE(WM_TX_PROGRESS, &CDlgScanner::OnTransProgress)
ON_CBN_SELCHANGE(IDC_COMBO_BUF_SIZE, &CDlgScanner::OnCbnSelchangeComboBufSize)
ON_WM_DESTROY()
ON_MESSAGE(WM_SCAN_FINISHED, &CDlgScanner::OnScanFinished)
END_MESSAGE_MAP()
@ -1360,14 +1410,20 @@ void CDlgScanner::OnBnClickedButtonScan()
SetDlgItemInt(IDC_EDIT_COUNT, img_cnt_);
if (scanner_)
{
int err = scanner_->start();
auto over = [this](int err) -> void
{
::PostMessage(m_hWnd, WM_SCAN_FINISHED, 0, err);
};
std::string cfg("");
int err = scanner_->start(&cfg, over);
utils::to_log(LOG_LEVEL_DEBUG, "Start to scan = %s\r\n", usb::u2a(scanner_status(err, title)).c_str());
if (err)
msg_box(m_hWnd, MB_OK, L"Error", L"Failed in startin scanning with code %s", scanner_status(err, title));
msg_box(m_hWnd, MB_OK, L"Error", L"Failed in starting scanning with code: %s", scanner_status(err, title));
else
{
utils::to_log(LOG_LEVEL_DEBUG, "Device configuration: %s\n", cfg.c_str());
::SetDlgItemTextW(m_hWnd, IDC_BUTTON_SCAN, L"Stop");
OnDeviceStatus(0, (LPARAM)SCANNER_STATUS_SCANNING);
OnDeviceStatus(0, (LPARAM)SCANNER_ERR_DEVICE_BUSY);
}
}
}
@ -1378,12 +1434,17 @@ void CDlgScanner::OnBnClickedButtonScan()
int err = scanner_->stop();
if (err)
msg_box(m_hWnd, MB_OK, L"Error", L"Failed to stop scanning with code %d", err);
else
{
::SetDlgItemTextW(m_hWnd, IDC_BUTTON_SCAN, L"Scan");
OnDeviceStatus(0, (LPARAM)SCANNER_ERR_OK);
}
}
}
}
void CDlgScanner::OnBnClickedButtonBrowseFile()
{
// TODO: 在此添加控件通知处理程序代码
// TODO: 在此添加控件通知处理程序代码ls
}
void CDlgScanner::OnBnClickedButtonSendFile()
{
@ -1587,6 +1648,13 @@ LRESULT CDlgScanner::OnTransProgress(WPARAM wp, LPARAM lp)
return 0;
}
LRESULT CDlgScanner::OnScanFinished(WPARAM wp, LPARAM lp)
{
::SetDlgItemTextW(m_hWnd, IDC_BUTTON_SCAN, L"Scan");
OnDeviceStatus(0, lp);
return 0;
}
void CDlgScanner::OnCbnSelchangeComboBufSize()

View File

@ -130,6 +130,7 @@ public:
afx_msg LRESULT OnDeviceStatus(WPARAM wp, LPARAM lp);
afx_msg LRESULT OnTransDiretion(WPARAM wp, LPARAM lp);
afx_msg LRESULT OnTransProgress(WPARAM wp, LPARAM lp);
afx_msg LRESULT OnScanFinished(WPARAM wp, LPARAM lp);
afx_msg void OnCbnSelchangeComboBufSize();
CComboBox buf_;
afx_msg void OnDestroy();

View File

@ -929,6 +929,13 @@ HWND dlg_page::create_control_int(int sn, const SANE_Option_Descriptor* desc, vo
slider = create_slider(sn, x, pos_.y, lower, upper, desc->constraint.range->quant, now, &size, false);
x += size.cx + dlg_page::gap_x;
}
else
{
if (lower > now)
lower = now;
else if (upper < now)
upper = now;
}
wnd = create_edit(sn, x, pos_.y - 2, text_size->cy, w);
x += w;
SetWindowTextW(wnd, text);

View File

@ -23,7 +23,7 @@
#define WM_SCAN_WORKING WM_USER + 301 // WPARAM: unused; LPARAM: unsed
#define WM_USB_PACKET_RECEIVED WM_USER + 302
#define WM_IMAGE_RECEIVED WM_USER + 303
#define WM_SCAN_FINISHED WM_USER + 304 // WPARAM: std::string* msg; LPARAM: boo err
#define WM_SCAN_FINISHED WM_USER + 304 // WPARAM: unused; LPARAM: err code
#define WM_REFRESH_OPTION WM_USER + 311 // WPARAM: source option SN, LPARAM: unused now
#define WM_GET_CONFIG_OBJ WM_USER + 312 // WPARAM: bool*, [in]create new if NULL; [out]created, LPARAM: to receive the gb::sane_config_schm* object

View File

@ -335,7 +335,7 @@ CusbtoolsDlg::CusbtoolsDlg(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_USB_TOOLS_DIALOG, pParent)
{
log_file_ = utils::init_log(LOG_TYPE_FILE);
utils::to_log(LOG_LEVEL_DEBUG, "System info: page = %u, mapping-size = %u, disk-cluster-size = %u\r\n", sys_info::page_size, sys_info::page_map_size, sys_info::cluster_size);
utils::to_log(LOG_LEVEL_DEBUG, "System info: page = %u, mapping-size = %u, disk-cluster-size = %u\r\n", global_info::page_size, global_info::page_map_size, global_info::cluster_size);
{
//FILE* dst = fopen("D:\\boxroom\\usb-tx-file\\tx\\test.txt", "wb");