(57)【要約】【課題】処理データのアライメントまたはエンディアンが異なるコンピュータ間通信に、アライメント調整またはエンディアン変換を確実、容易にする。【解決手段】処理データのアライメントが異なるコンピュータ間のデータ通信に、アライメント調整プログラム生成装置２は、受信データのヘッダファイル１を読み込み、それが構造体定義データの場合は関数定義コードに変換し、構造体中の構造体データの場合は構造体変換呼び出しコードに変換し、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のアライメント調整コードに変換し、配列データでない場合はデータ型毎にアライメント調整コードに変換して、アライメント調整プログラム３を生成、または、アライメント変換テーブルを生成する。同様に、エンディアン変換プログラムやエンディアン変換テーブルを作成する。【選択図】図１
2009093455.tif 000002
【特許請求の範囲】
【請求項１】
処理データのアライメントが異なるコンピュータ間のデータ通信方式であって、
前記コンピュータは、受信データの構造からアライメント調整プログラムまたは調整用の変換テーブルを自動生成する生成装置を備えたことを特徴とするコンピュータ間のデータ通信方式。
【請求項２】
前記生成装置は、受信データのヘッダファイルを読み込み、それが構造体定義データの場合は関数定義コードに変換し、構造体中の構造体データの場合は構造体変換呼び出しコードに変換し、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のアライメント調整コードに変換し、配列データでない場合はデータ型毎にアライメント調整コードに変換する処理を、読み込んだファイルの終わりまで繰り返して前記アライメント調整プログラムを生成することを特徴とする請求項１に記載のコンピュータ間のデータ通信方式。
【請求項３】
前記生成装置は、受信データのヘッダファイルを読み込み、それがデータ型定義で配列データの場合は配列用サイズ分だけのアドレスとデータ種別を出力し、１バイトデータの場合は１データサイズ分のアドレスとデータ種別を出力し、これらデータ種別に応じて前記変換テーブルのアドレスカウンタを更新する処理を、読み込んだファイルの終わりまで繰り返して前記アライメント変換テーブルを生成することを特徴とする請求項１に記載のコンピュータ間のデータ通信方式。
【請求項４】
処理データのエンディアンが異なるコンピュータ間のデータ通信方式であって、
前記コンピュータは、受信データの構造からエンディアン変換プログラムまたはエンディアン変換用の変換テーブルを自動生成する生成装置を備えたことを特徴とするコンピュータ間のデータ通信方式。
【請求項５】
前記生成装置は、受信データのヘッダファイルを読み込み、それが構造体定義データの場合は関数定義コードに変換し、構造体中の構造体データの場合は構造体変換呼び出しコードに変換し、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のエンディアン変換コードに変換し、配列データでない場合はデータ型毎にエンディアン変換コードに変換する処理を、読み込んだファイルの終わりまで繰り返して前記エンディアン変換プログラムを生成することを特徴とする請求項４に記載のコンピュータ間のデータ通信方式。
【請求項６】
前記生成装置は、受信データのヘッダファイルを読み込み、それがデータ型定義で配列データの場合は配列用サイズ分だけのアドレスとデータ種別を出力し、１バイトデータの場合は１データサイズ分のアドレスとデータ種別を出力し、これらデータ種別に応じて前記変換テーブルのアドレスカウンタを更新する処理を、読み込んだファイルの終わりまで繰り返して前記エンディアン変換テーブルを生成することを特徴とする請求項４に記載のコンピュータ間のデータ通信方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理データのアライメントやエンディアンが異なるコンピュータ間のデータ通信方式に関する。
【背景技術】
【０００２】
図９に示すように、シリアル通信、ネットワーク等で接続されたコンピュータ（機器）間の通信において、アライメントの異なるデータ通信を行う場合、送信側が受信側のデータアライメントに合わせたアライメント調整して送信、または受信側が自身のアライメントに合わせて受信している。
【０００３】
さらに、コンピュータによっては、処理データのアクセス単位が異なるものがあり、１バイト単位、２バイト単位、４バイト単位などでそれぞれ異なっており、単純にある決められたデータ構造を転送するだけではデータのやりとりができない。このため、一方が他方のデータのアライメントに合わせて調整している。
【０００４】
図１０は、ｓｈｏｒｔデータが２バイト、ｆｌｏａｔデータが４バイトのデータ構造をもつ機器からの送信データを、４バイト単位で処理するコンピュータが受信する場合のアライメント調整例を示し、受信側コンピュータは最初に受信する４バイトデータのうち、２バイトデータ「データ１」を４バイト単位でコピーし、残りの２バイトデータと次に受信する４バイトデータのうちの２バイトデータを「データ２」を４バイト単位でコピーする。
【０００５】
また、図１１に示すように、ネットワーク接続されたコンピュータ間において、エンディアン形式が異なるＣＰＵ間でデータ通信を行う場合、通信時のエンディアンルールを決め、送信側または受信側またはその双方が、エンディアン変換するようにしている（例えば特許文献１参照）。図１１では受信側にエンディアン変換処理をもつ場合である。
【０００６】
エンディアン変換は、２バイト以上のデータ量をもつデータを記録/転送するときに１バイトごとに分割し、最上位のバイトから順番に記録／転送する「ビッグエンディアン」方式と、最下位のバイトから順番に記録／転送する「リトルエンディアン」方式がある。
【特許文献１】特開２００５−２２７９９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
データのアライメント調整には、扱うデータのバイトサイズにより処理内容が異なるため、さまざまなデータサイズが複合されている構造体のような形でデータを送信する場合には、データ構造を意識してアライメント調整を行う必要がある。このため、システムの機能追加などにより、送信するデータ構造の変更が発生すると、その度にデータ構造に応じたアライメント調整プログラムを修正する必要がある。
【０００８】
データ構造の変更に伴い、アライメント調整プログラム修正に影響されないようにするためには、図１２に示すような調整用のデータテーブルを用意し、データ構造に応じた調整用テーブルを作成してデータを変更して対応する方法もある。
【０００９】
データテーブルには、データのアドレス（オフセット）とデータ型の組の情報を持ち、アライメント調整プログラムはこれらの情報から通信データを調整する。この場合は、調整用テーブルが変更になった場合は、その都度データ構造を意識して人が作成する必要があった。このため、通信データ内のデータ配列の個数が変更になっただけでも、それ以降の全てのデータを修正する必要があり、手間がかかっていた。
【００１０】
同様に、エンディアン変換には、扱うデータのバイトサイズにより処理内容が異なるため、さまざまなデータサイズが複合されている構造体のような形でデータを送信する場合には、データ構造を意識してエンディアン変換を行う必要がある。このため、システムの機能追加などにより、送信するデータ構造の変更が発生すると、その度にデータ構造に応じたエンディアン変換プログラムを修正する必要がある。
【００１１】
データ構造の変更に伴い、エンディアン変換プログラム修正に影響されないようにするためには、図１３に示すような変換用のデータテーブルを用意し、データ構造に応じた変換用テーブルを作成してデータを変更して対応する方法もある。
【００１２】
データテーブルには、データのアドレス（オフセット）とデータ型の組の情報を持ち、エンディアン変換プログラムはこれらの情報から通信データを変換する。この場合は、変換用テーブルが変更になった場合は、その都度データ構造を意識して人が作成する必要があった。このため、通信データ内のデータ配列の個数が変更になっただけでも、それ以降の全てのデータを修正する必要があり、手間がかかっていた。
【００１３】
本発明の目的は、処理データのアライメントまたはエンディアンが異なるコンピュータ間通信に、アライメント調整またはエンディアン変換を確実、容易にしたコンピュータ間のデータ通信方式を提供することにある。
【課題を解決するための手段】
【００１４】
本発明は、前記の課題を解決するため、アライメント調整処理プログラムまたはアライメント調整用の変換テーブルを受信データ構造から自動生成、エンディアン変換処理プログラムまたはエンディアン変換用の変換テーブルを通信データ構造から自動生成するようにしたもので、以下の方式を特徴とする。
【００１５】
（１）処理データのアライメントが異なるコンピュータ間のデータ通信方式であって、
前記コンピュータは、受信データの構造からアライメント調整プログラムまたは調整用の変換テーブルを自動生成する生成装置を備えたことを特徴とする。
【００１６】
（２）前記生成装置は、受信データのヘッダファイルを読み込み、それが構造体定義データの場合は関数定義コードに変換し、構造体中の構造体データの場合は構造体変換呼び出しコードに変換し、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のアライメント調整コードに変換し、配列データでない場合はデータ型毎にアライメント調整コードに変換する処理を、読み込んだファイルの終わりまで繰り返して前記アライメント調整プログラムを生成することを特徴とする。
【００１７】
（３）前記生成装置は、受信データのヘッダファイルを読み込み、それがデータ型定義で配列データの場合は配列用サイズ分だけのアドレスとデータ種別を出力し、１バイトデータの場合は１データサイズ分のアドレスとデータ種別を出力し、これらデータ種別に応じて前記変換テーブルのアドレスカウンタを更新する処理を、読み込んだファイルの終わりまで繰り返して前記アライメント変換テーブルを生成することを特徴とする。
【００１８】
（４）処理データのエンディアンが異なるコンピュータ間のデータ通信方式であって、
前記コンピュータは、受信データの構造からエンディアン変換プログラムまたはエンディアン変換用の変換テーブルを自動生成する生成装置を備えたことを特徴とする。
【００１９】
（５）前記生成装置は、受信データのヘッダファイルを読み込み、それが構造体定義データの場合は関数定義コードに変換し、構造体中の構造体データの場合は構造体変換呼び出しコードに変換し、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のエンディアン変換コードに変換し、配列データでない場合はデータ型毎にエンディアン変換コードに変換する処理を、読み込んだファイルの終わりまで繰り返して前記エンディアン変換プログラムを生成することを特徴とする。
【００２０】
（６）前記生成装置は、受信データのヘッダファイルを読み込み、それがデータ型定義で配列データの場合は配列用サイズ分だけのアドレスとデータ種別を出力し、１バイトデータの場合は１データサイズ分のアドレスとデータ種別を出力し、これらデータ種別に応じて前記変換テーブルのアドレスカウンタを更新する処理を、読み込んだファイルの終わりまで繰り返して前記エンディアン変換テーブルを生成することを特徴とする。
【発明の効果】
【００２１】
以上のとおり、本発明によれば、アライメント調整処理プログラムまたはアライメント調整用の変換テーブルを受信データ構造から自動生成、エンディアン変換処理プログラムまたはエンディアン変換用の変換テーブルを通信データ構造から自動生成するようにしたため、アライメント調整またはエンディアン変換が確実、容易になる。
【００２２】
具体的には、
・ユーザプログラムではアライメント調整やエンディアン変換を意識せずに作成できる。
【００２３】
・データ送信用のデータ構造の変更に対して、柔軟に対応ができる。
【００２４】
・変換プログラムまたは変換データを自動生成するために、アライメント調整処理やエンディアン変換処理における不具合が無くなる。
【発明を実施するための最良の形態】
【００２５】
＜実施形態１＞アライメント調整プログラムがデータ型に依存する場合
図１に示すように、通信データ構造を定義したプログラム（例：Ｃ言語ではヘッダファイル）１から、アライメント調整プログラム生成装置２がアライメント調整プログラム３を自動生成し、この自動生成されたプログラムをユーザ作成のプログラム４が呼び出す。
【００２６】
プログラムの実行ファイルは、ユーザプログラムファイル４、ヘッダファイル１と自動生成されたアライメント調整プログラム３等からコンパイルして生成する。
【００２７】
アライメント調整プログラム生成装置２では、構造体などの通信用データを解析し、データ型（バイトデータ、２バイトデータ、４バイトデータ、８バイトデータ、および階層化された構造体など）とデータサイズを判断し、必要な調整処理のコードを生成する。
【００２８】
アライメント調整プログラム生成装置の処理フローを図２に示す。まず、受信データのヘッダファイルを読み込み（Ｓ１）、それが構造体定義データの場合は関数定義コードに変換して出力し（Ｓ２、Ｓ３）、構造体中の構造体データの場合は構造体変換呼び出しコードに変換して出力し（Ｓ４、Ｓ５）、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のアライメント調整コードに変換して出力し（Ｓ６、Ｓ７、Ｓ８）、配列データでない場合はデータ型毎にアライメント調整コードに変換して出力する（Ｓ７、Ｓ９）。これらの処理を読み込んだファイルの終わりまで繰り返す（Ｓ１０）。
【００２９】
このようにして生成されたプログラムコードは、決められたルール（たとえば、構造体名を含む変換プログラムと判別できる）名称で変数を生成することにより、通信データの構造体名称が変更なければ、呼び出し側のユーザプログラムの変更は不要となる。
【００３０】
また、通信データ構造が変更になった場合は、再度アライメント調整プログラム生成装置２にヘッダファイル１を読み込ませてプログラムを生成することにより、アライメント調整処理部分に関してはユーザプログラム４側は意識する必要がない。
【００３１】
＜実施形態２＞アライメント調整用のテーブルを使用する場合
変換テーブルを用いてアライメント調整する場合、図３に示すように、ヘッダファイル１をアライメント調整データ生成装置２Ａに読み込ませて、変換データテーブル５を自動生成する。
【００３２】
アライメント調整データ生成装置２Ａは、その処理フローを図４に示すように、ヘッダファイルを読み込み（Ｓ１１）、それがデータ型定義（バイトデータ、２バイトデータ、４バイトデータ、８バイトデータ、および階層化された構造体など）で配列データの場合は配列用サイズ分だけのアドレスとデータ種別（変換が必要な２バイトデータ、４バイトデータ、８バイトデータの種別）を出力し（Ｓ１２、Ｓ１３、Ｓ１４）、１バイトデータの場合は１データサイズ分のアドレスとデータ種別を出力し（Ｓ１５）、これらデータ種別に応じて変換データテーブル５のアドレスカウンタを更新する（Ｓ１６）。これらの処理を読み込んだファイルの終わりまで繰り返す（Ｓ１７）。
【００３３】
このような処理により、変換テーブルデータが自動で生成されるために、データ変更に伴うデータ作成のミスが無くなる。
【００３４】
＜実施形態３＞エンディアン変換プログラムがデータ型に依存する場合
図５に示すように、通信データ構造を定義したプログラム（例：Ｃ言語ではヘッダファイル）６から、エンディアン変換プログラム生成装置７がエンディアン変換プログラム７を自動生成し、ユーザ作成のプログラム９では、この自動生成されたプログラムを呼び出す。
【００３５】
プログラムの実行ファイルは、ユーザプログラムファイル９、ヘッダファイル６と自動生成されたエンディアン変換プログラム８等からコンパイルして生成する。
【００３６】
エンディアン変換プログラム生成装置７では、構造体などの通信用データを解析し、データ型（バイトデータ、２バイトデータ、４バイトデータ、８バイトデータ、および階層化された構造体など）とデータサイズを判断し、必要な変換処理のコードを生成する。
【００３７】
エンディアンプログラム生成装置７の処理フローを図６に示す。まず、受信データのヘッダファイルを読み込み（Ｓ２１）、それが構造体定義データの場合は関数定義コードに変換して出力し（Ｓ２２、Ｓ２３）、構造体中の構造体データの場合は構造体変換呼び出しコードに変換して出力し（Ｓ２４、Ｓ２５）、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のエンディアン変換コードに変換して出力し（Ｓ２６、Ｓ２７、Ｓ２８）、配列データでない場合はデータ型毎にエンディアン変換コードに変換して出力する（Ｓ２７、Ｓ２９）。これらの処理を読み込んだファイルの終わりまで繰り返す（Ｓ３０）。
【００３８】
このようにして生成された生成されたプログラムコードは、決められたルール（たとえば、構造体名を含む変換プログラムと判別できる）名称で関数を生成することにより、通信データの構造体名称が変更なければ、呼び出し側のユーザプログラムの変更は不要となる。
【００３９】
また、通信データ構造が変更になった場合は、再度エンディアン変換プログラム生成装置７にヘッダファイル６を読み込ませてプログラムを生成することにより、エンディアン処理部分に関してはユーザプログラム９側は意識する必要がない。
【００４０】
＜実施形態４＞エンディアン変換用のテーブルを使用する場合
変換テーブルを用いてエンディアン変換する場合、図７に示すように、ヘッダファイル６をエンディアン変換データ生成装置７Ａに読み込ませて、変換データテーブル１０を自動生成する。
【００４１】
エンディアン変換データ生成装置７Ａでは、その処理フローを図８に示すように、ヘッダファイルを読み込み（Ｓ３１）、それがデータ型定義（バイトデータ、２バイトデータ、４バイトデータ、８バイトデータ、および階層化された構造体など）で配列データの場合は配列用サイズ分だけのアドレスとデータ種別（変換が必要な２バイトデータ、４バイトデータ、８バイトデータの種別）を出力し（Ｓ３２、Ｓ３３、Ｓ３４）、１バイトデータの場合は１データサイズ分のアドレスとデータ種別を出力し（Ｓ３５）、これらデータ種別に応じて変換データテーブル５のアドレスカウンタを更新する（Ｓ３６）。これらの処理を読み込んだファイルの終わりまで繰り返す（Ｓ３７）。
【００４２】
このような処理により、変換テーブルデータが自動で生成されるために、データ変更に伴うデータ作成のミスが無くなる。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施形態１を示すアライメント調整プログラムの生成方式。
【図２】アライメント調整プログラムの生成処理フロー。
【図３】本発明の実施形態２を示すアライメント変換テーブルの生成方式。
【図４】アライメント変換テーブルの生成処理フロー。
【図５】本発明の実施形態３を示すエンディアン変換プログラムの生成方式。
【図６】エンディアン変換プログラムの生成処理フロー。
【図７】本発明の実施形態４を示すエンディアン変換テーブルの生成方式。
【図８】エンディアン変換テーブルの生成処理フロー。
【図９】アライメントの異なるコンピュータ間の従来の通信方式。
【図１０】従来のアライメント調整例。
【図１１】エンディアンの異なるコンピュータ間の従来の通信方式。
【図１２】従来のアライメント調整方式。
【図１３】従来のエンディアン変換方式。
【符号の説明】
【００４４】
１  ヘッダファイル
２  アライメント調整プログラム生成装置
２Ａ  アライメント調整データ生成装置
３  アライメント調整プログラムコード
４  ユーザプログラム
５  変換データテーブル
６  ヘッダファイル
７  エンディアン変換プログラム生成装置
７Ａ  エンディアン変換データ生成装置
８  エンディアン変換プログラム
９  ユーザプログラム
１０  変換データテーブル
【図１】
2009093455.tif 000003
【図２】
2009093455.tif 000004
【図３】
2009093455.tif 000005
【図４】
2009093455.tif 000006
【図５】
2009093455.tif 000007
【図６】
2009093455.tif 000008
【図７】
2009093455.tif 000009
【図８】
2009093455.tif 000010
【図９】
2009093455.tif 000011
【図１０】
2009093455.tif 000012
【図１１】
2009093455.tif 000013
【図１２】
2009093455.tif 000014
【図１３】
2009093455.tif 000015