From: Bastian Dehn Date: Fri, 9 Feb 2024 17:18:07 +0000 (+0100) Subject: read per lines X-Git-Tag: v1.0.0^2~316 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=5dc34d74ba23dd44b32bfb4dc0601cc75b740208;p=sane-kds-s2000w-net.git read per lines --- diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 0a95758..c2ed402 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -217,16 +217,20 @@ SANE_Status _sane_kds_s2000w_net_start(SANE_Handle handle) return SANE_STATUS_GOOD; } +int readed_bytes_per_line = 0; +int readed_lines = 0; + SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, SANE_Int max_length, SANE_Int* length) { printf("is all scanned: %i\n", current_metadata.scanned_all_complete); char* image_data = (char*) current_metadata.image; - if (read_size >= current_metadata.size) { + if (readed_lines >= current_metadata.lines ) { printf("Image is loaded\n"); read_size = 0; *length = 0; + readed_lines = 0; return SANE_STATUS_EOF; } @@ -241,16 +245,25 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, return SANE_STATUS_CANCELLED; } - if (read_size <= current_metadata.size - max_length) { - *length = max_length; - memcpy(data, current_metadata.image + read_size, *length); + + int maxlen = 0; + if (current_metadata.bytes_per_line < max_length) { + maxlen = current_metadata.bytes_per_line - readed_bytes_per_line; } else { - *length = current_metadata.size - read_size; - memcpy(data, current_metadata.image + read_size, *length); + maxlen = max_length - readed_bytes_per_line; } + *length = maxlen; + memcpy(data, current_metadata.image + read_size, *length); + + readed_bytes_per_line += *length; read_size += *length; + if (readed_bytes_per_line >= current_metadata.bytes_per_line) { + readed_bytes_per_line = 0; + readed_lines++; + } + printf("length: %i\n", *length); printf("read size: %i\n", read_size);