OSDN Git Service

add function for CLEM
[vem/vem.git] / lib / request.rb
1 $:.unshift(File.dirname(__FILE__))
2
3 require 'benchmark'
4 require 'json'
5 require '../vem/vem'
6 require '../vem/mock'
7 begin
8   require '../vem/feicontrol'
9 rescue LoadError
10 end
11 require '../tool/imageProc'
12
13 class Request
14   include ImageProc
15
16   def initialize(command, params)
17     puts "create request"
18     @command = command
19     @params  = params
20     @result = nil
21     @mutex = Mutex.new
22     @cv = ConditionVariable.new
23     @complete = false
24     @em = $em_name
25   end
26
27   def execute
28     @vem = VEM.create(@em)
29     #puts "execute #{@command}"
30     case @command
31     when "get"
32       @result = @vem.get_params
33     when "vacuum_status"
34       @result = @vem.get_vacuum_status
35       puts "flag"
36     when "stagea"
37       @result = @vem.set_stageA(@params["x"].to_i, @params["y"].to_i, @params["z"].to_i, @params["a"].to_i)
38     when "stager"
39       @result = @vem.set_stageR(@params["x"].to_i, @params["y"].to_i, @params["z"].to_i, @params["a"].to_i)
40     when "spotsizea"
41       @result = @vem.set_spotsizeA(@params["sps"].to_i)
42      when "spotsizer"
43       @result = @vem.set_spotsizeR(@params["sps"].to_i)
44     when "magnificationa"
45       @result = @vem.set_magnificationA(@params["mag"].to_i)
46      when "magnificationr"
47       @result = @vem.set_magnificationR(@params["mag"].to_i)
48      when "defocusr"
49       @result = @vem.set_defocusR(@params["defocus"].to_i)
50      when "reset_defocus"
51       @result = @vem.set_reset_defocus
52      when "beamshift"
53        @result = @vem.set_image_beamshift(@params["x"].to_i, @params["y"].to_i);
54      when "acq_init"
55       @result = @vem.acquisition_init(@params["bng"].to_i, @params["exp"], @params["size"].to_i)
56     when "acq"
57       image = @vem.acquisition
58       converted_image = convert_256(image)
59       @result = converted_image.to_json
60     else
61       puts "else"
62     end
63       @complete = true
64       @cv.broadcast
65   end
66
67   def get_result
68     @mutex.synchronize do
69       @cv.wait(@mutex) while (@complete == false)
70       return @result
71     end
72   end
73 end