修复保存BMP图片文件BUG;打开设备后获取配置失败,则等待最多100ms
This commit is contained in:
parent
d514c6dc1e
commit
5dd444b458
|
@ -190,6 +190,17 @@ void hg_scanner::init(void)
|
||||||
for (auto& v : device_opt_json)
|
for (auto& v : device_opt_json)
|
||||||
pc += v;
|
pc += v;
|
||||||
ret = scanner_->option_get_all(opts);
|
ret = scanner_->option_get_all(opts);
|
||||||
|
if (ret != SCANNER_ERR_OK)
|
||||||
|
{
|
||||||
|
int times = 0, err = ret;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(5));
|
||||||
|
ret = scanner_->option_get_all(opts);
|
||||||
|
} while (ret != SCANNER_ERR_OK && times++ < 20);
|
||||||
|
utils::to_log(LOG_LEVEL_WARNING, "Failed to get options from device with err %d. wait %d times(%ums) and result = %d\n"
|
||||||
|
, err, times, times * 5, ret);
|
||||||
|
}
|
||||||
if (ret == SCANNER_ERR_OK)
|
if (ret == SCANNER_ERR_OK)
|
||||||
{
|
{
|
||||||
// merge two JSON texts ...
|
// merge two JSON texts ...
|
||||||
|
|
|
@ -69,7 +69,7 @@ class scanner_handler : public refer
|
||||||
{
|
{
|
||||||
MUTEX lock_reply_;
|
MUTEX lock_reply_;
|
||||||
std::vector<cmd_result*> reply_;
|
std::vector<cmd_result*> reply_;
|
||||||
async_usb_host* usb_;
|
async_usb_host* usb_;
|
||||||
volatile uint32_t status_;
|
volatile uint32_t status_;
|
||||||
|
|
||||||
std::function<void(uint32_t)> status_notify_;
|
std::function<void(uint32_t)> status_notify_;
|
||||||
|
|
|
@ -163,7 +163,21 @@ int image_holder::save_2_file(const char* root_dir, const char* alg)
|
||||||
{
|
{
|
||||||
fwrite(bfh.c_str(), 1, bfh.length(), dst);
|
fwrite(bfh.c_str(), 1, bfh.length(), dst);
|
||||||
fwrite(bih.c_str(), 1, bih.length(), dst);
|
fwrite(bih.c_str(), 1, bih.length(), dst);
|
||||||
fwrite(data() + head_.info_size, 1, head_.data_size, dst);
|
if(head_.data_size == ((LPBITMAPINFOHEADER)&bih[0])->biSizeImage)
|
||||||
|
fwrite(data() + head_.info_size, 1, head_.data_size, dst);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int l = BMP_LINE_BYTES(head_.width * head_.bpp * head_.channels),
|
||||||
|
dif = l - (head_.width * head_.bpp * head_.channels + 7) / 8;
|
||||||
|
char pad[4] = { 0 };
|
||||||
|
uint8_t *ptr = data() + head_.info_size;
|
||||||
|
for (int i = 0; i < head_.height; ++i)
|
||||||
|
{
|
||||||
|
fwrite(ptr, 1, l - dif, dst);
|
||||||
|
fwrite(pad, 1, dif, dst);
|
||||||
|
ptr += l - dif;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -385,6 +399,7 @@ dyn_mem::dyn_mem(void* buf, size_t size)
|
||||||
|
|
||||||
dyn_mem::~dyn_mem()
|
dyn_mem::~dyn_mem()
|
||||||
{
|
{
|
||||||
|
notify_progress(space_, len_, 0);
|
||||||
if (buf_)
|
if (buf_)
|
||||||
{
|
{
|
||||||
free(buf_);
|
free(buf_);
|
||||||
|
|
Loading…
Reference in New Issue