class FEIControl < VEM
-- def initialize
-- puts "FEI initialize"
--
- #@@tem = WIN32OLE.new('TEMScripting.Instrument')
- @@tem = WIN32OLE.new('TEMScripting.Instrument')
-- end
--
-- def setStageA(x, y, z, a)
-- puts "FEI setStageA"
--
-- o,s = Open3.capture2("cscript vem/tool/setStageA.js " + x.to_s + " " + y.to_s + " " + z.to_s + " " + a.to_s)
-- position = o.lines.to_a[3]
-- puts position
-- return position
-- end
--
-- def setStageR(x, y, z, a)
--
-- puts "FEI setStageR"
- o,s = Open3.capture2("cscript ../../vem/tool/setStageR.js " + x.to_s + " "+ y.to_s + " " + z.to_s + " " + a.to_s)
- o,s = Open3.capture2("cscript vem/tool/setStageR.js " + x.to_s + " "+ y.to_s + " " + z.to_s + " " + a.to_s)
-- position = o.lines.to_a[3]
-- puts position
-- return position
-- end
--
-- def setSpotSize(spsize)
-- puts "FEI setSpotSize"
--
-- ill = @@tem.Illumination
-- ill.SpotsizeIndex = ill.SpotsizeIndex + spsize
-- return ill.SpotsizeIndex
-- end
--
-- def setMagnification(magsize)
-- puts "FEI setMagnification"
--
-- proj = @@tem.Projection
-- proj.MagnificationIndex = proj.MagnificationIndex + magsize
-- return proj.MagnificationIndex
-- end
-
- def acquisition
- puts "FEI acquisition"
-
- WIN32OLE.ole_initialize
- @@tem = WIN32OLE.new('TEMScripting.Instrument')
--
- # get acquitision object
- acq = @@tem.Acquisition
- def acquisitionInit(binning, expTime, imageSize)
- # get acquitision object
- @@acq = @@tem.Acquisition
-- # acquire an image from "CCD" camera
- acq.AddAcqDeviceByName("CCD")
- @@acq.AddAcqDeviceByName("CCD")
--
-- ## settings for acquisition parameters
-- # ccdCamerasAcqParams
- ccdCamerasAcqParams = acq.Cameras.Item(0).AcqParams
- ccdCamerasAcqParams = @@acq.Cameras.Item(0).AcqParams
-- # binning
- ccdCamerasAcqParams.Binning = 4
- ccdCamerasAcqParams.Binning = binning
-- # exposuretime
- ccdCamerasAcqParams.ExposureTime = 0.07
- ccdCamerasAcqParams.ExposureTime = expTime
-- # imagesize
- ccdCamerasAcqParams.ImageSize = 2
-
- # acquisition Image
- imageCollection = acq.AcquireImages
-
- img = imageCollection.Item(0)
- imgData = img.AsSafeArray
- return imgData.to_json
- ccdCamerasAcqParams.ImageSize = imageSize
-- end
-
- def acquisition255
- puts "FEI acquisition"
-
- WIN32OLE.ole_initialize
- @@tem = WIN32OLE.new('TEMScripting.Instrument')
-
- # get acquitision object
- acq = @@tem.Acquisition
- # acquire an image from "CCD" camera
- acq.AddAcqDeviceByName("CCD")
-
- # ---settings for acquisition parameters
-
- # ccdCamerasAcqParams
- ccdCamerasAcqParams = acq.Cameras.Item(0).AcqParams
- # binning
- ccdCamerasAcqParams.Binning = 4
- # exposuretime
- ccdCamerasAcqParams.ExposureTime = 0.07
- # imagesize
- ccdCamerasAcqParams.ImageSize = 0
-
- # ---end
--
- # acquisition Image
- def acquisition
- # acquisition Image
-- imageCollection = acq.AcquireImages
--
-- img = imageCollection.Item(0)
-- imgData = img.AsSafeArray
-
- imgLength = imgData.length
-
- # ---conversion
-
- #max, min
- imgMax = imgData.flatten.max
- imgMin = imgData.flatten.min
-
- #conversion factor for 255 scale
- conversion = 255/(imgMax.to_f - imgMin.to_f)
-
- img255 = Array.new(imgLength){ Array.new(imgLength) }
-
- imgLength.times do |x|
- imgLength.times do |y|
- img255[y][x] = ((imgData[x][y]-imgMin.to_f)*conversion).to_i
- end
- end
-
- # ---end
-
- puts imgLength
-
- return img255.to_json
- return imgData.to_json
-- end
--
-- def setObj(params)
-- puts "FEI setObj"
-- end
--
-- def setBeamTilt(params)
-- puts "FEI setBeamTilt"
- end
-
- def setSpeed(params)
- end
-
- def getCondition
- puts "FEI getCondition"
-- end
+
- def setSpeed(params)
- end
-
- def getCondition
- puts "FEI getCondition"
- end
++ @@params = {
++ "x" => 0,
++ "y" => 0,
++ "z" => 0,
++ "a" => 0
++ }
++
++ @@acq = nil
++
++
++ def initialize
++ puts "FEI initialize"
++
++ @@tem = WIN32OLE.new('TEMScripting.Instrument')
++ end
++
++ def get_params
++ puts "FEI get params"
++
++ @@params["x"] = @@tem.Stage.Position.X
++ @@params["y"] = @@tem.Stage.Position.Y
++ @@params["z"] = @@tem.Stage.Position.Z
++ @@params["a"] = @@tem.Stage.Position.A
++ return @@params
++ end
++
++ def set_stageA(x, y, z, a)
++ puts "FEI setStageA"
++
++ position = @@tem.Stage.Position
++ position.X = x*1e-7
++ position.Y = y*1e-7
++ position.Z = z*1e-7
++ position.A = a*(3.145159/180.0)
++
++ @@tem.Stage.GoTo(position, 15)
++ get_params
++ return @@params
++ end
++
++ def set_stageR(x, y, z, a)
++ puts "FEI setStageR"
++
++ position = @@tem.Stage.Position
++ position.X = position.X + x*1e-7
++ position.Y = position.Y + y*1e-7
++ position.Z = position.Z + z*1e-7
++ position.A = position.A + a*(3.145159/180.0)
++
++ @@tem.Stage.GoTo(position, 15)
++ get_params
++ return @@params
++ end
++
++ def set_spotsize(spsize)
++ puts "FEI setSpotSize"
++
++ ill = @@tem.Illumination
++ ill.SpotsizeIndex = ill.SpotsizeIndex + spsize
++ return ill.SpotsizeIndex
++ end
++
++ def set_magnification(magsize)
++ puts "FEI setMagnification"
++
++ proj = @@tem.Projection
++ proj.MagnificationIndex = proj.MagnificationIndex + magsize
++ return proj.MagnificationIndex
++ end
++
++ def acquisition_init(binning, expTime, imageSize)
++ # get acquitision object
++ @@acq = @@tem.Acquisition
++ # acquire an image from "CCD" camera
++ @@acq.AddAcqDeviceByName("CCD")
++
++ ## settings for acquisition parameters
++ # ccdCamerasAcqParams
++ ccdCamerasAcqParams = @@acq.Cameras.Item(0).AcqParams
++ # binning
++ ccdCamerasAcqParams.Binning = binning
++ # exposuretime
++ ccdCamerasAcqParams.ExposureTime = expTime
++ # imagesize
++ ccdCamerasAcqParams.ImageSize = imageSize
++ end
++
++ def acquisition
++ # acquisition Image
++ imageCollection = @@acq.AcquireImages
++
++ img = imageCollection.Item(0)
++ imgData = img.AsSafeArray
++ return imgData.to_json
++ end
++
++ def setObj(params)
++ puts "FEI setObj"
++ end
++
++ def setBeamTilt(params)
++ puts "FEI setBeamTilt"
++ end
++
++ def setSpeed(params)
++ end
++
++ def getCondition
++ puts "FEI getCondition"
++ end
end
--- /dev/null
- require '../vem/vem'
++$:.unshift(File.dirname(__FILE__))
++
+require 'win32ole'
+require 'open3'
+require 'json'
+
- def initialize
- puts "FEI initialize"
-
- #@@tem = WIN32OLE.new('TEMScripting.Instrument')
- end
-
- def setStageA(x, y, z, a)
- puts "FEI setStageA"
-
- o,s = Open3.capture2("cscript vem/tool/setStageA.js " + x.to_s + " " + y.to_s + " " + z.to_s + " " + a.to_s)
- position = o.lines.to_a[3]
- puts position
- return position
- end
-
- def setStageR(x, y, z, a)
-
- puts "FEI setStageR"
- o,s = Open3.capture2("cscript ../../vem/tool/setStageR.js " + x.to_s + " "+ y.to_s + " " + z.to_s + " " + a.to_s)
- position = o.lines.to_a[3]
- puts position
- return position
- end
-
- def setSpotSize(spsize)
- puts "FEI setSpotSize"
-
- ill = @@tem.Illumination
- ill.SpotsizeIndex = ill.SpotsizeIndex + spsize
- return ill.SpotsizeIndex
- end
-
- def setMagnification(magsize)
- puts "FEI setMagnification"
-
- proj = @@tem.Projection
- proj.MagnificationIndex = proj.MagnificationIndex + magsize
- return proj.MagnificationIndex
- end
-
- def acquisition
- puts "FEI acquisition"
-
- WIN32OLE.ole_initialize
- @@tem = WIN32OLE.new('TEMScripting.Instrument')
-
- # get acquitision object
- acq = @@tem.Acquisition
- # acquire an image from "CCD" camera
- acq.AddAcqDeviceByName("CCD")
-
- ## settings for acquisition parameters
- # ccdCamerasAcqParams
- ccdCamerasAcqParams = acq.Cameras.Item(0).AcqParams
- # binning
- ccdCamerasAcqParams.Binning = 4
- # exposuretime
- ccdCamerasAcqParams.ExposureTime = 0.07
- # imagesize
- ccdCamerasAcqParams.ImageSize = 2
-
- # acquisition Image
- imageCollection = acq.AcquireImages
-
- img = imageCollection.Item(0)
- imgData = img.AsSafeArray
- return imgData.to_json
- end
-
- def acquisition255
- puts "FEI acquisition"
-
- WIN32OLE.ole_initialize
- @@tem = WIN32OLE.new('TEMScripting.Instrument')
-
- # get acquitision object
- acq = @@tem.Acquisition
- # acquire an image from "CCD" camera
- acq.AddAcqDeviceByName("CCD")
-
- # ---settings for acquisition parameters
-
- # ccdCamerasAcqParams
- ccdCamerasAcqParams = acq.Cameras.Item(0).AcqParams
- # binning
- ccdCamerasAcqParams.Binning = 4
- # exposuretime
- ccdCamerasAcqParams.ExposureTime = 0.07
- # imagesize
- ccdCamerasAcqParams.ImageSize = 0
-
- # ---end
-
- # acquisition Image
- imageCollection = acq.AcquireImages
-
- img = imageCollection.Item(0)
- imgData = img.AsSafeArray
-
- imgLength = imgData.length
-
- # ---conversion
-
- #max, min
- imgMax = imgData.flatten.max
- imgMin = imgData.flatten.min
-
- #conversion factor for 255 scale
- conversion = 255/(imgMax.to_f - imgMin.to_f)
-
- img255 = Array.new(imgLength){ Array.new(imgLength) }
-
- imgLength.times do |x|
- imgLength.times do |y|
- img255[x][y] = ((imgData[y][x]-imgMin.to_f)*conversion).to_i
- end
- end
-
- # ---end
-
- puts imgLength
-
- return img255.to_json
- end
-
- def setObj(params)
- puts "FEI setObj"
- end
-
- def setBeamTilt(params)
- puts "FEI setBeamTilt"
- end
++require 'vem'
+
+
+
+class FEIControl < VEM
- def setSpeed(params)
- end
-
- def getCondition
- puts "FEI getCondition"
- end
+
++ @@params = {
++ "x" => 0,
++ "y" => 0,
++ "z" => 0,
++ "a" => 0
++ }
++
++ @@acq = nil
++
++
++ def initialize
++ puts "FEI initialize"
++
++ @@tem = WIN32OLE.new('TEMScripting.Instrument')
++ end
++
++ def get_params
++ puts "FEI get params"
++
++ @@params["x"] = @@tem.Stage.Position.X
++ @@params["y"] = @@tem.Stage.Position.Y
++ @@params["z"] = @@tem.Stage.Position.Z
++ @@params["a"] = @@tem.Stage.Position.A
++ return @@params
++ end
++
++ def set_stageA(x, y, z, a)
++ puts "FEI setStageA"
++
++ position = @@tem.Stage.Position
++ position.X = x*1e-7
++ position.Y = y*1e-7
++ position.Z = z*1e-7
++ position.A = a*(3.145159/180.0)
++
++ @@tem.Stage.GoTo(position, 15)
++ get_params
++ return @@params
++ end
++
++ def set_stageR(x, y, z, a)
++ puts "FEI setStageR"
++
++ position = @@tem.Stage.Position
++ position.X = position.X + x*1e-7
++ position.Y = position.Y + y*1e-7
++ position.Z = position.Z + z*1e-7
++ position.A = position.A + a*(3.145159/180.0)
++
++ @@tem.Stage.GoTo(position, 15)
++ get_params
++ return @@params
++ end
++
++ def set_spotsize(spsize)
++ puts "FEI setSpotSize"
++
++ ill = @@tem.Illumination
++ ill.SpotsizeIndex = ill.SpotsizeIndex + spsize
++ return ill.SpotsizeIndex
++ end
++
++ def set_magnification(magsize)
++ puts "FEI setMagnification"
++
++ proj = @@tem.Projection
++ proj.MagnificationIndex = proj.MagnificationIndex + magsize
++ return proj.MagnificationIndex
++ end
++
++ def acquisition_init(binning, expTime, imageSize)
++ # get acquitision object
++ @@acq = @@tem.Acquisition
++ # acquire an image from "CCD" camera
++ @@acq.AddAcqDeviceByName("CCD")
++
++ ## settings for acquisition parameters
++ # ccdCamerasAcqParams
++ ccdCamerasAcqParams = @@acq.Cameras.Item(0).AcqParams
++ # binning
++ ccdCamerasAcqParams.Binning = binning
++ # exposuretime
++ ccdCamerasAcqParams.ExposureTime = expTime
++ # imagesize
++ ccdCamerasAcqParams.ImageSize = imageSize
++ end
++
++ def acquisition
++ # acquisition Image
++ imageCollection = acq.AcquireImages
++
++ img = imageCollection.Item(0)
++ imgData = img.AsSafeArray
++ return imgData.to_json
++ end
++
++ def setObj(params)
++ puts "FEI setObj"
++ end
++
++ def setBeamTilt(params)
++ puts "FEI setBeamTilt"
++ end
++
++ def setSpeed(params)
++ end
++
++ def getCondition
++ puts "FEI getCondition"
++ end
+end
+
--require "../../vem/vem"
--require "../../vem/feicontrol"
++require "./vem"
++require "./feicontrol"
class TEST
def initialize
@@vem = VEM.create("fei")
end
-- def test_setStageA
-- @@vem.setStageA(2, 0, 0, 0)
++ def test_set_stageA
++ @@vem.set_stageA(3, 0, 0, 0)
end
-- def test_setStageR
-- @@vem.setStageR(1, 0, 0, 0)
++ def test_set_stageR
++ @@vem.set_stageR(1, 0, 0, 0)
end
-- def test_setSpotSize
-- @@vem.setSpotSize(1)
++ def test_set_spotsize
++ @@vem.set_spotsize(1)
end
-- def test_acquisition
++ def test_acq_init
++ @@vem.acquisition_init(4, 0.07, 0)
++ end
++
++ def test_acq
@@vem.acquisition
end
end
++test = TEST.new
++test.test_acq_init
++test.test_acq
--- /dev/null
- require "./vem/vem"
- require "./vem/feicontrol"
++require "./vem"
++require "./feicontrol"
+
+class TEST
+ def initialize
+ @@vem = VEM.create("fei")
+ end
+
- def test_setStageA
- @@vem.setStageA(2, 0, 0, 0)
++ def test_set_stageA
++ @@vem.set_stageA(3, 0, 0, 0)
+ end
+
- def test_setStageR
- @@vem.setStageR(1, 0, 0, 0)
++ def test_set_stageR
++ @@vem.set_stageR(1, 0, 0, 0)
+ end
+
- def test_setSpotSize
- @@vem.setSpotSize(1)
++ def test_set_spotsize
++ @@vem.set_spotsize(1)
+ end
+
- def test_acquisition
++ def test_acq_set
++ @@vem.acquisition_set()a
++ end
++
++ def test_acq
+ @@vem.acquisition
+ end
+end
+
++test = TEST.new
++test.test_setStageR
+