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()