Closedown

This commit is contained in:
sfop
2016-07-06 10:00:39 +02:00
parent 4c4d8eb1e3
commit e31d752dc5
3 changed files with 49 additions and 37 deletions

View File

@@ -11,7 +11,6 @@
import org.apache.commons.math3.linear.Array2DRowRealMatrix as Matrix
import ch.psi.utils.Convert.toBidimensional as mono_to_bidi
import datetime
from camtool import CamTool
#run("camtool")
@@ -38,29 +37,16 @@ plot_name = datetime.datetime.fromtimestamp(time.time()).strftime('%H%M%S')
add_device(CamTool("camtool") , True)
camtool.enableBackground (use_background)
number_images = 1
use_background = True
multiple_background = True
number_backgrounds = 5
cam_x =camtool.cam_x # Channel("SINEG01-DSCR190:profile.X_stats.com", alias = "cam_x")
cam_y = camtool.cam_y #Channel("SINEG01-DSCR190:profile.Y_stats.com", alias = "cam_y")
profile_x = camtool.profile_x #Channel("SINEG01-DSCR190:profile.X", alias = "profile_x")
profile_y = camtool.profile_y #Channel("SINEG01-DSCR190:profile.Y", alias = "profile_y")
cam_raw_data = camtool.cam_image #Channel("SINEG01-DSCR190:data")
class CameraImage(ReadableMatrix):
def read(self):
raw = cam_raw_data.read()
return Matrix(mono_to_bidi(raw, self.getHeight(), self.getWidth())).transpose().getData() #data is transposed
#return mono_to_bidi(raw, self.getWidth(), self.getHeight())
def getWidth(self):
return self._width
def getHeight(self):
return self._height
cam_img = CameraImage()
cam_img._width = len(profile_x.read())
cam_img._height = len(profile_y.read())
def ccr(mag):
@@ -117,7 +103,7 @@ def ar():
r = None
laser_on()
try:
sensors = [cam_x, cam_y, cam_img] if plot_image else [cam_x, cam_y]
sensors = [cam_x, cam_y, camtool.image] if plot_image else [cam_x, cam_y]
r = lscan(gun_solenoid, sensors , I1, I2, dI, settling_time, before_read = br, after_read = ar)
finally:
laser_off()
@@ -136,10 +122,8 @@ if do_elog:
msg = msg + "\n\n" + r.print()
elog("Gun solenoid current scan", msg , get_plot_snapshots())
print "QUITING"
set_return([r, hx,hy])
print "QUIT"

View File

@@ -1,5 +1,27 @@
#import ch.psi.pshell.device.DeviceBase as DeviceBase
from startup import *
import ch.psi.utils.Convert.toBidimensional as mono_to_bidi
class CamToolImage(ReadableMatrix):
def __init__(self, camtool):
self.camtool = camtool
shape = camtool.cam_shape.read()
self.width = shape[1] #len(camtool.profile_x.read())
self.height = shape[0] #len(camtool.(profile_y.read())
def read(self):
raw = self.camtool.cam_data.read()
return Matrix(mono_to_bidi(raw, self.getHeight(), self.getWidth())).transpose().getData() #data is transposed
#return mono_to_bidi(raw, self.getWidth(), self.getHeight())
def getWidth(self):
return self.width
def getHeight(self):
return self.height
class CamTool(DeviceBase):
def __init__(self, name, prefix = "cam:", latch = False):
@@ -16,13 +38,15 @@ class CamTool(DeviceBase):
self.cam_y = Channel(self.data_prefix + "y_stats.com", alias = "cam_y")
self.profile_x = Channel(self.data_prefix + "profile.x", alias = "profile_x")
self.profile_y = Channel(self.data_prefix + "profile.y", alias = "profile_y")
self.cam_image = Channel(self.data_prefix + "image", alias = "cam_image")
self.cam_image_shape = Channel(self.data_prefix + "image.shape", alias = "cam_image_shape") #[D1, D2, ...]
self.cam_data = Channel(self.data_prefix + "image", alias = "cam_data")
self.cam_shape = Channel(self.data_prefix + "image.shape", alias = "cam_image_shape") #[D1, D2, ...]
self.cam_bg_image = Channel(self.data_prefix + "bg_image", alias = "cam_bg_image") #[D1, D2, ...]
self.cam_bg_en = Channel(self.prefix + "bg.enabled", type = 'l', alias = "cam_bg_en")
self.cam_bg_capture = Channel(self.prefix + "bg.capture", type = 'l', alias = "cam_bg_capture")
self.cam_bg_capture_remain = Channel(self.prefix + "bg.capture_remain", alias = "cam_bg_capture_remain")
self.image = CamToolImage(self)
def doInitialize(self):
@@ -39,13 +63,16 @@ class CamTool(DeviceBase):
def capture(self):
timestamp = self.timestamp.read()
if self.latch:
self.cam_latch.write(1)
else:
if not self.latch:
self.cam_run.write(1)
while(timestamp == self.timestamp.read()):
time.sleep(0.001)
self.triggerValueChanged(timestamp, None)
while(True):
val = self.timestamp.read()
if timestamp != val:
self.setCache(val)
break
if self.latch:
self.cam_latch.write(1)
time.sleep(0.001)
def doUpdate(self):
self.capture()
@@ -73,8 +100,8 @@ class CamTool(DeviceBase):
self.cam_y.close()
self.profile_x.close()
self.profile_y.close()
self.cam_image.close()
self.cam_image_shape.close()
self.cam_data.close()
self.cam_shape.close()
self.cam_bg_image.close()
self.cam_bg_en.close()
self.cam_bg_capture.close()
@@ -89,8 +116,9 @@ if __name__ == "__builtin__":
camera_tool.enableBackground(False)
camera_tool.enableBackground(True)
camera_tool.captureBackground(5)
camera_tool.capture()
for i in range (100):
camera_tool.capture()
print camera_tool.take()
print camera_tool.cam_x.read(), camera_tool.cam_y.read()
add_device(camera_tool, True)

View File

@@ -189,7 +189,7 @@ def add_convex_hull_plot(title, x,y, name=None, clear = False, x_range = None, y
(hx,hy) = convex_hull(x=x, y=y)
hx.append(hx[0]); hy.append(hy[0])
hull.setLineWidth(2)
hull.setData(hx,hy)
hull.setData(to_array(hx,'d') , to_array(hy,'d'))
hull.setColor(s.color)
return [hx,hy]