● 概要図
'E' 'B' CR LF
BINARYデータ
ASCII形式
BINARY形式 データ長
データサム
フラグ 識別 ヘッダサム 1バイト
BINARYヘッダ (12バイト)
BINARYデータ
BINARYフッタ (2バイト)
● EBCRLF
データがBINARYであることを示します。
● データ長
「フラグ+識別+ヘッダサム+BINARYデータ+データサム」のバイト値です。
● ヘッダサム
「データ長+フラグ+識別」のサム値です。
● BINARYデータ
データごとの出力フォーマットについては,6.3節をご覧ください。
● データサム
「BINARYデータ」のサム値です。
Note
BINARYヘッダ部のデータ長は,BOコマンドで設定されたバイトオーダに従って出力されま す。
6.1 レスポンスの書式
1
2
3
4
5
6
7
付
索
レ ス ポ ン ス
● フラグ
ビット 名称(略称) フラグ
0 1 フラグの意味
7 BO MSB LSB バイト出力順序
6 CS 無 有 チェックサムの有無
5 − − −
4 − − −
3 − − −
2 − − −
1 − − −
0 END 中間 最終 連続データの中間/最終
・ BOフラグが「0」のとき,MSB(上位バイト)から出力されます。BOフラグが「1」のとき,
LSB(下位バイト)から出力されます。
・ CSコマンドのパラメータをチェックサム有り(パラメータ1)にすると,前ページ「●概要図」
のヘッダサムとデータサムの部分にサム値が入ります。パラメータをチェックサム無し(パラ メータ0)にすると,ヘッダサムとデータサムの部分にはゼロ(0)が入ります。サム値を計算する サンプルプログラムについては,次ページ「●サム値の計算」をご覧ください。
・ ME/MI/MOコマンドで出力されるデータの容量が大きい場合,1回の出力要求(パラメータ GET)では全データを出力しきれないときがあります。この場合はENDフラグが「0」になりま す。ENDフラグが「1」になるまで,続きのデータを出力要求(パラメータNEXT)する必要があ ります。
・ 名称とフラグ欄に「−」があるビットは未使用です。値は不定になります。
● 識別
識別 番号 BINARYデータの種類 形式 フォーマット
0 不特定ファイル ファイル(*.*) −
1 測定/演算データ データ ○
1 FIFOデータ データ ○
2 表示データファイル ファイル(*.DDS) ×
3 イベントデータファイル ファイル(*.DEV) ×
4 マニュアルサンプルデータファイル ファイル(*.DMN) ○
5 時報データファイル ファイル(*.DHR) ○
6 日報データファイル ファイル(*.DDR) ○
7 週報データファイル ファイル(*.DWR) ○
8 月報データファイル ファイル(*.DMR) ○
9 TLOGデータファイル ファイル(*.DTG) ×
10 設定データファイル ファイル(*.PNL) ×
11 表示データ データ ○
12 イベントデータ データ ○
13 画面イメージデータ ファイル(*.PNG) −
○:公開,×:非公開,−:一般形式
・ BINARYデータには,上表の種類があります。
・ BINARYデータには,データとファイルの2種類があります。
・データ
・ FDコマンドで測定/演算データを出力できます。
・ FFコマンドでFIFOデータを出力できます。
・ MIコマンドで表示データやイベントデータを出力できます。
・ データのフォーマットは公開されています。6.3節をご覧ください。
・ ファイル
・ 表示データ/イベントデータ/TLOGデータ/設定データの各ファイルは,本機器付属のス タンダードソフトウエアDXA120で扱えます。詳しくは,スタンダードソフトウエア DXA120のマニュアルIM 04L41B01-61をご覧ください。
・ フォーマットが一般形式のファイルは,市販のソフトウエアで読み込めます。
・ その他のファイルはASCIIコードで書かれています。適当なエディタソフトで読み込めま 6.1 レスポンスの書式
● サム値の計算
CSコマンドのパラメータを「1(有)」にすると,シリアル通信のときだけチェックサム 値が出力されます。TCP/IPのときに使用するサム値で,以下のアルゴリズムで求めら れます。
サム値の対象バッファ
・ ヘッダサムの場合は,「データ長+フラグ+識別」で,6バイト固定です。
・ データサムの場合は,「BINARYデータ」です。
1バイト
0
(1) (2) (3) (4) (5) (6)
パディング
バッファのデータ長が奇数の場合は,偶数になるように「0(ゼロ)」でパディング し,符号なし2バイト整数(unsigned short)単位で,(1)〜(6)まで加算します。この とき桁あふれしたときは,さらに「1」を加算します。最後に加算結果をビット反転 させます。
サンプルプログラム
以下のサンプルプログラムで求められ,関数の戻値に計算結果が入ります。サンプルプ ログラムで求められた計算結果と,BINARY出力されたBINARYヘッダ部のヘッダサム やBINARYフッタ部のデータサムとを比較し,値が正しいかどうかの確認ができます。
/ *
* サム値算出関数( 3 2 b i t C P U 用) *
* 引数 buff:サム値算出対象のデータの先頭ポインタ * l e n : サム値算出対象のデータ長
* 戻値 : 算出したサム値 * /
i n t c k s u m ( u n s i g n e d c h a r * b u f f , i n t l e n ) {
u n s i g n e d s h o r t * p ; /* 対象バッファの次に加算すべき2バイトデータを指すポインタ
* /
u n s i g n e d i n t c s u m ; / * チェックサム値 * / i n t i ;
i n t o d d ;
c s u m = 0 ; / * 初期化 * /
o d d = l e n % 2 ; /* データ数が奇数かどうかをチェック */
l e n > > = 1 ; / * s h o r t 単位の個数を求める * / p = ( u n s i g n e d s h o r t * ) b u f f ;
f o r ( i = 0 ; i < l e n ; i + + ) / * u n s i g n e d s h o r t 単位で加算していく * / c s u m + = * p + + ;
i f ( o d d ) { / * データ長が奇数の場合の処理 * /
u n i o n t m p { / * 0 をパディングし,u n s i g n e d s h o r t データに加算していく * / u n s i g n e d s h o r t s ;
u n s i g n e d c h a r c [ 2 ] ; } t m p ;
t m p . c [ 1 ] = 0 ;
t m p . c [ 0 ] = * ( ( u n s i g n e d c h a r * ) p ) ; c s u m + = t m p . s ;
}
i f ( ( c s u m = ( c s u m & 0 x f f f f ) + ( ( c s u m > > 1 6 ) & 0 x f f f f ) ) > 0 x f f f f ) 6.1 レスポンスの書式
1
2
3
4
5
6
7
付
索
レ ス ポ ン ス