From 91a5de2d13050954b866c115af1ee84dd7ddfabb Mon Sep 17 00:00:00 2001 From: modehua Date: Thu, 19 Oct 2023 02:29:46 -0700 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=88=E6=8A=A4=E8=BF=9B?= =?UTF-8?q?=E7=A8=8B=20=E5=A2=9E=E5=8A=A0=E6=91=A9=E5=B0=94=E7=BA=B9?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=EF=BC=8C=E8=B0=83=E6=95=B4bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CuoZhiMotor.cpp | 20 +++++------ FsmState.cpp | 1 - HCamDevice.cpp | 6 ++-- MultiFrameCapture.cpp | 31 +++++++++++++++- Scanner.cpp | 51 ++++++++++++-------------- UsbScanner.cpp | 5 ++- ZouZhiMotor.cpp | 20 +++++------ countdown.sh | 11 ++---- hgkilltimer.sh | 12 ++++++- main.cpp | 75 +++++++++++--------------------------- scanservices_utils.h | 18 ++++++++-- utilsfunc.cpp | 83 +++++++++++++++++++++++++++++++++++++------ utilsfunc.h | 5 +++ 13 files changed, 205 insertions(+), 133 deletions(-) diff --git a/CuoZhiMotor.cpp b/CuoZhiMotor.cpp index 07e7206..3a088b9 100644 --- a/CuoZhiMotor.cpp +++ b/CuoZhiMotor.cpp @@ -112,16 +112,16 @@ void CuoZhiMotor::speedRecover() void CuoZhiMotor::speedConfig() { - // printf("CuoZhiMotor speed=%d \n dpi=%d \n colormode=%d \n finalPeriod=%d \n Fmin=%d \n a=%.2f \n offset=%.2f \n stepnum=%.2f \n finalDelay=%.2f \n ", - // m_cuoparamex.speed, - // m_cuoparamex.dpi, - // m_cuoparamex.colormode, - // m_cuoparamex.mt_param.finalPeriod, - // m_cuoparamex.mt_param.Fmin, - // m_cuoparamex.mt_param.a, - // m_cuoparamex.mt_param.offset, - // m_cuoparamex.mt_param.stepnum, - // m_cuoparamex.mt_param.finalDelay); + printf("CuoZhiMotor speed=%d \n dpi=%d \n colormode=%d \n finalPeriod=%d \n Fmin=%d \n a=%.2f \n offset=%.2f \n stepnum=%.2f \n finalDelay=%.2f \n ", + m_cuoparamex.speed, + m_cuoparamex.dpi, + m_cuoparamex.colormode, + m_cuoparamex.mt_param.finalPeriod, + m_cuoparamex.mt_param.Fmin, + m_cuoparamex.mt_param.a, + m_cuoparamex.mt_param.offset, + m_cuoparamex.mt_param.stepnum, + m_cuoparamex.mt_param.finalDelay); delays_forward.clear(); delays_forward = speedup_cfg(m_cuoparamex.mt_param.finalPeriod, m_cuoparamex.mt_param.Fmin, m_cuoparamex.mt_param.stepnum, m_cuoparamex.mt_param.a, diff --git a/FsmState.cpp b/FsmState.cpp index 6073cec..5820e5d 100644 --- a/FsmState.cpp +++ b/FsmState.cpp @@ -291,7 +291,6 @@ FsmState *ScanningState::on_event(ScanEvent event) scanner->SetIsDoublePaper(true); scanner->emergency_stop(1); LOG("\nScanningState S_EVT_DOUBLEPAPER %s \n",GetCurrentTimeStamp(2).c_str()); - writesyslog(LOG_INFO,"double paper error\n"); return FsmStateManagerEx::GetState(); } else if (event == S_EVT_JAM_IN) diff --git a/HCamDevice.cpp b/HCamDevice.cpp index 8bb00ce..976b58c 100644 --- a/HCamDevice.cpp +++ b/HCamDevice.cpp @@ -207,7 +207,7 @@ int HCamDevice::uninit_fpga() int HCamDevice::open_device(int width , int height) { - + close_device(); v4lWidth = width;//@300dpi 5184 @600dpi 5184*2 v4lHeight = height ;//* 3;//color_h/gray_h = 3 比如:目标复原图像高度为128 则灰度需要FPGA采集128 彩色采集128*3 @@ -673,7 +673,7 @@ int HCamDevice::init_capture() camera_print(" fmt.fmt.pix.width = %d\n", fmt.fmt.pix_mp.width); camera_print(" fmt.fmt.pix.height = %d\n", fmt.fmt.pix_mp.height); camera_print(" fmt.fmt.pix.field = %d\n", fmt.fmt.pix_mp.field); - // close(videofd); + close_device(); return -1; } @@ -1363,7 +1363,7 @@ void HCamDevice::HtCamResizeBuffer(int width, int height, int number) v4lHeight = height; v4lBufferCount = number; - HtCamExitVideoCapturing(); + close_device(); init_sample(); init_capture(); init_video_buffer(); diff --git a/MultiFrameCapture.cpp b/MultiFrameCapture.cpp index 785c2dd..88cce70 100644 --- a/MultiFrameCapture.cpp +++ b/MultiFrameCapture.cpp @@ -80,6 +80,9 @@ void MultiFrameCapture::SetParent(void *scanner) void MultiFrameCapture::open() { + printf("open-------\r\n"); + //stop_countdown(); + printf("open close-------\r\n"); int ret = video->open_device(v4l2_width_,v4l2_height_); if(ret < -1) return; @@ -176,6 +179,11 @@ SIZE MultiFrameCapture::GetPaperSize(PaperSize paper, int dpi) void MultiFrameCapture::UpdateScanParam(HG_ScanConfiguration config) { m_config = config; + printf("config.params.slow_moire:%d\r\n",config.params.slow_moire); + if(config.params.slow_moire && config.params.dpi != 3) + { + config.params.dpi = 2; + } if (!video.get()) { @@ -213,6 +221,22 @@ void MultiFrameCapture::UpdateScanParam(HG_ScanConfiguration config) { int val = config.params.dpi == 3 ? 600 :(config.params.dpi == 2?300:200); printf("val = %d\r\n",val); + //除摩尔纹模式 + if(config.params.slow_moire && config.params.dpi != 3) + { + int sp = fpgaparam.Sp - 538; + val = 400; + video->HtCamSetSpTime(sp,49); // 2344 灰色 //2023-8-10 最新2650 + if (color_mode_) + { + video->HtCamSetSpTime2(sp * 3); + } + printf("摩尔纹高度 = %d\r\n",val); + printf("灰度sp = %d\r\n",sp); + printf("彩色sp = %d\r\n",sp * 3); + } + + uint32_t cnt = compute_frame(paper_size_ , val) ; if (m_config.params.dpi == 2 && m_config.params.pageSize == (int)PaperSize::G400_A4) { @@ -763,7 +787,12 @@ bool MultiFrameCapture::saveLutImg(int dpi, int mode, bool black) { int k = (3 * s + x); // int diff = LIGHT_DIFF(*((double *)values + k)); - int diff = 210 - *((double *)values + k);;//param.MaxBright - *((double *)values + k); + int diff;//= 240 - *((double *)values + k);;//param.MaxBright - *((double *)values + k); + if(x==0) + diff = 190 - *((double *)values + k); + else + diff = 240 - *((double *)values + k); + log += " 明场:" + std::to_string(k) + ";diff:" + std::to_string(diff) + "\r\n"; double step = diff * radio; diff --git a/Scanner.cpp b/Scanner.cpp index 8da5726..141c7f6 100644 --- a/Scanner.cpp +++ b/Scanner.cpp @@ -33,37 +33,26 @@ Scanner::Scanner(ScannerGlue glue) capturer->SetParent(this); //固件版本 int version=7010; - fpgacontrol fc(version); - if (fc.ifneedupdatefpga()) - { - if (fc.updatefpga()) - { - system("poweroff"); - } - else - { - LOG("error error update fpga error"); - } - } auto btnevent = [this](const int eventtype) { if (!IsScanning()) //未扫描 { - if (eventtype == BTN_LOW_POWER) + switch (eventtype) { - //system("echo mem > /sys/power/state"); - //capturer->SetLowPower(0); - system("/mnt/flash-disk/low_power.sh 1"); - } - else if (eventtype == BTN_START) - { - // put(S_EVT_START_SCAN); - } - else if(eventtype == BTN_NORMAL_POWER) - { - //capturer->SetLowPower(1); - system("/mnt/flash-disk/low_power.sh 0"); + case BTN_LOW_POWER: + stop_countdown(); + system("sh /mnt/flash-disk/low_power.sh 1"); + break; + case BTN_NORMAL_POWER: + system("sh /mnt/flash-disk/low_power.sh 0"); + start_enter_lowpwoer(); + break; + case BTN_START: + /* code */ + break; + default: + break; } } else //扫描中 @@ -71,7 +60,7 @@ Scanner::Scanner(ScannerGlue glue) if (eventtype == BTN_STOP) { put(S_EVT_STOP_SCAN); - LOG("BTN_STOP put(S_EVT_STOP_SCAN)"); + printf("keyboard cancel scan\r\n"); } } }; @@ -117,9 +106,13 @@ void Scanner::updateSpeedMode(int speed) unsigned int t_dpi = m_config.params.dpi; if(typeid(*capturer)==typeid(MultiFrameCapture)) - if(m_config.params.pageSize == 17 || m_config.params.pageSize == 19) //长文稿采用600dpi模式扫描 + if(m_config.params.pageSize == 17 || m_config.params.pageSize == 19 ) //长文稿采用600dpi模式扫描 t_dpi = 3; - + if (m_config.params.slow_moire) //摩尔纹使用300dpi进行采集 + { + t_dpi = 2; + } + motorCuozhi.speedChange(m_scaninfo.SpeedMode, t_dpi,m_config.params.isColor); motorZouzhi.speedChange(m_scaninfo.SpeedMode, t_dpi,m_config.params.isColor); } @@ -129,6 +122,7 @@ void Scanner::startScan() if (threadRunScan.joinable()) threadRunScan.join(); stop_countdown(); + this_thread::sleep_for(std::chrono::milliseconds(200)); updateSpeedMode(4); // //开始进行扫描 threadRunScan = std::thread(&Scanner::runScan, this); @@ -256,7 +250,6 @@ void Scanner::runScan() m_jamIn = true; put(S_EVT_JAM_IN); m_scaninfo.JamInNum++; - //writesyslog(LOG_INFO, "paper jam in error \n"); } break; } diff --git a/UsbScanner.cpp b/UsbScanner.cpp index cc83512..f95d046 100644 --- a/UsbScanner.cpp +++ b/UsbScanner.cpp @@ -144,7 +144,6 @@ UsbScanner::UsbScanner() : m_startscan(false), if (eventID == (int)HG_ScannerStatus::STOP_SCAN) { m_startscan = false; - writesyslog(LOG_INFO, getmeminfo()); } if (eventID == (int)(HG_ScannerStatus::AUTO_FLAT_FINISHED)) { @@ -179,7 +178,7 @@ void UsbScanner::StartScan(int scancount) { ClearImages(); ClearErrorEvents(); - m_hgScanner->SetDstScanNum(9999);//scancount <= 0 ? 1 : scancount); + m_hgScanner->SetDstScanNum(scancount <= 0 ? 1 : scancount); m_hgScanner->put(S_EVT_START_SCAN); } @@ -400,7 +399,7 @@ void UsbScanner::UpdateScanInfo(int type, void *data) info.SleepTime = *(unsigned int *)(data); printf("set sleep time = %d \n", info.SleepTime); SaveScaninfo(info); - stop_countdown(); + //stop_countdown(); start_enter_lowpwoer(); return; case USBCommand::SET_SPEED_MODE: diff --git a/ZouZhiMotor.cpp b/ZouZhiMotor.cpp index 495f19d..59e3888 100644 --- a/ZouZhiMotor.cpp +++ b/ZouZhiMotor.cpp @@ -32,16 +32,16 @@ void ZouZhiMotor::speedRecover() void ZouZhiMotor::speedConfig() { - // printf("ZouZhiMotor speed=%d \n dpi=%d \n colormode=%d \n finalPeriod=%d \n Fmin=%d \n a=%.2f \n offset=%.2f \n stepnum=%.2f \n finalDelay=%.2f \n ", - // m_zouparamex.speed, - // m_zouparamex.dpi, - // m_zouparamex.colormode, - // m_zouparamex.mt_param.finalPeriod, - // m_zouparamex.mt_param.Fmin, - // m_zouparamex.mt_param.a, - // m_zouparamex.mt_param.offset, - // m_zouparamex.mt_param.stepnum, - // m_zouparamex.mt_param.finalDelay); + printf("ZouZhiMotor speed=%d \n dpi=%d \n colormode=%d \n finalPeriod=%d \n Fmin=%d \n a=%.2f \n offset=%.2f \n stepnum=%.2f \n finalDelay=%.2f \n ", + m_zouparamex.speed, + m_zouparamex.dpi, + m_zouparamex.colormode, + m_zouparamex.mt_param.finalPeriod, + m_zouparamex.mt_param.Fmin, + m_zouparamex.mt_param.a, + m_zouparamex.mt_param.offset, + m_zouparamex.mt_param.stepnum, + m_zouparamex.mt_param.finalDelay); delays.clear(); diff --git a/countdown.sh b/countdown.sh index bae6a80..b2d7f98 100644 --- a/countdown.sh +++ b/countdown.sh @@ -31,15 +31,8 @@ start(){ done if [ $SEC -gt 0 ] ; then - #echo freeze > /sys/power/state - echo sleep > /etc/kernel_state - pkill scanservice - /etc/usbmonitor & - /etc/pm_control off - echo 0 > /sys/class/leds/red/brightness - echo 0 > /sys/class/leds/white/brightness - echo 0 > /sys/class/leds/green/brightness - echo 1 > /sys/class/leds/green/brightness + sh /mnt/flash-disk/low_power.sh 1 + fi } diff --git a/hgkilltimer.sh b/hgkilltimer.sh index ae29fb7..1f3bde2 100644 --- a/hgkilltimer.sh +++ b/hgkilltimer.sh @@ -1 +1,11 @@ -ps -efww|grep countdown |grep -v grep|cut -c 9-15|xargs kill -9 \ No newline at end of file +#!/bin/bash + +ID=`PS -EF | grep countdown.sh | grep -v grep |awk '{printf $2}'` + +echo $ID + +for id in $ID +do + kill -9 $id + echo "kill $id" +done \ No newline at end of file diff --git a/main.cpp b/main.cpp index c6f4edc..b55725a 100644 --- a/main.cpp +++ b/main.cpp @@ -228,7 +228,7 @@ int main(int argc, char *argv[]) { exit(-1); } - + creat_sleep_fifo(); init_get_CISType_GPIO(); initscanner(); start_enter_lowpwoer(); @@ -323,7 +323,6 @@ int main(int argc, char *argv[]) auto data = m_scanner->GetEvent(); if (data.code == (int)(HG_ScannerStatus::STOP_SCAN)) { - system("cpufreq-set -g ondemand"); printf("关闭V4L2 4444\r\n"); m_scanner->close_v4l2(); } @@ -355,16 +354,6 @@ int main(int argc, char *argv[]) if (info.pJpegData != nullptr && info.DataLength != 0) { int tt = m_scanner->write_bulk((void *)&info, sizeof(int) * 8); - //printf("USB传输第一次write_bulk时间 :%f \r\n",sw.elapsed_ms()); - // tt = m_scanner->write_bulk(info.pJpegData, info.DataLength); - // //free(info.pJpegData); - // printf("USB传输第二次write_bulk时间 :%f \r\n",sw.elapsed_ms()); - // break; - - // tt = m_scanner->write_bulk(info.mat.data, info.DataLength); - // free(info.pJpegData); - // break; - // LOG("GET_IMAGE info.pJpegData =%p info.DataLength=%d \n", info.pJpegData, info.DataLength); int index = 0; int total = info.DataLength; while (total > 0) @@ -376,31 +365,19 @@ int main(int argc, char *argv[]) total = 0; // jpeg图像小于1MB 则一次传输 } else // 压缩大于1MB的图像 分包传输 - { total -= dstlength; - } int tt = m_scanner->write_bulk(info.pJpegData + index, dstlength); - //printf("USB传输第二次write_bulk时间 :%f \r\n",sw.elapsed_ms()); - - // printf("write_bulk info.pJpegData+index = %p index = %d dstlength =%d tt = %d \n", info.pJpegData + index, index, dstlength, tt); if (tt <= -1) { LOG("FAIL GET_IMAGE write bulk data error\n"); - // writesyslog(LOG_WARNING, "usb write_bulk error,lost image!"); break; } else index += tt; } - //dnasfree(info.pJpegData); - //tjFree(info.pJpegData); - //LOG("Free info.pJpegData done\n"); - if (info.dpi) - { - free(info.pJpegData); - } - + + sw1.reset(); printf("USB传输一帧第[%d]次时间 :%f \r\n",indx,sw.elapsed_ms()); indx++; @@ -409,11 +386,8 @@ int main(int argc, char *argv[]) break; case USBCommand::START_COMMAND: { - system("cpufreq-set -g performance"); LOG("start scan scancount = %d\n", usbcb.Data); m_scanner->StartScan(usbcb.Data); - std::string loginfo = "start scan dst scan num = " + to_string(usbcb.Data) + "\n"; - writesyslog(LOG_INFO, loginfo); } break; case USBCommand::STOP: @@ -434,7 +408,6 @@ int main(int argc, char *argv[]) config.value = usbcb.Data; m_scanner->ConfigScanParam(config); std::string loginfo = "config scanner config data = " + to_string(usbcb.Data) + "\n"; - writesyslog(LOG_INFO, loginfo); LOG("CONFIGURED_DATA data = %d \n", config.value); } break; @@ -534,9 +507,8 @@ int main(int argc, char *argv[]) // break; case USBCommand::PRE_UPGRADE: { - writesyslog(LOG_INFO, "start updating system\n"); LOG("start PRE_UPGRADE \n"); - updatePkg.open("/usr/local/update.zip", ios::out | ios::binary); + updatePkg.open("/home/root/update.zip", ios::out | ios::binary); m_scanner->SetLEDStatus(LedStatus::Updating); total_length = usbcb.Length; } @@ -569,18 +541,12 @@ int main(int argc, char *argv[]) this_thread::sleep_for(std::chrono::seconds(10)); m_scanner->SetLEDStatus(LedStatus::UpdateDone); updatePkg.close(); - system("cp /usr/local/update.zip /userdata/update.zip -f"); - system("rm -rf /usr/local/update.zip"); - // m_scanner->SetLEDStatus(LedStatus::Ready); - // this_thread::sleep_for(std::chrono::seconds(3)); - // total_length = 0; - // writesyslog(LOG_INFO, "update system finished\n"); - // system("reboot"); + system("sh /mnt/flash-disk/upgrade_firmware.sh"); + } break; case USBCommand::REBOOT: { - writesyslog(LOG_INFO, "scanservices aquired reboot\n"); if (usbcb.Data == 0) system("reboot"); else @@ -622,7 +588,6 @@ int main(int argc, char *argv[]) if (tt == -1) { LOG("GET_LOG_FILES_INFO write bulk data error\n"); - writesyslog(LOG_WARNING, "usb write_bulk error,lost log data!"); break; } else @@ -635,7 +600,7 @@ int main(int argc, char *argv[]) break; case USBCommand::GET_UPDATE_RESULT: { - fstream updateResult("/userdata/md5_result.log"); + fstream updateResult("/mnt/flash-disk/updata_status.txt"); if (!updateResult.is_open()) usbcb.Data = 0; else @@ -643,19 +608,18 @@ int main(int argc, char *argv[]) updateResult >> usbcb.Data; updateResult.close(); } + + printf("usbcb.Data:%d\r\n",usbcb.Data); m_scanner->write_bulk(&usbcb, sizeof(usbcb)); this_thread::sleep_for(std::chrono::milliseconds(1000)); - if (usbcb.Data == 2) + if (usbcb.Data == 0) system("reboot"); - else if (usbcb.Data == 3) - system("update ota /userdata/updatefile/update.img"); } break; case USBCommand::CLEAR_LOG_FILES: { system("echo \"\" > /var/log/syslog"); - writesyslog(LOG_WARNING, "clear /var/log/syslog contents!"); } break; case USBCommand::GET_SCANN_NUM: @@ -700,8 +664,15 @@ int main(int argc, char *argv[]) break; case USBCommand::ACTIVE_SCANNER: { - usbcb.Data = 0x10; + int ret = get_devs_status(SLEEP_STATUS_PATH); + + printf("sleep status :%d\r\n",ret); + usbcb.Data = ret == SCANNER_ERR_SLEEP ? 0x100 : 0x10; m_scanner->write_bulk(&usbcb, sizeof(usbcb)); + if (ret == SCANNER_ERR_SLEEP) + { + system("sh /mnt/flash-disk/low_power.sh 0"); + } } break; case USBCommand::SET_USB_INFOR_VIDPID: @@ -712,9 +683,6 @@ int main(int argc, char *argv[]) info.VID = t_vidpid.VID; info.PID = t_vidpid.PID; SaveScaninfo(info); - string usbvidpid = "/etc/mdfusbconfig " + to_string(t_vidpid.VID) + " " + to_string(t_vidpid.PID); - LOG("SET_USB_INFOR_VIDPID + %s \n", usbvidpid.c_str()); - system(usbvidpid.c_str()); } break; case USBCommand::GET_USB_INFOR_VIDPID: @@ -791,7 +759,6 @@ int main(int argc, char *argv[]) std::string lut_path = "/mnt/flash-disk/huago/lut" + std::to_string(dpi) + mode + is_white_lut + ".bmp"; lut_item.open(lut_path, std::ios_base::in | std::ios_base::binary); - if (!lut_item.is_open()) { flatinfo.params.datalen = 0; @@ -825,9 +792,10 @@ int main(int argc, char *argv[]) flatinfo.params.datalen = 0; flatinfo.params.status = 3; // 未知dpi } - usbcb.Data = flatinfo.value; - printf("flatinfo.params.status:%d flatinfo.params.datalen:%d flatinfo.value:%d\r\n",flatinfo.params.status,flatinfo.params.datalen,flatinfo.value); + printf("flatinfo.params.status:%d\r\n" ,flatinfo.params.status); + printf("flatinfo.params.datalen:%d\r\n" ,flatinfo.params.datalen); + printf("flatinfo.value:%d\r\n",flatinfo.value); m_scanner->write_bulk(&usbcb, sizeof(usbcb)); if (lut_buffer) @@ -852,6 +820,5 @@ int main(int argc, char *argv[]) LOG("reset scanner \n"); LOG("reset usb \n"); LOG("scanservice exit \n"); - writesyslog(LOG_INFO, "usb disconnect! scanservices exit now"); return 0; } \ No newline at end of file diff --git a/scanservices_utils.h b/scanservices_utils.h index 3b47617..8cb010e 100644 --- a/scanservices_utils.h +++ b/scanservices_utils.h @@ -236,7 +236,7 @@ static std::map paperHeight={ union HG_ScanConfiguration { - struct +struct { unsigned int pageSize : 5; unsigned int isColor : 1; @@ -246,7 +246,8 @@ union HG_ScanConfiguration unsigned int enableLed : 1; unsigned int enableSizeDetect : 1; unsigned int lutmode : 1 ; - unsigned int reversed1 : 4; + unsigned int slow_moire : 1; + unsigned int reversed1 : 3; unsigned int isCorrect : 1; unsigned int dstHeight : 8; unsigned int reversed2 : 6; @@ -358,3 +359,16 @@ union FLAT_INFO }params; unsigned int value; }; + +#define SLEEP_STATUS_PATH "/mnt/flash-disk/sleep_status.txt" +#define UPDATE_STATUS_PATH "/mnt/flash-disk/update_status.txt" +enum scanner_err +{ + SCANNER_ERR_OK = 0, //设备正常状态 + SCANNER_ERR_SLEEP, //设备处于休眠当中 + SCANNER_ERR_UPDATE_OK, //设备更新:成功 + SCANNER_ERR_UPDATE_UPDATAING, //设备更新:进行中 + SCANNER_ERR_UPDATE_CHECK_VAL_ERROR, //设备更新:校验检测错误 + SCANNER_ERR_UPDATE_CHECK_FILE_LOST, //设备更新:文件丢失 + SCANNER_ERR_UPDATE_UNZIP_FAIL, //设备更新:解压失败 +}; \ No newline at end of file diff --git a/utilsfunc.cpp b/utilsfunc.cpp index 2b80133..bcaf777 100644 --- a/utilsfunc.cpp +++ b/utilsfunc.cpp @@ -17,6 +17,9 @@ #define LUT_COLOR_LUT_PATH "/usr/local/huago/color_lut.bmp" #define LUT_GRAY_LUT_PATH "/usr/local/huago/gray_lut.bmp" + + + static std::unique_ptr g_sTypeio; //using namespace cv; @@ -358,22 +361,32 @@ std::string getmeminfo() void start_enter_lowpwoer() { #ifdef ENABLE_LOWPOWERMODE - // int seconds=900; - // auto scaninfo= js_config.GetScanInfo(); - // if(scaninfo.SleepTime<0||scaninfo.SleepTime<180) - // seconds=180; - // else - // seconds=scaninfo.SleepTime; - // std::string str="sh /etc/countdown.sh start 0 0 "+std::to_string(seconds)+" &"; - // LOG("start_enter_lowpwoer %s \n",str.c_str()); - // system(str.c_str()); +// // stop_countdown(); +// int seconds=900; +// auto scaninfo= js_config.GetScanInfo(); +// if(scaninfo.SleepTime<0||scaninfo.SleepTime<180) +// seconds=180; +// else +// seconds=scaninfo.SleepTime; +// std::string str="sh /mnt/flash-disk/countdown.sh start 0 0 "+std::to_string(seconds) + " &"; +// printf("start_enter_lowpwoer %s \n",str.c_str()); + +// int ret = system(str.c_str()); +printf("system start_enter_lowpwoer :%d\r\n",true); + +write_sleep_fifo(true); #endif } void stop_countdown() { #ifdef ENABLE_LOWPOWERMODE - system("sh /etc/hgkilltimer.sh"); +// int ret = system("sh /mnt/flash-disk/killtimer.sh"); +// printf("system stop_countdown :%d\r\n",ret); + //sleep(2); + printf("stop_countdown :%d\r\n",false); + + write_sleep_fifo(false); #endif } @@ -401,4 +414,54 @@ SMBType GetSMBType() { if(!g_sTypeio.get()) g_sTypeio = std::make_unique(CIS_T_S0, CIS_T_S1, CIS_T_S2, CIS_T_S3); return g_sTypeio->GetMotorType(); +} +int creat_sleep_fifo() +{ + if (access("/home/root/dev/", F_OK) == -1) + { + system("mkdir /home/root/dev/"); + } + int ret = mkfifo("/home/root/dev/sleep", 0666); + if (!ret) + { + perror("mkfifo"); + } + + sleep_fd_ = open("/home/root/dev/sleep", O_WRONLY); + if(sleep_fd_ < 0) + { + perror("open fifo fail"); + } + return sleep_fd_; +} + +int write_sleep_fifo(int status) +{ + if(sleep_fd_ < 0) + { + perror("write_sleep_fifo open fifo fail"); + return sleep_fd_; + } + + char buffer[12]; + sprintf(buffer,"%d",status); + printf("status:%d\r\n",status); + int ret = write(sleep_fd_,buffer,strlen(buffer)); + + return ret; +} + +//睡眠状态 //更新状态 等等 +int get_devs_status(std::string filename) +{ + std::ifstream in; + in.open(filename.c_str(),ios::in); + if (!in.is_open()) + { + return -1; + } + + char buf[1024] = { 0 }; + in >> buf; + return atoi(buf); } \ No newline at end of file diff --git a/utilsfunc.h b/utilsfunc.h index edbd4d8..0585f94 100644 --- a/utilsfunc.h +++ b/utilsfunc.h @@ -9,6 +9,7 @@ //static cv::Mat lutoldGrayMat; //灰色校正值 //static cv::Mat lutoldColorMat; //彩色校正值 static JsonConfig js_config; +static int sleep_fd_ = 0; //cv::Mat extractRepresentRow(const cv::Mat& src); @@ -48,3 +49,7 @@ CISVendor GetCisType(); /*获取扫描板类型*/ SMBType GetSMBType(); + +int creat_sleep_fifo(); +int write_sleep_fifo(int status); +int get_devs_status(std::string filename); \ No newline at end of file