OSDN Git Service

fix by fei
authoriwasaki <iwaaya@yasunaga-lab.bio.kyutech.ac.jp>
Thu, 17 Dec 2015 10:19:57 +0000 (19:19 +0900)
committeriwasaki <iwaaya@yasunaga-lab.bio.kyutech.ac.jp>
Thu, 17 Dec 2015 10:19:57 +0000 (19:19 +0900)
17 files changed:
lib/.request.rb.un~ [new file with mode: 0644]
lib/.vemapi.rb.un~ [new file with mode: 0644]
lib/request.rb~ [new file with mode: 0644]
lib/vemapi.rb
lib/vemapi.rb~ [new file with mode: 0644]
vem/.feicontrol.rb.un~
vem/.test.rb.un~
vem/feicontrol.rb
vem/feicontrol.rb~
vem/test.rb
vem/test.rb~
vemserver/.config.rb.un~ [new file with mode: 0644]
vemserver/.vemserver.rb.un~ [new file with mode: 0644]
vemserver/config.rb
vemserver/config.rb~ [new file with mode: 0644]
vemserver/vemserver.rb
vemserver/vemserver.rb~ [new file with mode: 0644]

diff --git a/lib/.request.rb.un~ b/lib/.request.rb.un~
new file mode 100644 (file)
index 0000000..eb8b482
Binary files /dev/null and b/lib/.request.rb.un~ differ
diff --git a/lib/.vemapi.rb.un~ b/lib/.vemapi.rb.un~
new file mode 100644 (file)
index 0000000..30125be
Binary files /dev/null and b/lib/.vemapi.rb.un~ differ
diff --git a/lib/request.rb~ b/lib/request.rb~
new file mode 100644 (file)
index 0000000..0591134
--- /dev/null
@@ -0,0 +1,57 @@
+$:.unshift(File.dirname(__FILE__))
+
+require 'json'
+require '../vem/vem'
+require '../vem/mock'
+begin
+require '../vem/feicontrol'
+rescue LoadError
+end
+require '../tool/imageProc'
+
+class Request
+       include ImageProc
+
+       def initialize(command, params)
+               puts "create request"
+               @command = command
+               @params  = params
+               @result = nil
+               @mutex = Mutex.new
+               @cv = ConditionVariable.new
+               @complete = false
+    @em = $em_name
+       end
+
+       def execute
+               @vem = VEM.create(@em)
+               case @command
+               when "get"
+                       @result = @vem.get_params
+               when "stagea"
+                       @result = @vem.set_stageA(@params["x"].to_i, @params["y"].to_i, @params["z"].to_i, @params["a"].to_i)
+               when "stager"
+                       @result = @vem.set_stageR(@params["x"].to_i, @params["y"].to_i, @params["z"].to_i, @params["a"].to_i)
+               when "acq_init"
+                       @result = @vem.acquisition_init(@params["bng"].to_i, @params["exp"], @params["size"].to_i)
+               when "acq"
+                       puts "acq"
+                       image = @vem.acquisition
+                       converted_image = convert_256(image)
+                       @result = converted_image.to_json
+               else
+                       puts "else"
+               end
+               puts "execute end"
+               @complete = true
+               @cv.broadcast
+       end
+
+       def get_result
+               @mutex.synchronize do
+                       @cv.wait(@mutex) while (@complete == false)
+                       puts "resturn result"
+                       return @result
+               end
+       end
+end
index 6ad619f..7c5331b 100644 (file)
@@ -16,8 +16,8 @@ class Vemapi < Sinatra::Base
   $em_name == 'fei'
   end
 
-  cs = CameraSocket.new($ip_address, $cs_port)
-  cs.run!
+#  cs = CameraSocket.new($ip_address, $cs_port)
+#  cs.run!
 
   get '/' do
     headers \
diff --git a/lib/vemapi.rb~ b/lib/vemapi.rb~
new file mode 100644 (file)
index 0000000..6ad619f
--- /dev/null
@@ -0,0 +1,53 @@
+#!/usr/bin/env ruby -I c:/Users/iwasaki/gem/sinatra-master/lib -I lib
+
+$:.unshift(File.dirname(__FILE__))
+
+require 'sinatra/base'
+require 'channel'
+require 'request'
+require 'cameraSocket'
+
+class Vemapi < Sinatra::Base
+  @@channel = Channel.instance
+
+  if development? 
+  $em_name == 'mock'
+  elsif 
+  $em_name == 'fei'
+  end
+
+  cs = CameraSocket.new($ip_address, $cs_port)
+  cs.run!
+
+  get '/' do
+    headers \
+      "Access-Control-Allow-origin" => "*"
+    'VEM API test'
+  end
+
+  get '/:emname/get' do
+    headers \
+      "Access-Control-Allow-origin" => "*"
+    request = Request.new("get", nil)
+    @@channel.put_request(request)
+    return request.get_result
+  end
+
+  get '/:emname/set/:command' do
+    headers \
+      "Access-Control-Allow-origin" => "*"
+    request = Request.new(params["command"], params)
+    @@channel.put_request(request)
+    return request.get_result
+  end
+
+  get '/:emname/acq' do
+    headers \
+      "Access-Control-Allow-origin" => "*"
+    request = Request.new("acq", nil)
+    @@channel.put_request(request)
+    return request.get_result
+  end
+end
+
+
index 8b2bbb5..998e993 100644 (file)
Binary files a/vem/.feicontrol.rb.un~ and b/vem/.feicontrol.rb.un~ differ
index fce23a9..f130ab6 100644 (file)
Binary files a/vem/.test.rb.un~ and b/vem/.test.rb.un~ differ
index 6754e12..768379b 100644 (file)
@@ -25,9 +25,9 @@ class FEIControl < VEM
                "y"          => 0,
                "z"          => 0,
                "a"          => 0,
-    "binning"    => 1,
-    "exptime"    => 1,
-    "image_size" => 0
+               "binning"    => 1,
+               "exptime"    => 1,
+               "image_size" => 0
        }
 
        @@acq = nil
@@ -99,8 +99,13 @@ class FEIControl < VEM
        end
 
        def acquisition_init(binning, exp_time, image_size)
+               puts "acq_init"
+
+               @@tem = TEMObject.instance
+
                # get acquitision object
                @@acq = @@tem.Acquisition
+
                # acquire an image from "CCD" camera
                @@acq.AddAcqDeviceByName("CCD")
 
@@ -113,10 +118,12 @@ class FEIControl < VEM
                ccdCamerasAcqParams.ExposureTime = exp_time
                # imagesize
                ccdCamerasAcqParams.ImageSize = image_size
-               puts "#{ccdCamerasAcqParams.Binning}, #{ccdCamerasAcqParams.ExposureTime}, #{ccdCamerasAcqParams.image_size}"
+               puts "#{ccdCamerasAcqParams.Binning}, #{ccdCamerasAcqParams.ExposureTime}, #{ccdCamerasAcqParams.ImageSize}"
        end
 
        def acquisition
+               @@tem = TEMObject.instance
+
                # acquisition Image
                imageCollection = @@acq.AcquireImages
                img     = imageCollection.Item(0)
index 17b6009..4dc6a5d 100644 (file)
@@ -21,19 +21,20 @@ end
 class FEIControl < VEM
        include TEMObject
        @@params = {
-               "x" => 0,
-               "y" => 0,
-               "z" => 0,
-               "a" => 0
+               "x"          => 0,
+               "y"          => 0,
+               "z"          => 0,
+               "a"          => 0,
+               "binning"    => 1,
+               "exptime"    => 1,
+               "image_size" => 0
        }
 
        @@acq = nil
 
-
        def initialize
                puts "FEI initialize"
 
-       #       @@tem    = WIN32OLE.new('TEMScripting.Instrument')
                @@tem = TEMObject.instance
                puts @@tem
        end
@@ -49,7 +50,7 @@ class FEIControl < VEM
                @@params["a"] = @@tem.Stage.Position.A
 
 
-               return @@params
+               return @@params.to_json
        end
 
        def set_stageA(x, y, z, a)
@@ -64,7 +65,7 @@ class FEIControl < VEM
 
                @@tem.Stage.GoTo(position, 15)
                get_params
-               return @@params
+               return @@params.to_json
        end
 
        def set_stageR(x, y, z, a)
@@ -78,7 +79,7 @@ class FEIControl < VEM
 
                @@tem.Stage.GoTo(position, 15)
                get_params
-               return @@params
+               return @@params.to_json
        end
 
        def set_spotsize(spsize)
@@ -98,8 +99,13 @@ class FEIControl < VEM
        end
 
        def acquisition_init(binning, exp_time, image_size)
+               puts "acq_init"
+
+               @@tem = TEMObject.instance
+
                # get acquitision object
                @@acq = @@tem.Acquisition
+
                # acquire an image from "CCD" camera
                @@acq.AddAcqDeviceByName("CCD")
 
@@ -116,6 +122,8 @@ class FEIControl < VEM
        end
 
        def acquisition
+               @@tem = TEMObject.instance
+
                # acquisition Image
                imageCollection = @@acq.AcquireImages
                img     = imageCollection.Item(0)
index 5d7cc39..c7412fa 100644 (file)
@@ -32,5 +32,5 @@ class TEST
 end
 
 test = TEST.new
-test.test_get_params
+test.test_acq_init
 
index 959723c..5d7cc39 100644 (file)
@@ -7,7 +7,7 @@ class TEST
        end
 
        def test_get_params
-               @@vem = VEM.get_params
+               @@vem.get_params
        end
 
        def test_set_stageA
diff --git a/vemserver/.config.rb.un~ b/vemserver/.config.rb.un~
new file mode 100644 (file)
index 0000000..9dc13e7
Binary files /dev/null and b/vemserver/.config.rb.un~ differ
diff --git a/vemserver/.vemserver.rb.un~ b/vemserver/.vemserver.rb.un~
new file mode 100644 (file)
index 0000000..7656c40
Binary files /dev/null and b/vemserver/.vemserver.rb.un~ differ
index 1fb7213..7e952f4 100644 (file)
@@ -2,5 +2,6 @@ $ip_address  = 'localhost'
 $cs_port     = '3000'
 $vemapi_port = 9090
 $debug       = true
+$em_name     = 'fei'
 
 # $em_nameをsinatraの起動モード(development or test)で'mock'か'fei'に切り替わるようにしている。
diff --git a/vemserver/config.rb~ b/vemserver/config.rb~
new file mode 100644 (file)
index 0000000..1fb7213
--- /dev/null
@@ -0,0 +1,6 @@
+$ip_address  = 'localhost'
+$cs_port     = '3000'
+$vemapi_port = 9090
+$debug       = true
+
+# $em_nameをsinatraの起動モード(development or test)で'mock'か'fei'に切り替わるようにしている。
index 2442363..22d1a05 100644 (file)
@@ -1,4 +1,5 @@
-require 'sinatra/base'
+#!/usr/bin/env ruby -I c:/Users/iwasaki/gem/sinatra-master/lib -I lib
+
 require '../lib/vemapi'
 require '../lib/channel'
 require './config'
diff --git a/vemserver/vemserver.rb~ b/vemserver/vemserver.rb~
new file mode 100644 (file)
index 0000000..c0f5469
--- /dev/null
@@ -0,0 +1,11 @@
+require '../lib/vemapi'
+require '../lib/channel'
+require './config'
+
+
+channel = Channel.instance # Channelインスタンス生成
+channel.start_worker # Worker Threadの起動
+
+Vemapi.run! :host => $ip_address, :port => $vemapi_port # sinatraサーバーの起動
+
+# cameraSocketはVemapiの中で起動している。