recvt
Section: WIN SYSTEM (1W)
Updated: 2015.12.28
Index
Return to Main Contents
名称
recvnmx - Nanometrics UDP/IPパケットの受信
形式
-
renvnmx
[
-nvB
] [
-c map
] [
-d dir
] [
-i interface
] [
-m group
]
[
-s 4|5|5f
]
port
shmkey
shmsize
[
logfile
]
解説
recvnmx は、自ホストの UDP ポート番号
port
に宛てて送られるNanometrics形式の
データ(NMXPまたはNPパケット)を受信し、WIN形式に変換してキー
shmkey
で与えられる共有メモリ・セグメントに(巡回的に)書き込みます。
現在のところ recvnmx は Compressed Data Packet (Taurus のパケットを含む)
のみを処理します。
WIN形式についてはwinformat(1W)を、
共有メモリ上のフォーマットについてはrecvt(1W)を参照してください。
WIN形式の16ビットのチャネル番号は、NMXP/NPパケット中に書かれている
Nanometrics機器のシリアル番号とチャネル番号のペアから生成されます
(16ビットのうち上位11ビットがシリアル番号を下位5ビットがチャネル番号)。
WIN形式のチャネル番号を任意にマッピングしたい場合はオプション
-c を使ってください。
キー
shmkey
をもつ共有メモリ・セグメントが存在しない場合は、大きさ
shmsize
(KB) の共有メモリ・セグメントが作られます。すでに存在している場合は、
そのサイズが
shmsize
(KB) よりも小さいとエラーになります。
UDP ポート番号は16ビットの整数値、共有メモリ・キーは32ビットの
整数値です。
ログファイル名
logfile
を指定すると、ここに動作ログがとられ、
指定しないとログ情報は標準出力に
送られます。ログファイルは書き込みのたび毎に
オープン/クローズされます。
recvnmx は引数なしで起動すると簡単な使用法を表示します。
オプション
- -B
-
共有メモリの形式を後方サーチ可能な形式にします。この形式については
recvt(1W) のオプション -B
を参照してください。
- -c map
-
ファイル
map
でWIN形式のチャネル番号の付け方を指定します。
map
のフォーマットは、1行で1台分ずつ、先頭に各Nanometrics機器の
シリアル番号を10進数で、その右に空白またはタブで区切ってWIN形式での
先頭チャネル番号を16進数で、それぞれ書いたものです。'#'で始まる行は
コメントとみなされます。各行で先頭から2項目だけが読まれ、それより
右は無視されます。Nanometrics機器が複数のチャネルをもつ場合、指定した
WIN形式の先頭チャネル番号から始まるチャネル数だけのチャネル番号が
割り当てられます。次の例ではシリアル番号#139の機器のチャネル1〜3に
それぞれ 0380,0381,0382 のチャネル番号が振られ、同様にして#141,#142,
#143にそれぞれ 0383〜0385,0386〜038B,038C〜0391が割り振られます。
139 0380 # 3ch
141 0383 # 3ch
142 0386 # 6ch
143 038C # 6ch
recvnmx は HUPシグナルを受けると、ファイル
map
を読み直します。
- -d dir
-
半端なデータをディレクトリ
dir
に一時保存します。
WIN形式のパケットは秒単位ですが、
Nanometrics形式のそれは秒単位ではないため、パケットが正しい順序で
届かなかった場合は、
秒パケットを構成できない1秒未満の長さの半端なデータが残ります。
このオプションを指定すると、この半端なデータを保存しておき、
あとで不足部分を含むパケットが届いた時に、保存しておいたそれを
読み出して正しい秒パケットを構成して出力します。
recvnmx は
dir
にある使用済の半端なデータのファイルを削除しますが、不足部分が
結局届かなくて使用されなかったファイルは残ります。このような古いファイルを
定期的に削除するためのプログラムに clean_nmx(1W) があります。
- -i interface
-
パケットを受信するネットワークインターフェースを、そのインターフェースの
IPアドレス
interface
で指定します。
- -m group
-
IPマルチキャストアドレス
group
に対して送信されるパケットを受信します。
- -n
-
NPパケットを受信し、NMXPパケットは無視します。このオプションを
指定しない場合はNMXPパケットを受信し、NPパケットは無視します。
NPパケットとNMXPパケットの両方を受信することはできません。
- -v
-
受信したNMXP/NPパケットの情報を表示します。これはデバッグ用です。
- -s
mode-
書き込みデータのサンプルサイズが
4 バイト
の場合のサンプルサイズ情報のモードを指定します。
4 : サンプルサイズ情報を 4 にします。
5 : サンプルサイズ情報を 5 にします。
5f : サンプルサイズが 4 バイト長以外についてもサンプルサイズ情報を 5
にします。つまり、常に圧縮の無い固定長データとなります。
実行例
次の例ではマルチキャストアドレス 224.0.1.1 のUDPポート 32000番へ
送られたNMXPパケットを IPアドレス 10.0.0.100 のネットワーク
インターフェースから受信し、共有メモリ 1001番(サイズ 1000KB)に
書き出します。ログファイルは /dat/log/recvnmx.log です。
-
recvnmx -i 10.0.0.100 -m 224.0.1.1 -c recvnmx.prm 32000 1001 1000
/dat/log/recvnmx.log
タイムスタンプについて
recvnmx は NMXPパケットのタイムスタンプ(1970年1月1日00:00:00 UTCからの
秒数)をWIN形式のタイムスタンプ(JSTの年月日時分秒)に変換するのに
localtime(3)関数を使っています。その際に通常は閏秒が考慮されませんが、
Nanometrics機器のNMXPパケットのタイムスタンプでも閏秒は考慮されていない
(無視されている)ようなので、とりあえず問題ありません。
シリアル番号について
ファイル
map
を使ってNanometrics機器のシリアル番号をWIN形式のチャネル番号に対応させる場合、
機種は区別されないことに注意してください。同じシリアル番号をもつ別の機種を
区別しないため、今のところそれらを混在させることはできません。
ソース
- `recvnmx.c'
-
関連事項
clean_nmx(1W), winformat(1W), recvt(1W)
Index
- 名称
-
- 形式
-
- 解説
-
- オプション
-
- 実行例
-
- タイムスタンプについて
-
- シリアル番号について
-
- ソース
-
- 関連事項
-