修复管道通信粘包BUG;电机板事件统一通过hardware层通知UI
This commit is contained in:
parent
3e2ca25e7c
commit
6d96c88225
|
@ -399,26 +399,35 @@ void scanner_hw::thread_image_capture(bool paper_ready)
|
||||||
motor_->pick_paper();
|
motor_->pick_paper();
|
||||||
|
|
||||||
// scanning ONE turn ...
|
// scanning ONE turn ...
|
||||||
|
int turn_cnt = 0;
|
||||||
while(scanning_ && motor_->wait_paper_out(to_paper_out_))
|
while(scanning_ && motor_->wait_paper_out(to_paper_out_))
|
||||||
{
|
{
|
||||||
uint32_t pass = watch.elapse_ms();
|
uint32_t pass = watch.elapse_ms();
|
||||||
if(mb_events_.take(mbev) && mbev.first == MOTOR_BORD_EVENT_ERROR)
|
|
||||||
|
mbev.first = -1;
|
||||||
|
mbev.second = 0;
|
||||||
|
turn_cnt++;
|
||||||
|
if(mb_events_.take(mbev, true, 10) && mbev.first == MOTOR_BORD_EVENT_ERROR)
|
||||||
{
|
{
|
||||||
err = trans_motorboard_err_2_hg_error(mbev.second);
|
printf("%02d: error: 0x%08x\n", turn_cnt, mbev.second);
|
||||||
|
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)
|
if(err != SCANNER_ERR_DEVICE_DOUBLE_FEEDING)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if(mbev.first == MOTOR_BORD_EVENT_SCAN_DONE)
|
else if(mbev.first == MOTOR_BORD_EVENT_SCAN_DONE)
|
||||||
{
|
{
|
||||||
|
printf("-->scan done event received from motorboard.\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
printf("%02d: normal\n", turn_cnt);
|
||||||
|
devui::send_message(devui::UI_STATUS_PAPER_CNT, (uint8_t*)&pass, sizeof(pass));
|
||||||
err = SCANNER_ERR_OK;
|
err = SCANNER_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
img.pos.paper_ind++;
|
img.pos.paper_ind++;
|
||||||
devui::send_message(devui::UI_STATUS_PAPER_CNT, (uint8_t*)&pass, sizeof(pass));
|
|
||||||
|
|
||||||
if(!count_mode_)
|
if(!count_mode_)
|
||||||
{
|
{
|
||||||
|
@ -459,6 +468,7 @@ void scanner_hw::thread_image_capture(bool paper_ready)
|
||||||
watch.reset();
|
watch.reset();
|
||||||
motor_->pick_paper();
|
motor_->pick_paper();
|
||||||
}
|
}
|
||||||
|
printf("Scan turn finished with event(%d - 0x%08x).\n", mbev.first, mbev.second);
|
||||||
|
|
||||||
// retrieve v4l2-mem ...
|
// retrieve v4l2-mem ...
|
||||||
int ind = -1;
|
int ind = -1;
|
||||||
|
@ -488,6 +498,7 @@ void scanner_hw::thread_image_capture(bool paper_ready)
|
||||||
if(mbev.first == MOTOR_BORD_EVENT_PAPER_READY)
|
if(mbev.first == MOTOR_BORD_EVENT_PAPER_READY)
|
||||||
{
|
{
|
||||||
printf("paper ready: %d-%x\n", mbev.first, mbev.second);
|
printf("paper ready: %d-%x\n", mbev.first, mbev.second);
|
||||||
|
paper_ready = true;
|
||||||
motor_->start();
|
motor_->start();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -793,6 +804,7 @@ 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));
|
||||||
|
@ -914,6 +926,8 @@ int scanner_hw::start_scan(void)
|
||||||
}
|
}
|
||||||
int scanner_hw::stop_scan(void)
|
int scanner_hw::stop_scan(void)
|
||||||
{
|
{
|
||||||
|
bool working = scanning_;
|
||||||
|
|
||||||
scanning_ = auto_scan_ = false;
|
scanning_ = auto_scan_ = false;
|
||||||
mb_events_.trigger();
|
mb_events_.trigger();
|
||||||
if(motor_.get())
|
if(motor_.get())
|
||||||
|
@ -926,6 +940,16 @@ int scanner_hw::stop_scan(void)
|
||||||
// camera_->stop();
|
// camera_->stop();
|
||||||
// mb_events_.clear();
|
// mb_events_.clear();
|
||||||
|
|
||||||
|
if(!working)
|
||||||
|
{
|
||||||
|
devui::SCANSTREAM stream;
|
||||||
|
stream.err = 0;
|
||||||
|
stream.mode = devui::SCAN_STOPPED;
|
||||||
|
stream.speed = 0;
|
||||||
|
|
||||||
|
devui::send_message(devui::UI_STATUS_SCANNING, (uint8_t*)&stream, sizeof(stream));
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int scanner_hw::close(bool from_worker)
|
int scanner_hw::close(bool from_worker)
|
||||||
|
@ -951,21 +975,43 @@ int scanner_hw::close(bool from_worker)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int scanner_hw::trans_motorboard_err_2_hg_error(int mberr)
|
int scanner_hw::trans_motorboard_err_2_hg_error(int mberr, bool to_ui)
|
||||||
{
|
{
|
||||||
unsigned int val = mberr;
|
unsigned int val = mberr;
|
||||||
SMBSTATUS* s = (SMBSTATUS*)&val;
|
SMBSTATUS *s = (SMBSTATUS*)&val;
|
||||||
if(s->open_machine)
|
int msg = 0;
|
||||||
mberr = SCANNER_ERR_DEVICE_COVER_OPENNED;
|
|
||||||
else if(s->pick_failed)
|
|
||||||
mberr = SCANNER_ERR_DEVICE_FEEDING_PAPER;
|
|
||||||
|
|
||||||
|
if(s->open_machine)
|
||||||
|
{
|
||||||
|
mberr = SCANNER_ERR_DEVICE_COVER_OPENNED;
|
||||||
|
msg = ID_WORDS_STATUS_COVER_OPEN;
|
||||||
|
}
|
||||||
|
else if(s->pick_failed)
|
||||||
|
{
|
||||||
|
mberr = SCANNER_ERR_DEVICE_FEEDING_PAPER;
|
||||||
|
msg = ID_WORDS_STATUS_FEED_ERR;
|
||||||
|
}
|
||||||
else if(s->double_paper)
|
else if(s->double_paper)
|
||||||
|
{
|
||||||
mberr = SCANNER_ERR_DEVICE_DOUBLE_FEEDING;
|
mberr = SCANNER_ERR_DEVICE_DOUBLE_FEEDING;
|
||||||
|
msg = ID_WORDS_STATUS_DOUBLE_FEED;
|
||||||
|
}
|
||||||
else if(s->staple)
|
else if(s->staple)
|
||||||
|
{
|
||||||
mberr = SCANNER_ERR_DEVICE_STAPLE_ON;
|
mberr = SCANNER_ERR_DEVICE_STAPLE_ON;
|
||||||
|
msg = ID_WORDS_STATUS_STAPLE;
|
||||||
|
}
|
||||||
else if(s->papertilted)
|
else if(s->papertilted)
|
||||||
|
{
|
||||||
mberr = SCANNER_ERR_DEVICE_PAPER_SKEW;
|
mberr = SCANNER_ERR_DEVICE_PAPER_SKEW;
|
||||||
|
msg = ID_WORDS_STATUS_ASKEW;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(to_ui && msg)
|
||||||
|
{
|
||||||
|
printf("status message: %s\n", words_from_id(msg));
|
||||||
|
devui::send_status_message(msg);
|
||||||
|
}
|
||||||
|
|
||||||
return mberr;
|
return mberr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@ public:
|
||||||
int start_scan(void);
|
int start_scan(void);
|
||||||
int stop_scan(void);
|
int stop_scan(void);
|
||||||
int close(bool from_worker = false);
|
int close(bool from_worker = false);
|
||||||
int trans_motorboard_err_2_hg_error(int mberr);
|
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);
|
||||||
bool is_scanning(void);
|
bool is_scanning(void);
|
||||||
};
|
};
|
||||||
|
|
|
@ -400,7 +400,7 @@ static int countindex =0;
|
||||||
void MotorBoard::pin_call(unsigned int pinNum)
|
void MotorBoard::pin_call(unsigned int pinNum)
|
||||||
{
|
{
|
||||||
static int index = 0;
|
static int index = 0;
|
||||||
// int os_m = os_mode(); //安路屏蔽计数 扫描过程中无法操作按键
|
// int os_m = os_mode(); //安路å±<EFBFBD>蔽计数 扫æ<C2AB><C3A6>过程ä¸æ— 法æ“<C3A6>作按é”?
|
||||||
// if (m_os_mode != os_m)
|
// if (m_os_mode != os_m)
|
||||||
// {
|
// {
|
||||||
// m_os_mode = os_m;
|
// m_os_mode = os_m;
|
||||||
|
@ -409,7 +409,7 @@ void MotorBoard::pin_call(unsigned int pinNum)
|
||||||
// m_glue.m_os_mode_call(m_os_mode);
|
// m_glue.m_os_mode_call(m_os_mode);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// if (m_os_mode) //安路屏蔽计数返回 以刷新计数状态
|
// if (m_os_mode) //安路å±<EFBFBD>蔽计数返回 以刷新计数状æ€?
|
||||||
// {
|
// {
|
||||||
// LOG_TRACE("not scan mode");
|
// LOG_TRACE("not scan mode");
|
||||||
// return;
|
// return;
|
||||||
|
@ -460,13 +460,13 @@ void MotorBoard::pin_call(unsigned int pinNum)
|
||||||
else{
|
else{
|
||||||
// PutMsg(STATUS_WORDS_ID(READY), devui::ALIGN_COMPONENT_MID, devui::ALIGN_COMPONENT_MID);
|
// PutMsg(STATUS_WORDS_ID(READY), devui::ALIGN_COMPONENT_MID, devui::ALIGN_COMPONENT_MID);
|
||||||
// m_statecontrol?m_statecontrol->setcoverstate(false):void();
|
// m_statecontrol?m_statecontrol->setcoverstate(false):void();
|
||||||
printf("pin_call(%x)\n", val);
|
// printf("pin_call(%x)\n", val);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// if(smb_status->double_clean_f)
|
// if(smb_status->double_clean_f)
|
||||||
// PutMsg(STATUS_WORDS_ID(READY), devui::ALIGN_COMPONENT_MID, devui::ALIGN_COMPONENT_MID);
|
// PutMsg(STATUS_WORDS_ID(READY), devui::ALIGN_COMPONENT_MID, devui::ALIGN_COMPONENT_MID);
|
||||||
printf("pin_call(%x)\n", val);
|
// printf("pin_call(%x)\n", val);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -602,7 +602,7 @@ void MotorBoard::start_countmode()
|
||||||
|
|
||||||
void MotorBoard::PutMsg(int words, int align_v, int align_h, int font, int clear_method)
|
void MotorBoard::PutMsg(int words, int align_v, int align_h, int font, int clear_method)
|
||||||
{
|
{
|
||||||
devui::send_status_message(words, align_h, align_v, font, clear_method);
|
// devui::send_status_message(words, align_h, align_v, font, clear_method);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MotorBoard::errormsg(uint value)
|
void MotorBoard::errormsg(uint value)
|
||||||
|
@ -760,7 +760,7 @@ void MotorBoard::startcapimage(bool value)
|
||||||
|
|
||||||
bool MotorBoard::set_sensor_pwm_duty(int sensorid,int duty)
|
bool MotorBoard::set_sensor_pwm_duty(int sensorid,int duty)
|
||||||
{
|
{
|
||||||
//1:扫描;2:开盖;3:歪斜—1;4:歪斜-2;5:出纸口;6:有无纸
|
//1:扫æ<EFBFBD><EFBFBD>ï¼›2:开盖;3:æªæ–œâ€?ï¼?:æªæ–?2ï¼?:出纸å<C2B8>£ï¼?ï¼šæœ‰æ— çº¸
|
||||||
printf("set_sensor_pwm_duty type = %d duty = %d \n",sensorid,duty);
|
printf("set_sensor_pwm_duty type = %d duty = %d \n",sensorid,duty);
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
if (!read(MB_PORT_TIME, val))
|
if (!read(MB_PORT_TIME, val))
|
||||||
|
|
|
@ -247,29 +247,26 @@ namespace devui
|
||||||
this->close();
|
this->close();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if(r == 0)
|
||||||
|
{
|
||||||
|
// peer closed, wait 10ms ...
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
rcv += std::string(buf, r);
|
||||||
if(rcv.length())
|
if(rcv.length())
|
||||||
{
|
|
||||||
rcv += std::string(buf, r);
|
|
||||||
pack = (LPMSGSTREAM)&rcv[0];
|
|
||||||
if(pack->whole_size() <= rcv.length())
|
|
||||||
{
|
|
||||||
cb_(pack);
|
|
||||||
rcv.erase(0, pack->whole_size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
int off = 0;
|
int off = 0;
|
||||||
pack = (LPMSGSTREAM)buf;
|
pack = (LPMSGSTREAM)&rcv[off];
|
||||||
if(pack->whole_size() <= r)
|
while(pack->whole_size() <= rcv.length() - off)
|
||||||
{
|
{
|
||||||
cb_(pack);
|
cb_(pack);
|
||||||
off = pack->whole_size();
|
off += pack->whole_size();
|
||||||
}
|
pack = (LPMSGSTREAM)&rcv[off];
|
||||||
if(off < r)
|
|
||||||
{
|
|
||||||
rcv = std::string(buf + off, r - off);
|
|
||||||
}
|
}
|
||||||
|
if(off)
|
||||||
|
rcv.erase(0, off);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("ui-receiver exited.\n");
|
printf("ui-receiver exited.\n");
|
||||||
|
@ -362,16 +359,23 @@ namespace devui
|
||||||
std::string stream("");
|
std::string stream("");
|
||||||
MSGSTREAM pack;
|
MSGSTREAM pack;
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
|
size_t fix = sizeof(pack.data);
|
||||||
|
|
||||||
memset(&pack, 0, sizeof(pack));
|
memset(&pack, 0, sizeof(pack));
|
||||||
pack.ver = 1;
|
pack.ver = 1;
|
||||||
pack.msg = msgid;
|
pack.msg = msgid;
|
||||||
pack.size = size;
|
pack.size = size;
|
||||||
if(size)
|
if(size > fix)
|
||||||
pack.data[0] = data[0];
|
{
|
||||||
|
memcpy(pack.data, data, fix);
|
||||||
stream = std::string((char*)&pack, sizeof(pack));
|
stream = std::string((char*)&pack, sizeof(pack));
|
||||||
if(size > 1)
|
stream += std::string((char*)data + fix, size - fix);
|
||||||
stream += std::string((char*)data + 1, size - 1);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
memcpy(pack.data, data, size);
|
||||||
|
stream = std::string((char*)&pack, sizeof(pack));
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
SIMPLE_LOCK(msg_lk_);
|
SIMPLE_LOCK(msg_lk_);
|
||||||
|
|
|
@ -45,14 +45,14 @@ namespace devui
|
||||||
typedef struct _msg_stream
|
typedef struct _msg_stream
|
||||||
{
|
{
|
||||||
uint16_t ver;
|
uint16_t ver;
|
||||||
uint32_t msg;
|
|
||||||
uint16_t size; // bytes of data
|
uint16_t size; // bytes of data
|
||||||
uint8_t data[1];
|
uint32_t msg;
|
||||||
|
uint8_t data[4];
|
||||||
|
|
||||||
uint32_t whole_size(void)
|
uint32_t whole_size(void)
|
||||||
{
|
{
|
||||||
if(size)
|
if(size > sizeof(data))
|
||||||
return sizeof(*this) + size - 1;
|
return sizeof(*this) + size - sizeof(data);
|
||||||
else
|
else
|
||||||
return sizeof(*this);
|
return sizeof(*this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -468,34 +468,26 @@ ui_mgr::ui_mgr() : disp_data_("lcd-msg")
|
||||||
|
|
||||||
auto statu = [this](devui::LPMSGSTREAM pack) -> void
|
auto statu = [this](devui::LPMSGSTREAM pack) -> void
|
||||||
{
|
{
|
||||||
|
utils::log_mem_info("status message", pack, pack->whole_size());
|
||||||
|
|
||||||
if(pack->msg == devui::UI_STATUS_SCANNING)
|
if(pack->msg == devui::UI_STATUS_SCANNING)
|
||||||
{
|
{
|
||||||
devui::LPSCANSTREAM scan = (devui::LPSCANSTREAM)pack->data;
|
devui::LPSCANSTREAM scan = (devui::LPSCANSTREAM)pack->data;
|
||||||
scanning_ = scan->mode != devui::SCAN_STOPPED;
|
scanning_ = scan->mode != devui::SCAN_STOPPED;
|
||||||
set_ready_status_enabled(!scanning_ && scan->err == 0);
|
set_ready_status_enabled(!scanning_ && (scan->err == 0 || stopped_by_ui_));
|
||||||
if(scanning_)
|
if(scanning_)
|
||||||
{
|
{
|
||||||
paper_cnt_ = 0;
|
paper_cnt_ = 0;
|
||||||
if(pack->data[0] == devui::SCAN_PAUSED)
|
if(scan->mode == devui::SCAN_PAUSED)
|
||||||
{
|
{
|
||||||
perm_data_->save();
|
perm_data_->save();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DISPDATA dd;
|
scan_mode_ = scan->mode;
|
||||||
|
display_scan_title();
|
||||||
perm_data_->set_speed(scan->speed);
|
perm_data_->set_speed(scan->speed);
|
||||||
paper_total_ = 0;
|
paper_total_ = 0;
|
||||||
memset(&dd, 0, sizeof(dd));
|
|
||||||
dd.cnt = dd.mask = -1;
|
|
||||||
dd.method = DISP_METHOD_CLEAR;
|
|
||||||
disp_data_.save(dd, true);
|
|
||||||
dd.mask = 0;
|
|
||||||
dd.cnt = custom_font::get_string_font(pack->data[0] == devui::SCAN_NORMAL ? WORDS_STATUS_SCANNING_NORMAL : WORDS_STATUS_SCANNING_COUNT, dd.ptr);
|
|
||||||
hold_pos_.x = dd.ptr[0][0] * 1;
|
|
||||||
hold_pos_.y = dd.ptr[0][1];
|
|
||||||
dd.method = DISP_METHOD_WHOLE_LINE;
|
|
||||||
disp_data_.save(dd, true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -505,6 +497,9 @@ ui_mgr::ui_mgr() : disp_data_("lcd-msg")
|
||||||
}
|
}
|
||||||
else if(pack->msg == devui::UI_STATUS_PAPER_CNT)
|
else if(pack->msg == devui::UI_STATUS_PAPER_CNT)
|
||||||
{
|
{
|
||||||
|
if(int_by_status_)
|
||||||
|
display_scan_title();
|
||||||
|
|
||||||
DISPDATA dd;
|
DISPDATA dd;
|
||||||
char num[40] = {0};
|
char num[40] = {0};
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
|
@ -516,6 +511,7 @@ ui_mgr::ui_mgr() : disp_data_("lcd-msg")
|
||||||
dd.x = hold_pos_.x;
|
dd.x = hold_pos_.x;
|
||||||
dd.y = hold_pos_.y;
|
dd.y = hold_pos_.y;
|
||||||
dd.method = DISP_METHOD_PART_LINE;
|
dd.method = DISP_METHOD_PART_LINE;
|
||||||
|
dd.mask = 0;
|
||||||
dd.cnt = custom_font::get_string_font(num, dd.ptr);
|
dd.cnt = custom_font::get_string_font(num, dd.ptr);
|
||||||
cnt = disp_data_.save(dd, true);
|
cnt = disp_data_.save(dd, true);
|
||||||
|
|
||||||
|
@ -529,6 +525,7 @@ ui_mgr::ui_mgr() : disp_data_("lcd-msg")
|
||||||
}
|
}
|
||||||
else if(pack->msg == devui::UI_STATUS_MESSAGE)
|
else if(pack->msg == devui::UI_STATUS_MESSAGE)
|
||||||
{
|
{
|
||||||
|
int_by_status_ = true;
|
||||||
display_status(pack->data);
|
display_status(pack->data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -987,6 +984,21 @@ void ui_mgr::thread_display(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void ui_mgr::display_scan_title(void)
|
||||||
|
{
|
||||||
|
DISPDATA dd;
|
||||||
|
|
||||||
|
int_by_status_ = stopped_by_ui_ = false;
|
||||||
|
memset(&dd, 0, sizeof(dd));
|
||||||
|
dd.method = DISP_METHOD_CLEAR;
|
||||||
|
disp_data_.save(dd, true);
|
||||||
|
|
||||||
|
dd.cnt = custom_font::get_string_font(scan_mode_ == devui::SCAN_NORMAL ? WORDS_STATUS_SCANNING_NORMAL : WORDS_STATUS_SCANNING_COUNT, dd.ptr);
|
||||||
|
hold_pos_.x = dd.ptr[0][0] * 1;
|
||||||
|
hold_pos_.y = dd.ptr[0][1];
|
||||||
|
dd.method = DISP_METHOD_PART_LINE;
|
||||||
|
disp_data_.save(dd, true);
|
||||||
|
}
|
||||||
void ui_mgr::display_ready(void)
|
void ui_mgr::display_ready(void)
|
||||||
{
|
{
|
||||||
set_ready_status_enabled(false);
|
set_ready_status_enabled(false);
|
||||||
|
@ -1049,6 +1061,23 @@ void ui_mgr::display_status(void* data)
|
||||||
|
|
||||||
set_ready_status_enabled(false);
|
set_ready_status_enabled(false);
|
||||||
disp_data_.save(dd, true);
|
disp_data_.save(dd, true);
|
||||||
|
|
||||||
|
if(paper_total_)
|
||||||
|
{
|
||||||
|
DISPDATA dd;
|
||||||
|
char num[40] = {0};
|
||||||
|
int cnt = 0;
|
||||||
|
|
||||||
|
sprintf(num, "%s%d", WORDS_STATUS_TOTAL, paper_total_);
|
||||||
|
dd.x = Lcd::LCD_WIDTH;
|
||||||
|
dd.cnt = custom_font::get_string_font(num, dd.ptr, custom_font::FONT_SIZE_8);
|
||||||
|
for(int i = 0; i < dd.cnt; ++i)
|
||||||
|
dd.x -= dd.ptr[i][0] + 1;
|
||||||
|
dd.y = Lcd::LCD_HEIGHT - dd.ptr[0][1];
|
||||||
|
dd.method = DISP_METHOD_PART_LINE;
|
||||||
|
dd.mask = 0;
|
||||||
|
cnt = disp_data_.save(dd, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
void ui_mgr::set_ready_status_enabled(bool enable)
|
void ui_mgr::set_ready_status_enabled(bool enable)
|
||||||
{
|
{
|
||||||
|
@ -1074,6 +1103,7 @@ void ui_mgr::key_event(int key)
|
||||||
{
|
{
|
||||||
if(key == (int)KeyMonitor::HGKey::Key_Cancle)
|
if(key == (int)KeyMonitor::HGKey::Key_Cancle)
|
||||||
{
|
{
|
||||||
|
stopped_by_ui_ = true;
|
||||||
utils::to_log(LOG_LEVEL_DEBUG, "Do menu command: %s\n", "Stop scanning Immediately");
|
utils::to_log(LOG_LEVEL_DEBUG, "Do menu command: %s\n", "Stop scanning Immediately");
|
||||||
devui::send_message(devui::UI_CMD_STOP_SCAN);
|
devui::send_message(devui::UI_CMD_STOP_SCAN);
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,6 +95,9 @@ class ui_mgr : public refer
|
||||||
volatile bool run_ = true;
|
volatile bool run_ = true;
|
||||||
volatile bool ready_enable_ = true;
|
volatile bool ready_enable_ = true;
|
||||||
bool scanning_ = false;
|
bool scanning_ = false;
|
||||||
|
bool stopped_by_ui_ = false; // enable ready message when error occurs in auto-scan
|
||||||
|
bool int_by_status_ = false;
|
||||||
|
int scan_mode_ = 0;
|
||||||
int paper_total_ = 0;
|
int paper_total_ = 0;
|
||||||
int paper_cnt_ = 0;
|
int paper_cnt_ = 0;
|
||||||
SIZE font_size_ = {16, 16};
|
SIZE font_size_ = {16, 16};
|
||||||
|
@ -305,6 +308,7 @@ class ui_mgr : public refer
|
||||||
safe_thread disp_thrd_;
|
safe_thread disp_thrd_;
|
||||||
|
|
||||||
void thread_display(void);
|
void thread_display(void);
|
||||||
|
void display_scan_title(void);
|
||||||
void display_ready(void);
|
void display_ready(void);
|
||||||
void display_status(void* data);
|
void display_status(void* data);
|
||||||
void set_ready_status_enabled(bool enable); // disable ready message, the last message will display until keyboard event triggered
|
void set_ready_status_enabled(bool enable); // disable ready message, the last message will display until keyboard event triggered
|
||||||
|
|
|
@ -60,8 +60,8 @@ add_packagedirs("sdk")
|
||||||
add_defines("BUILD_AS_DEVICE")
|
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=20240220")
|
add_defines("VER_DATE=20240221")
|
||||||
add_defines("VER_BUILD=17")
|
add_defines("VER_BUILD=4")
|
||||||
|
|
||||||
target("conf")
|
target("conf")
|
||||||
set_kind("phony")
|
set_kind("phony")
|
||||||
|
|
Loading…
Reference in New Issue