説明

コンピュータ間のデータ通信方式

【課題】処理データのアライメントまたはエンディアンが異なるコンピュータ間通信に、アライメント調整またはエンディアン変換を確実、容易にする。
【解決手段】処理データのアライメントが異なるコンピュータ間のデータ通信に、アライメント調整プログラム生成装置2は、受信データのヘッダファイル1を読み込み、それが構造体定義データの場合は関数定義コードに変換し、構造体中の構造体データの場合は構造体変換呼び出しコードに変換し、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のアライメント調整コードに変換し、配列データでない場合はデータ型毎にアライメント調整コードに変換して、アライメント調整プログラム3を生成、または、アライメント変換テーブルを生成する。同様に、エンディアン変換プログラムやエンディアン変換テーブルを作成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理データのアライメントやエンディアンが異なるコンピュータ間のデータ通信方式に関する。
【背景技術】
【0002】
図9に示すように、シリアル通信、ネットワーク等で接続されたコンピュータ(機器)間の通信において、アライメントの異なるデータ通信を行う場合、送信側が受信側のデータアライメントに合わせたアライメント調整して送信、または受信側が自身のアライメントに合わせて受信している。
【0003】
さらに、コンピュータによっては、処理データのアクセス単位が異なるものがあり、1バイト単位、2バイト単位、4バイト単位などでそれぞれ異なっており、単純にある決められたデータ構造を転送するだけではデータのやりとりができない。このため、一方が他方のデータのアライメントに合わせて調整している。
【0004】
図10は、shortデータが2バイト、floatデータが4バイトのデータ構造をもつ機器からの送信データを、4バイト単位で処理するコンピュータが受信する場合のアライメント調整例を示し、受信側コンピュータは最初に受信する4バイトデータのうち、2バイトデータ「データ1」を4バイト単位でコピーし、残りの2バイトデータと次に受信する4バイトデータのうちの2バイトデータを「データ2」を4バイト単位でコピーする。
【0005】
また、図11に示すように、ネットワーク接続されたコンピュータ間において、エンディアン形式が異なるCPU間でデータ通信を行う場合、通信時のエンディアンルールを決め、送信側または受信側またはその双方が、エンディアン変換するようにしている(例えば特許文献1参照)。図11では受信側にエンディアン変換処理をもつ場合である。
【0006】
エンディアン変換は、2バイト以上のデータ量をもつデータを記録/転送するときに1バイトごとに分割し、最上位のバイトから順番に記録/転送する「ビッグエンディアン」方式と、最下位のバイトから順番に記録/転送する「リトルエンディアン」方式がある。
【特許文献1】特開2005−227998号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
データのアライメント調整には、扱うデータのバイトサイズにより処理内容が異なるため、さまざまなデータサイズが複合されている構造体のような形でデータを送信する場合には、データ構造を意識してアライメント調整を行う必要がある。このため、システムの機能追加などにより、送信するデータ構造の変更が発生すると、その度にデータ構造に応じたアライメント調整プログラムを修正する必要がある。
【0008】
データ構造の変更に伴い、アライメント調整プログラム修正に影響されないようにするためには、図12に示すような調整用のデータテーブルを用意し、データ構造に応じた調整用テーブルを作成してデータを変更して対応する方法もある。
【0009】
データテーブルには、データのアドレス(オフセット)とデータ型の組の情報を持ち、アライメント調整プログラムはこれらの情報から通信データを調整する。この場合は、調整用テーブルが変更になった場合は、その都度データ構造を意識して人が作成する必要があった。このため、通信データ内のデータ配列の個数が変更になっただけでも、それ以降の全てのデータを修正する必要があり、手間がかかっていた。
【0010】
同様に、エンディアン変換には、扱うデータのバイトサイズにより処理内容が異なるため、さまざまなデータサイズが複合されている構造体のような形でデータを送信する場合には、データ構造を意識してエンディアン変換を行う必要がある。このため、システムの機能追加などにより、送信するデータ構造の変更が発生すると、その度にデータ構造に応じたエンディアン変換プログラムを修正する必要がある。
【0011】
データ構造の変更に伴い、エンディアン変換プログラム修正に影響されないようにするためには、図13に示すような変換用のデータテーブルを用意し、データ構造に応じた変換用テーブルを作成してデータを変更して対応する方法もある。
【0012】
データテーブルには、データのアドレス(オフセット)とデータ型の組の情報を持ち、エンディアン変換プログラムはこれらの情報から通信データを変換する。この場合は、変換用テーブルが変更になった場合は、その都度データ構造を意識して人が作成する必要があった。このため、通信データ内のデータ配列の個数が変更になっただけでも、それ以降の全てのデータを修正する必要があり、手間がかかっていた。
【0013】
本発明の目的は、処理データのアライメントまたはエンディアンが異なるコンピュータ間通信に、アライメント調整またはエンディアン変換を確実、容易にしたコンピュータ間のデータ通信方式を提供することにある。
【課題を解決するための手段】
【0014】
本発明は、前記の課題を解決するため、アライメント調整処理プログラムまたはアライメント調整用の変換テーブルを受信データ構造から自動生成、エンディアン変換処理プログラムまたはエンディアン変換用の変換テーブルを通信データ構造から自動生成するようにしたもので、以下の方式を特徴とする。
【0015】
(1)処理データのアライメントが異なるコンピュータ間のデータ通信方式であって、
前記コンピュータは、受信データの構造からアライメント調整プログラムまたは調整用の変換テーブルを自動生成する生成装置を備えたことを特徴とする。
【0016】
(2)前記生成装置は、受信データのヘッダファイルを読み込み、それが構造体定義データの場合は関数定義コードに変換し、構造体中の構造体データの場合は構造体変換呼び出しコードに変換し、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のアライメント調整コードに変換し、配列データでない場合はデータ型毎にアライメント調整コードに変換する処理を、読み込んだファイルの終わりまで繰り返して前記アライメント調整プログラムを生成することを特徴とする。
【0017】
(3)前記生成装置は、受信データのヘッダファイルを読み込み、それがデータ型定義で配列データの場合は配列用サイズ分だけのアドレスとデータ種別を出力し、1バイトデータの場合は1データサイズ分のアドレスとデータ種別を出力し、これらデータ種別に応じて前記変換テーブルのアドレスカウンタを更新する処理を、読み込んだファイルの終わりまで繰り返して前記アライメント変換テーブルを生成することを特徴とする。
【0018】
(4)処理データのエンディアンが異なるコンピュータ間のデータ通信方式であって、
前記コンピュータは、受信データの構造からエンディアン変換プログラムまたはエンディアン変換用の変換テーブルを自動生成する生成装置を備えたことを特徴とする。
【0019】
(5)前記生成装置は、受信データのヘッダファイルを読み込み、それが構造体定義データの場合は関数定義コードに変換し、構造体中の構造体データの場合は構造体変換呼び出しコードに変換し、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のエンディアン変換コードに変換し、配列データでない場合はデータ型毎にエンディアン変換コードに変換する処理を、読み込んだファイルの終わりまで繰り返して前記エンディアン変換プログラムを生成することを特徴とする。
【0020】
(6)前記生成装置は、受信データのヘッダファイルを読み込み、それがデータ型定義で配列データの場合は配列用サイズ分だけのアドレスとデータ種別を出力し、1バイトデータの場合は1データサイズ分のアドレスとデータ種別を出力し、これらデータ種別に応じて前記変換テーブルのアドレスカウンタを更新する処理を、読み込んだファイルの終わりまで繰り返して前記エンディアン変換テーブルを生成することを特徴とする。
【発明の効果】
【0021】
以上のとおり、本発明によれば、アライメント調整処理プログラムまたはアライメント調整用の変換テーブルを受信データ構造から自動生成、エンディアン変換処理プログラムまたはエンディアン変換用の変換テーブルを通信データ構造から自動生成するようにしたため、アライメント調整またはエンディアン変換が確実、容易になる。
【0022】
具体的には、
・ユーザプログラムではアライメント調整やエンディアン変換を意識せずに作成できる。
【0023】
・データ送信用のデータ構造の変更に対して、柔軟に対応ができる。
【0024】
・変換プログラムまたは変換データを自動生成するために、アライメント調整処理やエンディアン変換処理における不具合が無くなる。
【発明を実施するための最良の形態】
【0025】
<実施形態1>アライメント調整プログラムがデータ型に依存する場合
図1に示すように、通信データ構造を定義したプログラム(例:C言語ではヘッダファイル)1から、アライメント調整プログラム生成装置2がアライメント調整プログラム3を自動生成し、この自動生成されたプログラムをユーザ作成のプログラム4が呼び出す。
【0026】
プログラムの実行ファイルは、ユーザプログラムファイル4、ヘッダファイル1と自動生成されたアライメント調整プログラム3等からコンパイルして生成する。
【0027】
アライメント調整プログラム生成装置2では、構造体などの通信用データを解析し、データ型(バイトデータ、2バイトデータ、4バイトデータ、8バイトデータ、および階層化された構造体など)とデータサイズを判断し、必要な調整処理のコードを生成する。
【0028】
アライメント調整プログラム生成装置の処理フローを図2に示す。まず、受信データのヘッダファイルを読み込み(S1)、それが構造体定義データの場合は関数定義コードに変換して出力し(S2、S3)、構造体中の構造体データの場合は構造体変換呼び出しコードに変換して出力し(S4、S5)、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のアライメント調整コードに変換して出力し(S6、S7、S8)、配列データでない場合はデータ型毎にアライメント調整コードに変換して出力する(S7、S9)。これらの処理を読み込んだファイルの終わりまで繰り返す(S10)。
【0029】
このようにして生成されたプログラムコードは、決められたルール(たとえば、構造体名を含む変換プログラムと判別できる)名称で変数を生成することにより、通信データの構造体名称が変更なければ、呼び出し側のユーザプログラムの変更は不要となる。
【0030】
また、通信データ構造が変更になった場合は、再度アライメント調整プログラム生成装置2にヘッダファイル1を読み込ませてプログラムを生成することにより、アライメント調整処理部分に関してはユーザプログラム4側は意識する必要がない。
【0031】
<実施形態2>アライメント調整用のテーブルを使用する場合
変換テーブルを用いてアライメント調整する場合、図3に示すように、ヘッダファイル1をアライメント調整データ生成装置2Aに読み込ませて、変換データテーブル5を自動生成する。
【0032】
アライメント調整データ生成装置2Aは、その処理フローを図4に示すように、ヘッダファイルを読み込み(S11)、それがデータ型定義(バイトデータ、2バイトデータ、4バイトデータ、8バイトデータ、および階層化された構造体など)で配列データの場合は配列用サイズ分だけのアドレスとデータ種別(変換が必要な2バイトデータ、4バイトデータ、8バイトデータの種別)を出力し(S12、S13、S14)、1バイトデータの場合は1データサイズ分のアドレスとデータ種別を出力し(S15)、これらデータ種別に応じて変換データテーブル5のアドレスカウンタを更新する(S16)。これらの処理を読み込んだファイルの終わりまで繰り返す(S17)。
【0033】
このような処理により、変換テーブルデータが自動で生成されるために、データ変更に伴うデータ作成のミスが無くなる。
【0034】
<実施形態3>エンディアン変換プログラムがデータ型に依存する場合
図5に示すように、通信データ構造を定義したプログラム(例:C言語ではヘッダファイル)6から、エンディアン変換プログラム生成装置7がエンディアン変換プログラム7を自動生成し、ユーザ作成のプログラム9では、この自動生成されたプログラムを呼び出す。
【0035】
プログラムの実行ファイルは、ユーザプログラムファイル9、ヘッダファイル6と自動生成されたエンディアン変換プログラム8等からコンパイルして生成する。
【0036】
エンディアン変換プログラム生成装置7では、構造体などの通信用データを解析し、データ型(バイトデータ、2バイトデータ、4バイトデータ、8バイトデータ、および階層化された構造体など)とデータサイズを判断し、必要な変換処理のコードを生成する。
【0037】
エンディアンプログラム生成装置7の処理フローを図6に示す。まず、受信データのヘッダファイルを読み込み(S21)、それが構造体定義データの場合は関数定義コードに変換して出力し(S22、S23)、構造体中の構造体データの場合は構造体変換呼び出しコードに変換して出力し(S24、S25)、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のエンディアン変換コードに変換して出力し(S26、S27、S28)、配列データでない場合はデータ型毎にエンディアン変換コードに変換して出力する(S27、S29)。これらの処理を読み込んだファイルの終わりまで繰り返す(S30)。
【0038】
このようにして生成された生成されたプログラムコードは、決められたルール(たとえば、構造体名を含む変換プログラムと判別できる)名称で関数を生成することにより、通信データの構造体名称が変更なければ、呼び出し側のユーザプログラムの変更は不要となる。
【0039】
また、通信データ構造が変更になった場合は、再度エンディアン変換プログラム生成装置7にヘッダファイル6を読み込ませてプログラムを生成することにより、エンディアン処理部分に関してはユーザプログラム9側は意識する必要がない。
【0040】
<実施形態4>エンディアン変換用のテーブルを使用する場合
変換テーブルを用いてエンディアン変換する場合、図7に示すように、ヘッダファイル6をエンディアン変換データ生成装置7Aに読み込ませて、変換データテーブル10を自動生成する。
【0041】
エンディアン変換データ生成装置7Aでは、その処理フローを図8に示すように、ヘッダファイルを読み込み(S31)、それがデータ型定義(バイトデータ、2バイトデータ、4バイトデータ、8バイトデータ、および階層化された構造体など)で配列データの場合は配列用サイズ分だけのアドレスとデータ種別(変換が必要な2バイトデータ、4バイトデータ、8バイトデータの種別)を出力し(S32、S33、S34)、1バイトデータの場合は1データサイズ分のアドレスとデータ種別を出力し(S35)、これらデータ種別に応じて変換データテーブル5のアドレスカウンタを更新する(S36)。これらの処理を読み込んだファイルの終わりまで繰り返す(S37)。
【0042】
このような処理により、変換テーブルデータが自動で生成されるために、データ変更に伴うデータ作成のミスが無くなる。
【図面の簡単な説明】
【0043】
【図1】本発明の実施形態1を示すアライメント調整プログラムの生成方式。
【図2】アライメント調整プログラムの生成処理フロー。
【図3】本発明の実施形態2を示すアライメント変換テーブルの生成方式。
【図4】アライメント変換テーブルの生成処理フロー。
【図5】本発明の実施形態3を示すエンディアン変換プログラムの生成方式。
【図6】エンディアン変換プログラムの生成処理フロー。
【図7】本発明の実施形態4を示すエンディアン変換テーブルの生成方式。
【図8】エンディアン変換テーブルの生成処理フロー。
【図9】アライメントの異なるコンピュータ間の従来の通信方式。
【図10】従来のアライメント調整例。
【図11】エンディアンの異なるコンピュータ間の従来の通信方式。
【図12】従来のアライメント調整方式。
【図13】従来のエンディアン変換方式。
【符号の説明】
【0044】
1 ヘッダファイル
2 アライメント調整プログラム生成装置
2A アライメント調整データ生成装置
3 アライメント調整プログラムコード
4 ユーザプログラム
5 変換データテーブル
6 ヘッダファイル
7 エンディアン変換プログラム生成装置
7A エンディアン変換データ生成装置
8 エンディアン変換プログラム
9 ユーザプログラム
10 変換データテーブル

【特許請求の範囲】
【請求項1】
処理データのアライメントが異なるコンピュータ間のデータ通信方式であって、
前記コンピュータは、受信データの構造からアライメント調整プログラムまたは調整用の変換テーブルを自動生成する生成装置を備えたことを特徴とするコンピュータ間のデータ通信方式。
【請求項2】
前記生成装置は、受信データのヘッダファイルを読み込み、それが構造体定義データの場合は関数定義コードに変換し、構造体中の構造体データの場合は構造体変換呼び出しコードに変換し、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のアライメント調整コードに変換し、配列データでない場合はデータ型毎にアライメント調整コードに変換する処理を、読み込んだファイルの終わりまで繰り返して前記アライメント調整プログラムを生成することを特徴とする請求項1に記載のコンピュータ間のデータ通信方式。
【請求項3】
前記生成装置は、受信データのヘッダファイルを読み込み、それがデータ型定義で配列データの場合は配列用サイズ分だけのアドレスとデータ種別を出力し、1バイトデータの場合は1データサイズ分のアドレスとデータ種別を出力し、これらデータ種別に応じて前記変換テーブルのアドレスカウンタを更新する処理を、読み込んだファイルの終わりまで繰り返して前記アライメント変換テーブルを生成することを特徴とする請求項1に記載のコンピュータ間のデータ通信方式。
【請求項4】
処理データのエンディアンが異なるコンピュータ間のデータ通信方式であって、
前記コンピュータは、受信データの構造からエンディアン変換プログラムまたはエンディアン変換用の変換テーブルを自動生成する生成装置を備えたことを特徴とするコンピュータ間のデータ通信方式。
【請求項5】
前記生成装置は、受信データのヘッダファイルを読み込み、それが構造体定義データの場合は関数定義コードに変換し、構造体中の構造体データの場合は構造体変換呼び出しコードに変換し、データ定義の場合はそれが配列データの場合はデータ型毎に配列用のエンディアン変換コードに変換し、配列データでない場合はデータ型毎にエンディアン変換コードに変換する処理を、読み込んだファイルの終わりまで繰り返して前記エンディアン変換プログラムを生成することを特徴とする請求項4に記載のコンピュータ間のデータ通信方式。
【請求項6】
前記生成装置は、受信データのヘッダファイルを読み込み、それがデータ型定義で配列データの場合は配列用サイズ分だけのアドレスとデータ種別を出力し、1バイトデータの場合は1データサイズ分のアドレスとデータ種別を出力し、これらデータ種別に応じて前記変換テーブルのアドレスカウンタを更新する処理を、読み込んだファイルの終わりまで繰り返して前記エンディアン変換テーブルを生成することを特徴とする請求項4に記載のコンピュータ間のデータ通信方式。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2009−93455(P2009−93455A)
【公開日】平成21年4月30日(2009.4.30)
【国際特許分類】
【出願番号】特願2007−264101(P2007−264101)
【出願日】平成19年10月10日(2007.10.10)
【出願人】(000006105)株式会社明電舎 (1,739)
【Fターム(参考)】