OSDN Git Service

create cameraServer & modify feicontrol.rb
[vem/vem.git] / vem / feicontrol.rb~
1 require 'win32ole'
2 require 'open3'
3 require 'json'
4
5 require '../vem/vem'
6
7
8
9 class FEIControl < VEM
10         def initialize
11                 puts "FEI initialize"
12
13                 #@@tem = WIN32OLE.new('TEMScripting.Instrument')
14         end
15
16         def setStageA(x, y, z, a)
17                 puts "FEI setStageA"
18
19                 o,s = Open3.capture2("cscript vem/tool/setStageA.js " + x.to_s + " " + y.to_s + " " + z.to_s + " " + a.to_s)
20                 position = o.lines.to_a[3]
21                 puts position
22                 return position
23         end
24
25         def setStageR(x, y, z, a)
26
27                 puts "FEI setStageR"
28                 o,s = Open3.capture2("cscript vem/tool/setStageR.js " + x.to_s + " "+ y.to_s + " " + z.to_s + " " + a.to_s)
29                 position = o.lines.to_a[3]
30                 puts position
31                 return position
32         end
33
34         def setSpotSize(spsize)
35                 puts "FEI setSpotSize"
36
37                 ill    = @@tem.Illumination
38                 ill.SpotsizeIndex = ill.SpotsizeIndex + spsize
39                 return ill.SpotsizeIndex
40         end
41
42         def setMagnification(magsize)
43                 puts "FEI setMagnification"
44
45                 proj = @@tem.Projection
46                 proj.MagnificationIndex = proj.MagnificationIndex + magsize
47                 return proj.MagnificationIndex
48         end
49
50         def acquisition
51                 puts "FEI acquition"
52
53                 WIN32OLE.ole_initialize 
54                 @@tem = WIN32OLE.new('TEMScripting.Instrument')
55                 # get acquitision object
56                 acq = @@tem.Acquisition
57                 # acquire an image from "CCD" camera
58                 acq.AddAcqDeviceByName("CCD")
59                 # ccdCamerasAcqParams
60                 ccdCamerasAcqParams = acq.Cameras.Item(0).AcqParams
61                 # binning
62                 ccdCamerasAcqParams.Binning = 4
63                 # exposuretime
64                 ccdCamerasAcqParams.ExposureTime = 0.07
65                 # imagesize
66                 ccdCamerasAcqParams.ImageSize = 2
67
68                 imageCollection = acq.AcquireImages
69
70                 img     = imageCollection.Item(0)
71                 imgData = img.AsSafeArray
72                 sendImgData = imgData
73
74                 imgMax = sendImgData.max.max
75                 imgMin = sendImgData.min.min
76
77                 conversion = 255/(imgMax.to_f - imgMin.to_f)
78
79                 array = Array.new
80
81                 sendImgData.length.times do |i|
82                         array[i] = sendImgData[i].map{|item| item*conversion}
83                 end
84
85                 puts sendImgData.length
86
87                 return array.to_json
88         end
89
90         def setObj(params)
91                 puts "FEI setObj"
92         end
93
94         def setBeamTilt(params)
95                 puts "FEI setBeamTilt"
96         end
97
98         def setSpeed(params)
99         end
100
101         def getCondition
102                 puts "FEI getCondition"
103         end
104 end
105