修复扫描计数BUG

This commit is contained in:
gb 2024-02-21 11:10:14 +08:00
parent 6d96c88225
commit bb2988848f
6 changed files with 20 additions and 14 deletions

View File

@ -406,14 +406,14 @@ void scanner_hw::thread_image_capture(bool paper_ready)
mbev.first = -1; mbev.first = -1;
mbev.second = 0; mbev.second = 0;
turn_cnt++;
if(mb_events_.take(mbev, true, 10) && mbev.first == MOTOR_BORD_EVENT_ERROR) if(mb_events_.take(mbev, true, 10) && mbev.first == MOTOR_BORD_EVENT_ERROR)
{ {
printf("%02d: error: 0x%08x\n", turn_cnt, mbev.second); if(err == SCANNER_ERR_DEVICE_DOUBLE_FEEDING)
devui::send_message(devui::UI_STATUS_PAPER_CNT, (uint8_t*)&pass, sizeof(pass)); devui::send_message(devui::UI_STATUS_PAPER_CNT, (uint8_t*)&pass, sizeof(pass));
err = trans_motorboard_err_2_hg_error(mbev.second, true); err = trans_motorboard_err_2_hg_error(mbev.second, true);
if(err != SCANNER_ERR_DEVICE_DOUBLE_FEEDING) if(err != SCANNER_ERR_DEVICE_DOUBLE_FEEDING)
break; break;
turn_cnt++;
} }
else if(mbev.first == MOTOR_BORD_EVENT_SCAN_DONE) else if(mbev.first == MOTOR_BORD_EVENT_SCAN_DONE)
{ {
@ -422,9 +422,9 @@ void scanner_hw::thread_image_capture(bool paper_ready)
} }
else else
{ {
printf("%02d: normal\n", turn_cnt);
devui::send_message(devui::UI_STATUS_PAPER_CNT, (uint8_t*)&pass, sizeof(pass)); devui::send_message(devui::UI_STATUS_PAPER_CNT, (uint8_t*)&pass, sizeof(pass));
err = SCANNER_ERR_OK; err = SCANNER_ERR_OK;
turn_cnt++;
} }
img.pos.paper_ind++; img.pos.paper_ind++;
@ -804,7 +804,6 @@ int scanner_hw::open(std::function<IMAGE_HANDLER_PROTO> image_handler, std::stri
auto cb = [this](int ev, unsigned int data) -> void auto cb = [this](int ev, unsigned int data) -> void
{ {
mb_events_.save(std::make_pair(ev, data), true); mb_events_.save(std::make_pair(ev, data), true);
printf("push event(%d - 0x%08x)\n", ev, data);
}; };
mb_events_.clear(); mb_events_.clear();
motor_.reset(new MotorBoard(cb)); motor_.reset(new MotorBoard(cb));
@ -924,7 +923,7 @@ int scanner_hw::start_scan(void)
return SCANNER_ERR_OK; return SCANNER_ERR_OK;
} }
int scanner_hw::stop_scan(void) int scanner_hw::stop_scan(bool from_ui)
{ {
bool working = scanning_; bool working = scanning_;
@ -940,7 +939,7 @@ int scanner_hw::stop_scan(void)
// camera_->stop(); // camera_->stop();
// mb_events_.clear(); // mb_events_.clear();
if(!working) if(!working && from_ui)
{ {
devui::SCANSTREAM stream; devui::SCANSTREAM stream;
stream.err = 0; stream.err = 0;

View File

@ -121,7 +121,7 @@ public:
public: public:
int open(std::function<IMAGE_HANDLER_PROTO> image_handler, std::string* cfgjson = nullptr, bool count_mode = false); int open(std::function<IMAGE_HANDLER_PROTO> image_handler, std::string* cfgjson = nullptr, bool count_mode = false);
int start_scan(void); int start_scan(void);
int stop_scan(void); int stop_scan(bool from_ui = false);
int close(bool from_worker = false); int close(bool from_worker = false);
int trans_motorboard_err_2_hg_error(int mberr, bool to_ui = false); int trans_motorboard_err_2_hg_error(int mberr, bool to_ui = false);
int hg_err_2_image_status(int hgerr); int hg_err_2_image_status(int hgerr);

View File

@ -298,7 +298,7 @@ void async_scanner::init(void)
} }
else if(devui::UI_CMD_STOP_SCAN == pack->msg) else if(devui::UI_CMD_STOP_SCAN == pack->msg)
{ {
cis_->stop_scan(); cis_->stop_scan(true);
bool auto_scan = false; bool auto_scan = false;
cis_->set_value(SANE_OPT_NAME(WAIT_TO_SCAN), &auto_scan); cis_->set_value(SANE_OPT_NAME(WAIT_TO_SCAN), &auto_scan);

View File

@ -235,6 +235,7 @@ namespace devui
std::string rcv(""); std::string rcv("");
char buf[300] = {0}; char buf[300] = {0};
LPMSGSTREAM pack = nullptr; LPMSGSTREAM pack = nullptr;
bool offline = false;
printf("ui-receiver running ...\n"); printf("ui-receiver running ...\n");
while(run_) while(run_)
@ -247,13 +248,20 @@ namespace devui
this->close(); this->close();
break; break;
} }
else if(r == 0) else if(r == 0 /*&& errno == ENOENT*/) // errno maybe ZERO, here ommit the error code
{ {
// peer closed, wait 10ms ... // 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)); std::this_thread::sleep_for(std::chrono::milliseconds(10));
continue; continue;
} }
offline = false;
rcv += std::string(buf, r); rcv += std::string(buf, r);
if(rcv.length()) if(rcv.length())
{ {

View File

@ -76,7 +76,6 @@ void PinMonitor::monitor()
// utils::to_log(LOG_LEVEL_DEBUG, utils::format_string("= %.2f \n",sw.elapse_ms()).c_str()); // utils::to_log(LOG_LEVEL_DEBUG, utils::format_string("= %.2f \n",sw.elapse_ms()).c_str());
} }
sw.reset(); sw.reset();
while(sw.elapse_ms() < 10) while(sw.elapse_ms() < 10)
{ {
@ -86,7 +85,7 @@ void PinMonitor::monitor()
num = read(pfd.fd, buf, 8); num = read(pfd.fd, buf, 8);
buf[num - 1] = '\0'; buf[num - 1] = '\0';
ret = atoi(buf); ret = atoi(buf);
//printf("pMonitor nread = %d ret val = %d \n",num,ret); // printf("## pMonitor nread = %d ret val = %d \n",num,ret);
} }
} }
} }

View File

@ -61,7 +61,7 @@ add_defines("BUILD_AS_DEVICE")
add_defines("VER_MAIN=2") add_defines("VER_MAIN=2")
add_defines("VER_FAMILY=200") add_defines("VER_FAMILY=200")
add_defines("VER_DATE=20240221") add_defines("VER_DATE=20240221")
add_defines("VER_BUILD=4") add_defines("VER_BUILD=9")
target("conf") target("conf")
set_kind("phony") set_kind("phony")