@buf["type"] = "connection"
@buf["data"] = "open"
ws.send(@buf.to_json)
+ @request = Request.new('acq', nil)
end
ws.onmessage do |msg|
+ result = Benchmark.realtime do
rec_buf = JSON.parse(msg)
if(rec_buf["type"]=="req")
if(rec_buf["data"]=="img")
- request = Request.new('acq', nil)
- @camera_host.put_request(request)
+ @camera_host.put_request(@request)
@buf["type"] = "img"
- @buf["data"] = request.get_result
+ @buf["data"] = @request.get_result
@buf["count"] = @count
ws.send(@buf.to_json)
@count = @count + 1
+ @request = Request.new('acq', nil)
end
end
+ end
+ puts "#{result}"
end
ws.onclose do
$:.unshift(File.dirname(__FILE__))
+require 'benchmark'
require 'json'
require '../vem/vem'
require '../vem/mock'
def execute
@vem = VEM.create(@em)
- puts "execute #{@command}"
+ #puts "execute #{@command}"
case @command
when "get"
@result = @vem.get_params
+ when "vacuum_status"
+ @result = @vem.get_vacuum_status
+ puts "flag"
when "stagea"
@result = @vem.set_stageA(@params["x"].to_i, @params["y"].to_i, @params["z"].to_i, @params["a"].to_i)
when "stager"
image = @vem.acquisition
converted_image = convert_256(image)
@result = converted_image.to_json
- when "start"
- serial_camera = SerialCamera.instance
- serial_camera.on_flag
- @result = "start serial_camera"
- when "stop"
- serial_camera = SerialCamera.instance
- serial_camera.off_flag
- @result = "stop serial_camera"
else
puts "else"
end
- puts "request complete"
@complete = true
@cv.broadcast
end
def get_result
@mutex.synchronize do
@cv.wait(@mutex) while (@complete == false)
- puts "resturn result"
return @result
end
end
return request.get_result
end
+ get '/:emname/get/:command' do
+ headers \
+ "Access-Control-Allow-origin" => "*"
+ request = Request.new(params["command"], nil)
+ @@channel.put_request(request)
+ return request.get_result
+ end
+
get '/:emname/set/:command' do
headers \
"Access-Control-Allow-origin" => "*"
:spotSizeIndex => 0,
:condenserStg => {:x => 0, :y => 0}
+ },
+ :vacuum => {
+ :p1 => 0,
+ :p2 => 0,
+ :p3 => 0,
+ :p4 => 0,
+ :p5 => 0,
+ :p8 => 0
}
}
end
@@params[:stage][:a] = @@tem.Stage.Position.A
@@params[:ill][:spotSizeIndex] = @@tem.Illumination.SpotsizeIndex
@@params[:proj][:magIndex] = @@tem.Projection.MagnificationIndex
+ @@params[:proj][:defocus] = @@tem.Projection.Defocus*1000000000
@@params[:proj][:mag] = @@tem.Projection.Magnification
@@params[:proj][:imageBeamShift][:x] = @@tem.Projection.ImageBeamShift.x
@@params[:proj][:imageBeamShift][:y] = @@tem.Projection.ImageBeamShift.y
@@params[:proj][:focus] = @@tem.Projection.Focus
- @@params[:proj][:defocus] = @@tem.Projection.Defocus
# @@params[:ccdCamera][:binning] = ccdCamerasAcqParams.Binning
# @@params[:ccdCamera][:expTime] = ccdCamerasAcqParams.ExposureTime
# @@params[:ccdCamera][:imageSize] = ccdCamerasAcqParams.ImageSize
proj = @@tem.Projection
proj.Defocus = proj.Defocus + params*1e-9
- @@params[:proj][:defocus] = proj.Defocus
+ @@params[:proj][:defocus] = proj.Defocus*1000000000
return @@params[:proj][:defocus].to_json
end
proj = @@tem.Projection
proj.ResetDefocus
- @@params[:proj][:defocus] = proj.Defocus
+ @@params[:proj][:defocus] = proj.Defocus*1000000000
return @@params[:proj][:defocus].to_json
end
ccdCamerasAcqParams.ExposureTime = exp_time
# imagesize
ccdCamerasAcqParams.ImageSize = image_size
+ # image correction
+ # ccdCamerasAcqParams.ImageCorrection = 1
@@params[:ccdCamera][:binning] = ccdCamerasAcqParams.Binning
@@params[:ccdCamera][:expTime] = ccdCamerasAcqParams.ExposureTime
puts "FEI setBeamTilt"
end
+ def get_vacuum_status
+ puts "FEI getVacuumStatus"
+
+ @@params[:vacuum][:p1] = @@tem.Vacuum.Gauges.Item(0).Pressure
+ @@params[:vacuum][:p2] = @@tem.Vacuum.Gauges.Item(1).Pressure
+ @@params[:vacuum][:p3] = @@tem.Vacuum.Gauges.Item(2).Pressure
+ @@params[:vacuum][:p4] = @@tem.Vacuum.Gauges.Item(3).Pressure
+ @@params[:vacuum][:p5] = @@tem.Vacuum.Gauges.Item(4).Pressure
+ @@params[:vacuum][:p8] = @@tem.Vacuum.Gauges.Item(5).Pressure
+
+ return @@params[:vacuum].to_json
+ end
+
end
:proj => {
:magIndex => 0,
:mag => 0,
- :imageShift => {:x => 0, :y => 0},
+ :imageBeamShift => {:x => 0, :y => 0},
:focus => 0,
:defocus => 0,
:objStg => {:x => 0, :y => 0}
:spotSizeIndex => 0,
:condenserStg => {:x => 0, :y => 0}
+ },
+ :vacuum => {
+ :p1 => 0,
+ :p2 => 0,
+ :p3 => 0,
+ :p4 => 0,
+ :p5 => 0,
+ :p8 => 0
}
}
end
@@params[:stage][:a] = @@tem.Stage.Position.A
@@params[:ill][:spotSizeIndex] = @@tem.Illumination.SpotsizeIndex
@@params[:proj][:magIndex] = @@tem.Projection.MagnificationIndex
+ @@params[:proj][:defocus] = @@tem.Projection.Defocus*1000000000
+ @@params[:proj][:mag] = @@tem.Projection.Magnification
+ @@params[:proj][:imageBeamShift][:x] = @@tem.Projection.ImageBeamShift.x
+ @@params[:proj][:imageBeamShift][:y] = @@tem.Projection.ImageBeamShift.y
+ @@params[:proj][:focus] = @@tem.Projection.Focus
# @@params[:ccdCamera][:binning] = ccdCamerasAcqParams.Binning
# @@params[:ccdCamera][:expTime] = ccdCamerasAcqParams.ExposureTime
# @@params[:ccdCamera][:imageSize] = ccdCamerasAcqParams.ImageSize
return @@params[:proj].to_json
end
- def set_image_beam_shift(x, y)
+ def set_image_beamshift(x, y)
puts "FEI setImageShift"
proj = @@tem.Projection
proj = @@tem.Projection
proj.Defocus = proj.Defocus + params*1e-9
- @@params[:proj][:defocus] = proj.Defocus
+ @@params[:proj][:defocus] = proj.Defocus*1000000000
return @@params[:proj][:defocus].to_json
end
proj = @@tem.Projection
proj.ResetDefocus
- @@params[:proj][:defocus] = proj.Defocus
+ @@params[:proj][:defocus] = proj.Defocus*1000000000
return @@params[:proj][:defocus].to_json
end
ccdCamerasAcqParams.ExposureTime = exp_time
# imagesize
ccdCamerasAcqParams.ImageSize = image_size
+ # image correction
+ # ccdCamerasAcqParams.ImageCorrection = 1
@@params[:ccdCamera][:binning] = ccdCamerasAcqParams.Binning
@@params[:ccdCamera][:expTime] = ccdCamerasAcqParams.ExposureTime
# acquisition Image
imageCollection = @@acq.AcquireImages
img = imageCollection.Item(0)
- puts img
return img.AsSafeArray
end
puts "FEI setBeamTilt"
end
+ def get_vacuum_status
+ puts "FEI getVacuumStatus"
+
+ @@params[:vacuum][:p1] = @@tem.Vacuum.Gauges.Item(0).PressureLevel
+ @@params[:vacuum][:p2] = @@tem.Vacuum.Gauges.Item(1).Pressure
+ @@params[:vacuum][:p3] = @@tem.Vacuum.Gauges.Item(2).Pressure
+ @@params[:vacuum][:p4] = @@tem.Vacuum.Gauges.Item(3).Pressure
+ @@params[:vacuum][:p5] = @@tem.Vacuum.Gauges.Item(4).Pressure
+ @@params[:vacuum][:p8] = @@tem.Vacuum.Gauges.Item(5).Pressure
+
+ return @@params[:vacuum].to_json
+ end
+
end
:imageBeamShift => {:x => 0, :y => 0},
:focus => 0,
:defocus => 0,
- :objStg => {:x => 0, :y => 0},
- :condenserStg => {:x => 0, :y => 0}
+ :objStg => {:x => 0, :y => 0}
},
:ill => {
- :spotSizeIndex => 0
+ :spotSizeIndex => 0,
+ :condenserStg => {:x => 0, :y => 0}
+ },
+ :vacuum => {
+ :p1 => 1,
+ :p2 => 2,
+ :p3 => 3,
+ :p4 => 4,
+ :p5 => 5,
+ :p8 => 8
}
}
@send_size = 2048
return img_array
end
+ def get_vacuum_status
+ puts "MOCK getVacuumStatus"
+
+ return @params[:vacuum].to_json
+ end
+
end
end
require "./hitachicontrol"
require "./mock"
+require "benchmark"
class TEST
def initialize
def test_acq
@@vem.acquisition
end
+
+ def test_get_vacuum_status
+ puts @@vem.get_vacuum_status
+ end
end
test = TEST.new
test.test_acq_init
test.test_acq
=end
-#test.test_acq_init
-#test.test_acq
-
#test.test_set_magnificationR
#test.test_set_image_beam_shift
#test.test_set_focus
#test.test_set_reset_defocus
#test.test_set_condenser_stg
#test.test_set_object_stg
+test.test_get_vacuum_status
rescue LoadError
end
require "./mock"
+require "benchmark"
class TEST
def initialize
def test_acq
@@vem.acquisition
end
+
+ def test_get_vacuum_status
+ @@vem.get_vacuum_status
+ end
end
test = TEST.new
test.test_acq_init
test.test_acq
=end
-
-test.test_acq
-
#test.test_set_magnificationR
#test.test_set_image_beam_shift
#test.test_set_focus
#test.test_set_reset_defocus
#test.test_set_condenser_stg
#test.test_set_object_stg
+test.test_get_vacuum_status
$:.unshift(File.dirname(__FILE__))
$ip_address = 'localhost'
-$cs_port = '192.168.4.146'
+$cs_port = '3000'
$vemapi_port = 9090
$debug = true
-$em_name = 'fei'
+$em_name = 'mock'