OSDN Git Service

mkdir vemTest
[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                 puts "FEI initialize"
37
38                 @@tem = TEMObject.instance
39                 puts @@tem
40         end
41
42         def get_params
43                 puts "FEI get params"
44
45                 @@tem = TEMObject.instance
46
47                 @@params["x"] = @@tem.Stage.Position.X
48                 @@params["y"] = @@tem.Stage.Position.Y
49                 @@params["z"] = @@tem.Stage.Position.Z
50                 @@params["a"] = @@tem.Stage.Position.A
51
52
53                 return @@params.to_json
54         end
55
56         def set_stageA(x, y, z, a)
57                 puts "FEI setStageA"
58
59
60                 position = @@tem.Stage.Position
61                 position.X = x*1e-7
62                 position.Y = y*1e-7
63                 position.Z = z*1e-7
64                 position.A = a*(3.145159/180.0)
65
66                 @@tem.Stage.GoTo(position, 15)
67                 get_params
68                 return @@params.to_json
69         end
70
71         def set_stageR(x, y, z, a)
72                 puts "FEI setStageR"
73
74                 position = @@tem.Stage.Position
75                 position.X = position.X + x*1e-7
76                 position.Y = position.Y + y*1e-7
77                 position.Z = position.Z + z*1e-7
78                 position.A = position.A + a*(3.145159/180.0)
79
80                 @@tem.Stage.GoTo(position, 15)
81                 get_params
82                 return @@params.to_json
83         end
84
85         def set_spotsize(spsize)
86                 puts "FEI setSpotSize"
87
88                 ill    = @@tem.Illumination
89                 ill.SpotsizeIndex = ill.SpotsizeIndex + spsize
90                 return ill.SpotsizeIndex
91         end
92
93         def set_magnification(magsize)
94                 puts "FEI setMagnification"
95
96                 proj = @@tem.Projection
97                 proj.MagnificationIndex = proj.MagnificationIndex + magsize
98                 return proj.MagnificationIndex
99         end
100
101         def acquisition_init(binning, exp_time, image_size)
102
103                 @@tem = TEMObject.instance
104
105                 # get acquitision object
106                 @@acq = @@tem.Acquisition
107
108                 # acquire an image from "CCD" camera
109                 @@acq.AddAcqDeviceByName("CCD")
110
111                 ## settings for acquisition parameters
112                 # ccdCamerasAcqParams
113                 ccdCamerasAcqParams = @@acq.Cameras.Item(0).AcqParams
114                 # binning
115                 ccdCamerasAcqParams.Binning = binning
116                 # exposuretime
117                 ccdCamerasAcqParams.ExposureTime = exp_time
118                 # imagesize
119                 ccdCamerasAcqParams.ImageSize = image_size
120                 return "#{ccdCamerasAcqParams.Binning}, #{ccdCamerasAcqParams.ExposureTime}, #{ccdCamerasAcqParams.ImageSize}"
121         end
122
123         def acquisition
124                 @@tem = TEMObject.instance
125
126                 # acquisition Image
127                 imageCollection = @@acq.AcquireImages
128                 img     = imageCollection.Item(0)
129                 return img.AsSafeArray
130         end
131
132         def set_obj(params)
133                 puts "FEI setObj"
134         end
135
136         def set_beamtilt(params)
137                 puts "FEI setBeamTilt"
138         end
139
140 end
141