From 35e88f264cb022d7f1503850686f4726484d727b Mon Sep 17 00:00:00 2001 From: 13038267101 Date: Mon, 20 Mar 2023 12:09:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96=20?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=20=E8=AE=BE=E5=A4=87=E5=9E=8B=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/hg_scanner.cpp | 26 ++++++++++++++++++++++++- hgdriver/hgdev/hg_scanner.h | 2 ++ hgdriver/hgdev/hg_scanner_239.cpp | 32 +++++++++++++++++++++++++++++++ hgdriver/hgdev/hg_scanner_239.h | 1 + 4 files changed, 60 insertions(+), 1 deletion(-) diff --git a/hgdriver/hgdev/hg_scanner.cpp b/hgdriver/hgdev/hg_scanner.cpp index 62705ef..5265756 100644 --- a/hgdriver/hgdev/hg_scanner.cpp +++ b/hgdriver/hgdev/hg_scanner.cpp @@ -3664,7 +3664,7 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len) } else if (code == IO_CTRL_CODE_SET_SERIAL) { - string str = (char*)data; + string str = (char*)data; return set_serial_num((char*)data); } else if (code == IO_CTRL_CODE_GET_VIDPID) @@ -3674,6 +3674,26 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len) (*(int*)data) = num; return ret; } + else if (code == IO_CTRL_CODE_SET_DEVS_MODEL) + { + return set_device_model((char*)data); + } + else if (code == IO_CTRL_CODE_GET_DEVS_MODEL) + { + int num = 0; + string str = get_device_model(); + if (str.empty()) + { + return SCANNER_ERR_NO_DATA; + } + if (*len < str.size()) + { + *len = str.size(); + return SCANNER_ERR_INSUFFICIENT_MEMORY; + } + strcpy((char*)data, str.c_str()); + return SCANNER_ERR_OK; + } return SCANNER_ERR_DEVICE_NOT_SUPPORT; } std::string hg_scanner::get_firmware_version(void) @@ -3794,6 +3814,10 @@ int hg_scanner::set_auto_flat(int data) { return SCANNER_ERR_DEVICE_NOT_SUPPORT; } +int hg_scanner::set_device_model(string sts) +{ + return SCANNER_ERR_DEVICE_NOT_SUPPORT; +} int hg_scanner::set_serial_num(string str) { return SCANNER_ERR_DEVICE_NOT_SUPPORT; diff --git a/hgdriver/hgdev/hg_scanner.h b/hgdriver/hgdev/hg_scanner.h index bcf191b..3fa4ac4 100644 --- a/hgdriver/hgdev/hg_scanner.h +++ b/hgdriver/hgdev/hg_scanner.h @@ -477,6 +477,8 @@ public: virtual std::string get_serial_num(void); virtual std::string get_ip(void); virtual std::string get_device_model(void); + + virtual int set_device_model(string str); virtual int set_serial_num(string str) = 0; //设置序列号 virtual int set_vid_pid(int data) = 0; //设置vidpid virtual int get_vid_pid(int& data) = 0; //获取vidpid diff --git a/hgdriver/hgdev/hg_scanner_239.cpp b/hgdriver/hgdev/hg_scanner_239.cpp index a7a8d6e..1a155d3 100644 --- a/hgdriver/hgdev/hg_scanner_239.cpp +++ b/hgdriver/hgdev/hg_scanner_239.cpp @@ -1490,6 +1490,38 @@ std::string hg_scanner_239::get_device_model(void) return str; } +int hg_scanner_239::set_device_model(string str) +{ + if (str.empty()) + { + return SCANNER_ERR_NO_DATA; + } + string device_model = "/home/linaro/microtek_sn"; + + int ret = SCANNER_ERR_OK; + int buffersize = 0; + int len = device_model.size(); + int lenstr = str.size(); + io_->set_timeout(3000); + ret = write_register(setting3399::SR_SET_JSON_PATH, len); + if (ret != SCANNER_ERR_OK) + return ret; + + ret = io_->write_bulk(&device_model[0], &len); + if (ret != SCANNER_ERR_OK) + return ret; + + + ret = write_register(setting3399::SR_SET_JSON, lenstr); + if (ret != SCANNER_ERR_OK) + return ret; + + ret = io_->write_bulk(&str[0], &lenstr); + if (ret != SCANNER_ERR_OK) + return ret; +; + return SCANNER_ERR_OK; +} int hg_scanner_239::set_serial_num(string str) { int len = str.size(), diff --git a/hgdriver/hgdev/hg_scanner_239.h b/hgdriver/hgdev/hg_scanner_239.h index 79d30e7..a258750 100644 --- a/hgdriver/hgdev/hg_scanner_239.h +++ b/hgdriver/hgdev/hg_scanner_239.h @@ -88,6 +88,7 @@ public: virtual std::string get_ip(void)override; virtual std::string get_device_model(void); + virtual int set_device_model(string str); virtual int set_serial_num(string str) override; //设置序列号 virtual int set_vid_pid(int data) override; //设置vidpid virtual int get_vid_pid(int& data)override; //获取vidpid