diff --git a/script/device/Image.py b/script/device/Image.py index 1520dae..06500cd 100644 --- a/script/device/Image.py +++ b/script/device/Image.py @@ -1,4 +1,5 @@ from shutil import copyfile +import threading class ImageIntensity(DeviceBase, Readable): @@ -62,7 +63,8 @@ class Image(DeviceBase, Readable): self.corrected_intensity = ImageCorrectedIntensity(self) self.last_filename = None self.last_image = None - self.current_reading = None + #self.current_reading = None + self.image_lock = threading.Lock() def get_int(self, filename = None): @@ -98,30 +100,31 @@ class Image(DeviceBase, Readable): filename = self.pixel.get_full_path() + filename filename = str(filename) - print filename == self.last_filename, filename == self.current_reading #, filename, self.last_filename, self.current_reading - if filename == self.last_filename: - return self.last_image - elif filename == self.current_reading: - print "Current" - while self.current_reading is not None: - time.sleep(0.005) - return self.last_image - self.current_reading = filename - print "Reading image : " + filename + self.image_lock.acquire() try: - ret = img_read(filename, self.pixel.image_header_length, self.pixel.PIX_XDIM, self.pixel.PIX_YDIM,self.pixel.PIX_COLOR_DEPTH) - except: - log("Error reading data file: " + str(filename) + " - " + str(sys.exc_info()[1]), False) - self.last_filename = None - self.last_image = None - self.current_reading = None - return None - ret = Convert.reshape(ret, self.pixel.PIX_YDIM, self.pixel.PIX_XDIM) - self.last_filename = filename - self.last_image = ret - self.current_reading = None - return ret - + if filename == self.last_filename: + return self.last_image + #elif filename == self.current_reading: + # while self.current_reading is not None: + # time.sleep(0.005) + # return self.last_image + #self.current_reading = filename + print "Reading image : " + filename + try: + ret = img_read(filename, self.pixel.image_header_length, self.pixel.PIX_XDIM, self.pixel.PIX_YDIM,self.pixel.PIX_COLOR_DEPTH) + except: + log("Error reading data file: " + str(filename) + " - " + str(sys.exc_info()[1]), False) + self.last_filename = None + self.last_image = None + #self.current_reading = None + return None + ret = Convert.reshape(ret, self.pixel.PIX_YDIM, self.pixel.PIX_XDIM) + self.last_filename = filename + self.last_image = ret + #self.current_reading = None + return ret + finally: + self.lock.release def read(self): return self.get_int()