From bb2988848f7626b44d803a51e706e5c304e1700f Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Wed, 21 Feb 2024 11:10:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=AB=E6=8F=8F=E8=AE=A1?= =?UTF-8?q?=E6=95=B0BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hardware/hardware.cpp | 13 ++++++------- hardware/hardware.h | 2 +- scanner/async_scanner.cpp | 2 +- sdk/base/ui.cpp | 12 ++++++++++-- sdk/uart/PinMonitor.cpp | 3 +-- xmake.lua | 2 +- 6 files changed, 20 insertions(+), 14 deletions(-) diff --git a/hardware/hardware.cpp b/hardware/hardware.cpp index 371af34..26a0f39 100644 --- a/hardware/hardware.cpp +++ b/hardware/hardware.cpp @@ -406,14 +406,14 @@ void scanner_hw::thread_image_capture(bool paper_ready) mbev.first = -1; mbev.second = 0; - turn_cnt++; if(mb_events_.take(mbev, true, 10) && mbev.first == MOTOR_BORD_EVENT_ERROR) { - printf("%02d: error: 0x%08x\n", turn_cnt, mbev.second); - devui::send_message(devui::UI_STATUS_PAPER_CNT, (uint8_t*)&pass, sizeof(pass)); + if(err == SCANNER_ERR_DEVICE_DOUBLE_FEEDING) + devui::send_message(devui::UI_STATUS_PAPER_CNT, (uint8_t*)&pass, sizeof(pass)); err = trans_motorboard_err_2_hg_error(mbev.second, true); if(err != SCANNER_ERR_DEVICE_DOUBLE_FEEDING) break; + turn_cnt++; } else if(mbev.first == MOTOR_BORD_EVENT_SCAN_DONE) { @@ -422,9 +422,9 @@ void scanner_hw::thread_image_capture(bool paper_ready) } else { - printf("%02d: normal\n", turn_cnt); devui::send_message(devui::UI_STATUS_PAPER_CNT, (uint8_t*)&pass, sizeof(pass)); err = SCANNER_ERR_OK; + turn_cnt++; } img.pos.paper_ind++; @@ -804,7 +804,6 @@ int scanner_hw::open(std::function image_handler, std::stri auto cb = [this](int ev, unsigned int data) -> void { mb_events_.save(std::make_pair(ev, data), true); - printf("push event(%d - 0x%08x)\n", ev, data); }; mb_events_.clear(); motor_.reset(new MotorBoard(cb)); @@ -924,7 +923,7 @@ int scanner_hw::start_scan(void) return SCANNER_ERR_OK; } -int scanner_hw::stop_scan(void) +int scanner_hw::stop_scan(bool from_ui) { bool working = scanning_; @@ -940,7 +939,7 @@ int scanner_hw::stop_scan(void) // camera_->stop(); // mb_events_.clear(); - if(!working) + if(!working && from_ui) { devui::SCANSTREAM stream; stream.err = 0; diff --git a/hardware/hardware.h b/hardware/hardware.h index 816ebaf..226d177 100644 --- a/hardware/hardware.h +++ b/hardware/hardware.h @@ -121,7 +121,7 @@ public: public: int open(std::function image_handler, std::string* cfgjson = nullptr, bool count_mode = false); int start_scan(void); - int stop_scan(void); + int stop_scan(bool from_ui = false); int close(bool from_worker = false); int trans_motorboard_err_2_hg_error(int mberr, bool to_ui = false); int hg_err_2_image_status(int hgerr); diff --git a/scanner/async_scanner.cpp b/scanner/async_scanner.cpp index 71f50a5..ff6dc42 100644 --- a/scanner/async_scanner.cpp +++ b/scanner/async_scanner.cpp @@ -298,7 +298,7 @@ void async_scanner::init(void) } else if(devui::UI_CMD_STOP_SCAN == pack->msg) { - cis_->stop_scan(); + cis_->stop_scan(true); bool auto_scan = false; cis_->set_value(SANE_OPT_NAME(WAIT_TO_SCAN), &auto_scan); diff --git a/sdk/base/ui.cpp b/sdk/base/ui.cpp index 292a2c3..2cb30d5 100644 --- a/sdk/base/ui.cpp +++ b/sdk/base/ui.cpp @@ -235,6 +235,7 @@ namespace devui std::string rcv(""); char buf[300] = {0}; LPMSGSTREAM pack = nullptr; + bool offline = false; printf("ui-receiver running ...\n"); while(run_) @@ -247,13 +248,20 @@ namespace devui this->close(); break; } - else if(r == 0) + else if(r == 0 /*&& errno == ENOENT*/) // errno maybe ZERO, here ommit the error code { // peer closed, wait 10ms ... + if(!offline) + { + printf("PIPE: peer closed(read ZERO byte and error = %d).\n", errno); + utils::to_log(LOG_LEVEL_DEBUG, "PIPE: peer closed(read ZERO byte and error = %d).\n", errno); + } + offline = true; std::this_thread::sleep_for(std::chrono::milliseconds(10)); continue; } - + + offline = false; rcv += std::string(buf, r); if(rcv.length()) { diff --git a/sdk/uart/PinMonitor.cpp b/sdk/uart/PinMonitor.cpp index d9d76c1..881241b 100644 --- a/sdk/uart/PinMonitor.cpp +++ b/sdk/uart/PinMonitor.cpp @@ -75,7 +75,6 @@ void PinMonitor::monitor() call_back(pin.getPort()); // utils::to_log(LOG_LEVEL_DEBUG, utils::format_string("= %.2f \n",sw.elapse_ms()).c_str()); } - sw.reset(); while(sw.elapse_ms() < 10) @@ -86,7 +85,7 @@ void PinMonitor::monitor() num = read(pfd.fd, buf, 8); buf[num - 1] = '\0'; ret = atoi(buf); - //printf("pMonitor nread = %d ret val = %d \n",num,ret); + // printf("## pMonitor nread = %d ret val = %d \n",num,ret); } } } diff --git a/xmake.lua b/xmake.lua index b0b2a8d..3b1e67c 100644 --- a/xmake.lua +++ b/xmake.lua @@ -61,7 +61,7 @@ add_defines("BUILD_AS_DEVICE") add_defines("VER_MAIN=2") add_defines("VER_FAMILY=200") add_defines("VER_DATE=20240221") -add_defines("VER_BUILD=4") +add_defines("VER_BUILD=9") target("conf") set_kind("phony")