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