OSDN Git Service

09bcefc5f0ed69e047e364d439c003dd6cb47dbf
[vem/vem.git] / lib / cameraSocket.rb~
1 #!/usr/bin/env ruby -I c://Users/iwasaki/gem/sinatra-master/lib -I lib
2
3 $:.unshift(File.dirname(__FILE__))
4
5 require 'em-websocket'
6 require 'json'
7 require 'benchmark'
8 require 'serialCamera'
9
10 class CameraSocket
11         def initialize(ip, port)
12                 @ip = ip
13                 @port = port
14                 @camera = SerialCamera.instance
15                 @buf = {"type"=>nil, "data"=>nil}
16                 @count = 0
17                 @start_time = 0
18         end
19
20         def run!
21                 EM::WebSocket.start(host: @ip, port: @port) do |ws|
22
23                         ws.onopen do
24                                 puts "ws open"
25                                 @buf["type"] = "connection"
26                                 @buf["data"] = "open"
27                                 @camera.on_flag
28                                 ws.send(@buf.to_json)
29                         end
30
31                         ws.onmessage do |msg|
32                                 rec_buf = JSON.parse(msg)
33                                 if(rec_buf["type"]=="req")
34                                         if(rec_buf["data"]=="img")
35                                                 @buf["type"] = "img"
36                                                 @camera.unlock_acq
37                                                 @buf["data"] = @camera.get_image 
38                                                 @buf["count"] = @count
39                                                 ws.send(@buf.to_json)
40                                                 @count = @count + 1
41                                         end
42                                 end
43                         end
44
45                         ws.onclose do
46                                 @camera.off_flag
47                         end
48
49                 end
50         end
51 end