From 947e525ce8d098eda0d969cd19698f7a521d01fc Mon Sep 17 00:00:00 2001 From: modehua Date: Tue, 10 Oct 2023 03:12:15 -0700 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BD=8E=E5=8A=9F=E8=80=97?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HCamDevice.cpp | 21 +++++++++++++++++---- ICapturer.h | 2 ++ Keyboard.cpp | 13 +++++++++---- MultiFrameCapture.cpp | 7 ++++++- MultiFrameCapture.h | 4 ++++ Scanner.cpp | 22 +++++++++++++++------- Scanner.h | 6 ++---- 7 files changed, 55 insertions(+), 20 deletions(-) diff --git a/HCamDevice.cpp b/HCamDevice.cpp index e7d7a1a..8bb00ce 100644 --- a/HCamDevice.cpp +++ b/HCamDevice.cpp @@ -982,10 +982,23 @@ void HCamDevice::HtCamWriteADCReg(uint8_t addr, uint8_t data) void HCamDevice::HtCamSetLowPower(bool val) { - CamZ_Reg_4_New low_power ; - low_power.value = HtCamReadFpgaRegs(0x04); - low_power.soft_rst_n = val; - HtCamWriteFpgaRegs(0x04 , low_power.value); + if (val) + { + printf("重置\r\n"); + ioctl(subDevicefd,200,NULL); + } + else + { + printf("val :%d\r\n",val); + CamZ_Reg_4_New low_power ; + low_power.value = HtCamReadFpgaRegs(0x04); + low_power.soft_rst_n = val; + HtCamWriteFpgaRegs(0x04 , low_power.value); + + low_power.value = HtCamReadFpgaRegs(0x04); + printf("low_power:%d\r\n",low_power.soft_rst_n); + } + } void HCamDevice::HtCamReadADCReg_ALL(uint8_t addr) diff --git a/ICapturer.h b/ICapturer.h index d329e43..51f99b6 100644 --- a/ICapturer.h +++ b/ICapturer.h @@ -52,6 +52,8 @@ public: virtual void setScanFlag(bool brun) = 0; + virtual void SetLowPower(bool islow) = 0; + protected: std::shared_ptr m_capFpageregs; BlockingQueue m_v4l2data; diff --git a/Keyboard.cpp b/Keyboard.cpp index 00c5419..9a35f88 100644 --- a/Keyboard.cpp +++ b/Keyboard.cpp @@ -2,9 +2,9 @@ #include #include -#define KEYCODE_POWER 62 +#define KEYCODE_POWER 116 #define KEYCODE_START 60 -#define KEYCODE_STOP 61 +#define KEYCODE_STOP 115 namespace huagao { @@ -163,11 +163,15 @@ namespace huagao { if (!b_lowpwoer) //未进入低功耗 则触发低功耗模式 { - b_lowpwoer = !b_lowpwoer; + b_lowpwoer = true; m_event(2); } else //已进入低功耗模式 + { b_lowpwoer = false; + m_event(3); + } + } else { @@ -175,10 +179,11 @@ namespace huagao } break; case KEYCODE_START: + printf("KEYCODE_START\r\n"); m_event(0); break; case KEYCODE_STOP: - LOG("stop KEYCODE_STOP pressed!\n"); + printf("stop KEYCODE_STOP pressed!\n"); m_event(1); break; default: diff --git a/MultiFrameCapture.cpp b/MultiFrameCapture.cpp index c271113..785c2dd 100644 --- a/MultiFrameCapture.cpp +++ b/MultiFrameCapture.cpp @@ -139,6 +139,11 @@ void *MultiFrameCapture::readFrameTest(int timeout) { return nullptr; } +void MultiFrameCapture::SetLowPower(bool islow) +{ + video->HtCamSetLowPower(islow); +} + #include uint32_t MultiFrameCapture::compute_frame(int paper_size,int dpi) { @@ -249,7 +254,7 @@ void MultiFrameCapture::setFanMode(int mode) void MultiFrameCapture::fpgaReload() { - + } bool MultiFrameCapture::capturerImage() diff --git a/MultiFrameCapture.h b/MultiFrameCapture.h index 1ef4a45..5b03a2d 100644 --- a/MultiFrameCapture.h +++ b/MultiFrameCapture.h @@ -115,6 +115,8 @@ private: SIZE GetPaperSize(PaperSize paper, int dpi); uint32_t compute_frame(int paper_size,int dpi); //计算固定幅面需要采集的帧数 void compute_height(int width,int height); //在open 之前调用 +public: + public: MultiFrameCapture(ScannerGlue glue, CISVendor vendor); @@ -159,4 +161,6 @@ public: virtual void clearimages() override; virtual void setScanFlag(bool brun) override; + + virtual void SetLowPower(bool islow); }; \ No newline at end of file diff --git a/Scanner.cpp b/Scanner.cpp index b5d955e..8da5726 100644 --- a/Scanner.cpp +++ b/Scanner.cpp @@ -6,9 +6,10 @@ #include "SysInforTool.h" #include "USBProtocol.h" -#define BTNSTART 0 -#define BTNSTOP 1 -#define BTNPOWER 2 +#define BTN_START 0 +#define BTN_STOP 1 //按键停止扫描 +#define BTN_LOW_POWER 2 //按键低功耗 +#define BTN_NORMAL_POWER 3 //按键正常模式 (退出低功耗) Scanner::Scanner(ScannerGlue glue) : motorZouzhi(), @@ -49,18 +50,25 @@ Scanner::Scanner(ScannerGlue glue) { if (!IsScanning()) //未扫描 { - if (eventtype == BTNPOWER) + if (eventtype == BTN_LOW_POWER) { - system("echo mem > /sys/power/state"); + //system("echo mem > /sys/power/state"); + //capturer->SetLowPower(0); + system("/mnt/flash-disk/low_power.sh 1"); } - else if (eventtype == BTNSTART) + 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"); + } } else //扫描中 { - if (eventtype == BTNSTOP) + if (eventtype == BTN_STOP) { put(S_EVT_STOP_SCAN); LOG("BTN_STOP put(S_EVT_STOP_SCAN)"); diff --git a/Scanner.h b/Scanner.h index bd95b97..f3b4b01 100644 --- a/Scanner.h +++ b/Scanner.h @@ -53,16 +53,14 @@ public: void stop_scan() { printf("!!!!!!!!!!!!!!!!!!!!!stop_scan() waitting snap session done \n"); - //sensor->enableDoubleSensor(false); + sensor->cancelWaitPaper(); m_DstScannum = 0; - //LOG("!!!!!!!!!!!!!!!!!!!!!!!!!!stop_scan() waitting snap session done \n"); if (threadRunScan.joinable()) threadRunScan.join(); motorZouzhi.stop(); motorCuozhi.stop(); - // std::this_thread::sleep_for(std::chrono::milliseconds(200)); - //capturer->close(); + put(S_EVT_SCAN_STOPPED); SaveScaninfo(m_scaninfo); start_enter_lowpwoer();