def __init__(self, scanner): self.__scanner = scanner self.__is_scanning = True self.__raw_output = [] self.__img = None self.__scanner._open() rawapi.sane_start(sane_dev_handle[1]) try: self.__parameters = \ rawapi.sane_get_parameters(sane_dev_handle[1]) except Exception: rawapi.sane_cancel(sane_dev_handle[1]) raise
def read(self): try: if not self.__is_scanning: rawapi.sane_start(sane_dev_handle[1]) self.__is_scanning = True self.__must_clean = True self.__parameters = \ rawapi.sane_get_parameters(sane_dev_handle[1]) return try: self.__raw_output.append(rawapi.sane_read(sane_dev_handle[1], SANE_READ_BUFSIZE)) except EOFError: raw = b''.join(self.__raw_output) self.__imgs.append(ImgUtil.raw_to_img(raw, self.__parameters)) self.__is_scanning = False self.__raw_output = [] raise except StopIteration: rawapi.sane_cancel(sane_dev_handle[1]) self.__must_clean = False self.__is_scanning = False raise