Beispiel #1
0
    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
Beispiel #2
0
 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