RubySpaceWire - receive and save
以下の例は、SpaceWire RMAP LibraryのRuby-bindingを用いて、SpaceWire-to-GigabitEther経由でSpaceWireパケットを受信し、バイナリファイルとして保存するサンプルです。
あるSpaceWireベースのミッション機器のデバッグのために作成したものをサンプルとして公開しておきます。
SpaceWire RMAP LibraryおよびそのRuby-bindingは、SpaceWire RMAP Libraryのgithubのページからダウンロードできます。また、SpaceWire RMAP LibraryのドキュメントはThe open-source SpaceWire projectのSpaceWire RMAP Libraryのページからダウンロードできます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
require "SpaceWireRMAP"
include SpaceWireRMAP
file=File.open("receivedData.data","w")
ipAddress="192.168.1.100"
tcpPort=10030
spwif=SpaceWireIFOverTCP.new(ipAddress,tcpPort)
spwif.open()
print "Connected to SpaceWire-to-GigabitEther¥n"
#packet=VectorUInt8.new([1,2,3,4,5,6,7])
packet=VectorUInt8.new
while true do
begin
spwif.receive(packet)
rescue => e
end
print "Received #{packet.size()} bytes.¥n"
if(packet.size()!=0)then
array=[]
for i in 0...(packet.size()) do
array << packet.at(i)
end
file.write array.pack("C*")
packet.clear()
end
end
spwif.close()