Closedown

This commit is contained in:
gac-x04sa
2019-02-26 14:41:01 +01:00
parent b95412c6da
commit 295a3d491c
4 changed files with 67 additions and 3 deletions

View File

@@ -71,6 +71,11 @@ class Image(DeviceBase, Readable):
def get_int(self, filename = None):
if filename is None:
filename = self.pixel.get_image_filename()
print "Waiting image file: " + filename
wait_for_files([filename])
threshold1 = self.pixel.threshold1
threshold2 = self.pixel.threshold2
threshold3 = self.pixel.threshold3

View File

@@ -1,8 +1,10 @@
###################################################################################################
# Deployment specific global definitions - executed after startup.py
###################################################################################################
import os
import os.path
###################################################################################################
# Interlocks
###################################################################################################
@@ -263,9 +265,66 @@ def append_diag_datasets(parent = None):
log("Error sampling " + str(get_diag_name(f)) + ": " + str(sys.exc_info()[1]))
###################################################################################################
# Configuration
###################################################################################################
set_geometry(get_geometry(),True)
def is_locked(filepath):
"""Checks if a file is locked by opening it in append mode.
If no exception thrown, then the file is not locked.
"""
locked = None
file_object = None
if os.path.exists(filepath):
try:
print "Trying to open %s." % filepath
buffer_size = 8
# Opening file in append mode and read the first 8 characters.
file_object = open(filepath, 'a', buffer_size)
if file_object:
print "%s is not locked." % filepath
locked = False
except IOError, message:
print "File is locked (unable to open in append mode). %s." % \
message
locked = True
finally:
if file_object:
file_object.close()
print "%s closed." % filepath
else:
print "%s not found." % filepath
return locked
def wait_for_files(filepaths):
"""Checks if the files are ready.
For a file to be ready it must exist and can be opened in append
mode.
"""
wait_time = 5
for filepath in filepaths:
# If the file doesn't exist, wait wait_time seconds and try again
# until it's found.
while not os.path.exists(filepath):
print "%s hasn't arrived. Waiting %s seconds." % \
(filepath, wait_time)
time.sleep(wait_time)
# If the file exists but locked, wait wait_time seconds and check
# again until it's no longer locked by another process.
while is_locked(filepath):
print "%s is currently in use. Waiting %s seconds." % \
(filepath, wait_time)
time.sleep(wait_time)
###################################################################################################
# Configuration
###################################################################################################
set_geometry(get_geometry(),True)