diff --git a/hgdriver/hgdev/hg_scanner_306.cpp b/hgdriver/hgdev/hg_scanner_306.cpp index f9f6972..a2b94c6 100644 --- a/hgdriver/hgdev/hg_scanner_306.cpp +++ b/hgdriver/hgdev/hg_scanner_306.cpp @@ -256,7 +256,7 @@ void hg_scanner_306::thread_handle_usb_read(void) break; } } - this_thread::sleep_for(chrono::milliseconds(10)); + //this_thread::sleep_for(chrono::milliseconds(10)); if (SCANNER_ERR_DEVICE_NOT_FOUND == ret) { @@ -538,6 +538,99 @@ int hg_scanner_306::get_img_data_7010() return ret; } } +int hg_scanner_306::get_img_data_7010_test() +{ + int ret = SCANNER_ERR_OK; + + USBCB usb{ setting3288dsp::GET_IMAGE, 0, 0 }; + { + setting3288dsp::HG_JpegCompressInfo info; + StopWatch sw; + { + std::lock_guard lock(io_lock_); + ret = writeusb(usb); + + io_->set_timeout(1000); + sw.reset(); + int len = sizeof(info); + ret = io_->read_bulk(&info, &len); + + //if (info.first_frame) + //{ + // frame_length_ = info.DataLength; + // frame_width_ = info.width; + // frame_hegiht_ = info.height; + // first_frame_total_ = info.index_frame; + // jpgdata_.clear(); + // jpgdata_.resize(frame_width_ * frame_hegiht_ * first_frame_total_); + // index_ = 0; + //} + if (info.last_frame) + { + //return 0; + std::vector data_; + data_.resize(frame_length_); + ret = io_->read_bulk(&data_[0], &frame_length_); + } + else + { + frame_length_ = info.DataLength; + + std::vector data_; + data_.resize(frame_length_); + ret = io_->read_bulk(&data_[0], &frame_length_); + + //i++; + //cv::ImreadModes rmc = cv::IMREAD_GRAYSCALE; + //cv::Mat mat = cv::imdecode(data_, rmc);//color BGR + //JpegDecode_.Put(mat,mat.cols * mat.rows); + //cv::imwrite("C:\\image\\imdecode" + std::to_string(i) + ".jpg", mat); + + } + } + + if (info.last_frame) + { + //return 0; + if (info.error_code) + { + std::vector().swap(jpgdata_); //回收空间 clear只能清空元素 + return 0; + } + //if (true) + //{ + // cv::ImreadModes rmc = cv::IMREAD_GRAYSCALE; + // cv::Mat mat = cv::imdecode(jpgdata_, rmc);//color BGR + // cv::imwrite("C:\\image\\imdecode" + std::to_string(1) + ".jpg", mat); + //} + + + return 0; + + int frame_ind = first_frame_total_ - last_frame_total_; + if (frame_ind < 0) + { + frame_ind = 0; + } + + mat_width = frame_width_; + mat_height = (frame_hegiht_ * first_frame_total_) - (frame_hegiht_ * frame_ind); + std::shared_ptr image_data_(aquire_memory(mat_width * mat_height)); + + unsigned int size1 = mat_height; + void* l = image_data_->data(0, &size1); + memcpy(l, jpgdata_.data(), mat_width * mat_height); + + ret = save_usb_data(image_data_); + index_ = 0; + + std::vector().swap(jpgdata_); //回收空间 clear只能清空元素 + + } + float v = sw.elapsed_ms(); + return ret; + } +} int hg_scanner_306::writedown_device_configuration(bool type,setting_hardware::HGSCANCONF_7010 *d) { if (!type) @@ -576,7 +669,7 @@ int hg_scanner_306::writedown_device_configuration(bool type,setting_hardware::H VLOG_MINI_1(LOG_LEVEL_WARNING, "writedown_device_configuration is_quality_ is .(%d)\n", is_quality_) d->params_7010.dpi = 1; } - if (image_prc_param_.bits.remove_morr && firmware_sup_morr_) + if (image_prc_param_.bits.remove_morr && firmware_sup_morr_ && resolution_ < 600) { d->params_7010.moire = true; } diff --git a/hgdriver/hgdev/hg_scanner_306.h b/hgdriver/hgdev/hg_scanner_306.h index 2bbf90e..5853fdd 100644 --- a/hgdriver/hgdev/hg_scanner_306.h +++ b/hgdriver/hgdev/hg_scanner_306.h @@ -71,6 +71,8 @@ private: /* 注意事项3:7010最后一帧主要作用是反馈当前纸张问题状态码 error_code */ /************************************************************************/ int get_img_data_7010(); + int get_img_data_7010_test(); + /*********************获取校正数据***************/ /* inx:序号 */ /* dpi:1--->200dpi 2--->300dpi 3--->600dpi */