OSDN Git Service

measure the time
[vem/vem.git] / vem / feicontrol.rb
1 $:.unshift(File.dirname(__FILE__))
2
3 require 'singleton'
4 require 'win32ole'
5 require 'open3'
6 require 'json'
7
8 require 'vem'
9
10 module TEMObject
11         @instance = nil
12         def TEMObject.instance
13                 unless @instance then
14                         @instance = WIN32OLE.new('TEMScripting.Instrument')
15                 end
16                 return @instance
17         end
18 end
19
20
21 class FEIControl < VEM
22         include TEMObject
23         @@params = {
24                 "x"          => 0,
25                 "y"          => 0,
26                 "z"          => 0,
27                 "a"          => 0,
28                 "binning"    => 1,
29                 "exptime"    => 1,
30                 "image_size" => 0
31         }
32
33         @@acq = nil
34
35         def initialize
36                 @@tem = TEMObject.instance
37         end
38
39         def get_params
40                 puts "FEI get params"
41
42                 @@tem = TEMObject.instance
43
44                 @@params["x"] = @@tem.Stage.Position.X
45                 @@params["y"] = @@tem.Stage.Position.Y
46                 @@params["z"] = @@tem.Stage.Position.Z
47                 @@params["a"] = @@tem.Stage.Position.A
48
49
50                 return @@params.to_json
51         end
52
53         def set_stageA(x, y, z, a)
54                 puts "FEI setStageA"
55
56
57                 position = @@tem.Stage.Position
58                 position.X = x*1e-7
59                 position.Y = y*1e-7
60                 position.Z = z*1e-7
61                 position.A = a*(3.145159/180.0)
62
63                 @@tem.Stage.GoTo(position, 15)
64                 get_params
65                 return @@params.to_json
66         end
67
68         def set_stageR(x, y, z, a)
69                 puts "FEI setStageR"
70
71                 position = @@tem.Stage.Position
72                 position.X = position.X + x*1e-7
73                 position.Y = position.Y + y*1e-7
74                 position.Z = position.Z + z*1e-7
75                 position.A = position.A + a*(3.145159/180.0)
76
77                 @@tem.Stage.GoTo(position, 15)
78                 get_params
79                 return @@params.to_json
80         end
81
82         def set_spotsize(spsize)
83                 puts "FEI setSpotSize"
84
85                 ill    = @@tem.Illumination
86                 ill.SpotsizeIndex = ill.SpotsizeIndex + spsize
87                 return ill.SpotsizeIndex
88         end
89
90         def set_magnification(magsize)
91                 puts "FEI setMagnification"
92
93                 proj = @@tem.Projection
94                 proj.MagnificationIndex = proj.MagnificationIndex + magsize
95                 return proj.MagnificationIndex
96         end
97
98         def acquisition_init(binning, exp_time, image_size)
99
100                 @@tem = TEMObject.instance
101
102                 # get acquitision object
103                 @@acq = @@tem.Acquisition
104
105                 # acquire an image from "CCD" camera
106                 @@acq.AddAcqDeviceByName("CCD")
107
108                 ## settings for acquisition parameters
109                 # ccdCamerasAcqParams
110                 ccdCamerasAcqParams = @@acq.Cameras.Item(0).AcqParams
111                 # binning
112                 ccdCamerasAcqParams.Binning = binning
113                 # exposuretime
114                 ccdCamerasAcqParams.ExposureTime = exp_time
115                 # imagesize
116                 ccdCamerasAcqParams.ImageSize = image_size
117                 return "#{ccdCamerasAcqParams.Binning}, #{ccdCamerasAcqParams.ExposureTime}, #{ccdCamerasAcqParams.ImageSize}"
118         end
119
120         def acquisition
121                 @@tem = TEMObject.instance
122                 @@acq = @@tem.Acquisition
123
124                 # acquisition Image
125                 imageCollection = @@acq.AcquireImages
126                 img     = imageCollection.Item(0)
127                 return img.AsSafeArray
128         end
129
130         def set_obj(params)
131                 puts "FEI setObj"
132         end
133
134         def set_beamtilt(params)
135                 puts "FEI setBeamTilt"
136         end
137
138 end
139