OSDN Git Service

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