1 $:.unshift(File.dirname(__FILE__))
10 def FEIObject.instance
12 @instance = WIN32OLE.new('TEMScripting.Instrument')
18 class FEIControl < VEM
22 @@tem = FEIObject.instance
48 @@params[:stage][:x] = @@tem.Stage.Position.X
49 @@params[:stage][:y] = @@tem.Stage.Position.Y
50 @@params[:stage][:z] = @@tem.Stage.Position.Z
51 @@params[:stage][:a] = @@tem.Stage.Position.A
52 @@params[:ill][:spotSizeIndex] = ill.SpotsizeIndex
53 @@params[:proj][:magIndex] = proj.MagnificationIndex
54 @@params[:ccdCamera][:binning] = ccdCamerasAcqParams.Binning
55 @@params[:ccdCamera][:expTime] = ccdCamerasAcqParams.ExposureTime
56 @@params[:ccdCamera][:imageSize] = ccdCamerasAcqParams.ImageSize
58 return @@params.to_json
61 def set_stageA(x, y, z, a)
64 position = @@tem.Stage.Position
68 position.A = a*(3.145159/180.0)
70 @@tem.Stage.GoTo(position, 15)
72 @@params[:stage][:x] = @@tem.Stage.Position.X
73 @@params[:stage][:y] = @@tem.Stage.Position.Y
74 @@params[:stage][:z] = @@tem.Stage.Position.Z
75 @@params[:stage][:a] = @@tem.Stage.Position.A
77 return @@params[:stage].to_json
80 def set_stageR(x, y, z, a)
84 position = @@tem.Stage.Position
85 position.X = position.X + x*1e-7
86 position.Y = position.Y + y*1e-7
87 position.Z = position.Z + z*1e-7
88 position.A = position.A + a*(3.145159/180.0)
90 @@tem.Stage.GoTo(position, 15)
92 @@params[:stage][:x] = @@tem.Stage.Position.X
93 @@params[:stage][:y] = @@tem.Stage.Position.Y
94 @@params[:stage][:z] = @@tem.Stage.Position.Z
95 @@params[:stage][:a] = @@tem.Stage.Position.A
97 return @@params[:stage].to_json
100 def set_spotsize(spsize)
101 puts "FEI setSpotSize"
103 ill = @@tem.Illumination
104 ill.SpotsizeIndex = ill.SpotsizeIndex + spsize
105 @@params[:ill][:spotSizeIndex] = ill.SpotsizeIndex
106 return @@params[:ill][:spotSizeIndex].to_json
109 def set_magnification(magsize)
110 puts "FEI setMagnification"
112 proj = @@tem.Projection
113 proj.MagnificationIndex = proj.MagnificationIndex + magsize
114 @@params[:proj][:magIndex] = proj.MagnificationIndex
115 return @@params[:proj][:magIndex]
118 def acquisition_init(binning, exp_time, image_size)
122 # get acquitision object
123 @@acq = @@tem.Acquisition
125 # acquire an image from "CCD" camera
126 @@acq.AddAcqDeviceByName("CCD")
128 ## settings for acquisition parameters
129 # ccdCamerasAcqParams
130 ccdCamerasAcqParams = @@acq.Cameras.Item(0).AcqParams
132 ccdCamerasAcqParams.Binning = binning
134 ccdCamerasAcqParams.ExposureTime = exp_time
136 ccdCamerasAcqParams.ImageSize = image_size
138 @@params[:ccdCamera][:binning] = ccdCamerasAcqParams.Binning
139 @@params[:ccdCamera][:expTime] = ccdCamerasAcqParams.ExposureTime
140 @@params[:ccdCamera][:imageSize] = ccdCamerasAcqParams.ImageSize
142 return @@params[:ccdCamera].to_json
146 @@acq = @@tem.Acquisition
149 imageCollection = @@acq.AcquireImages
150 img = imageCollection.Item(0)
151 return img.AsSafeArray
158 def set_beamtilt(params)
159 puts "FEI setBeamTilt"