説明

通信プロトコル

【課題】 多量の数値データを含むメッセージを送受信する通信システムにおいて、経済的かつ効率のよい通信を的確に行う。
【解決手段】 通信メッセージ11を数値データが含まれるデータ列12と、データ列12の先頭に付加されるヘッダ13とで構成する。データ列12中の数値データを、ASCIIコードに変換することなく、そのまま16進数の数値で表す。ただし、データ列12で使用可能な数値に上限値を設定する。そして、ヘッダ13にその上限値を超える特定の数値、例えば、2バイト16進数の最大値である「0xFF」を4回連続させて指定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信メッセージをコンピュータが認識可能な形式に変換するプログラム、特に、数値データを含むメッセージの通信に適した通信プロトコルに関する。
【背景技術】
【0002】
従来、通信ソースをASCIIコードに変換し、多数のASCIIコードを並べて通信メッセージを構成する通信プロトコルが知られている。メッセージを送受信する上で、メッセージの始めと終わりを認識することは重要であり、特に、メッセージの始まりを認識できないと、コンピュータは受信したメッセージを解読することが困難となる。ASCIIコードでは、図5に示すように、メッセージの先頭に付される“STX”に「0x02」が用意され、メッセージの末尾に付される“ETX”に「0x03」が用意されている。このため、コンピュータは“STX”,“ETX”をデータ中の他の文字(数字:「0x3*」、英文字:「0x4*」,「0x5*」)と区別して認識できる。
【0003】
しかし、ASCIIコード変換を行う通信プロトコルにおいて、16進数の数値をそのまま1バイトで表すと、コンピュータが16進数の数値データ「0x02」を“STX”として誤認する可能性がある。そこで、従来の通信プロトコルは、図6に示すように、メッセージ51の先頭に“STX”を付加し、末尾に“ETX”を付加し、データ列52中の複数の数値データをそれぞれ二つのASCIIコードに変換している。この方式によれば、例えば、“データ1”の数値「0x02」が「0」を表すASCIIコード「0x30」と、「2」を表すASCIIコード「0x32」とに分割されるため、“STX”を“データ1”と混同する可能性がなくなる。
【0004】
なお、特許文献1には、7ビットのASCIIコードを6ビットの短縮コードに変換することで、文字データを圧縮する方法が記載されている。特許文献2には、複数の文字列をASCIIコード中の制御コードに割り当てて符号化する方法が記載されている。
【特許文献1】特開2005−31868号公報
【特許文献2】特開平11−85459号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
ところが、従来の通信プロトコルによると、データ列52中の数値データを二つのASCIIコードに変換しているので、1バイトの数値データを送るのに2バイトの電文長が必要になる。このため、多量の数値データを含むメッセージ51を送受信する際に、電文53の全長がいたずらに長くなり、通信時間がかかり、有料回線を使用する場合にパケット料等の通信費が高くつく問題点があった。また、多量の数値データをASCIIコードに変換すると、制御プログラムの負担が重くなるため、コンピュータによる他の処理が遅くなる不都合もあった。
【0006】
そこで、本発明の目的は、コンピュータが数値データを含むメッセージの通信を効率よく行うことができる通信プロトコルを提供することにある。
【課題を解決するための手段】
【0007】
上記の課題を解決するために、本発明の通信プロトコルは、通信メッセージをコンピュータが認識可能な形式に変換するプログラムであって、通信メッセージを数値データが含まれるデータ列と、データ列の先頭に付加されるヘッダとで構成し、データ列中の数値データを特定値を除く16進数の数値で表し、ヘッダに該特定値を表す16進数の数値を指定することを特徴とする。
【0008】
ここで、ヘッダに指定する16進数の数値は、データ列中に発生し得ない特定の数値である。該特定値の選定にあたり、好ましくは、次の手段を採用できる。
(1)データ列中で使用可能な数値に上限値を設定し、ヘッダにその上限値を超える特定値を指定する。この場合、上限値は、特定の数値や桁数に限定されず、通信プロトコルの適用分野、又は該プロトコルが扱う数値データの種類等に応じて適宜に設定できる。
(2)ヘッダに16進数の特定値を複数回連続させて指定する。特定値及びこれを連続させる回数は、特に限定されず、通信プロトコルの適用分野、又は数値データの種類等に応じて適宜に選択できる。
(3)例えば、特定値に2バイト16進数の最大値である「0xFF」を用い、ヘッダに該数値を複数回連続させて指定することができる。
【0009】
また、本発明は上記通信プロトコルに次の手段を加えて実施することも可能である。
(4)データ列中にメッセージの長さを示す指標となる16進数の数値を付加する。
(5)データ列中にノイズ等による通信エラーを示す16進数の数値を付加する。
【発明の効果】
【0010】
本発明の通信プロトコルは、データ列中の数値データを16進数の数値で表すので、1バイトの数値データを分割することなく1バイトのままで送受信できる。このため、メッセージの長さを短くし、通信時間を短縮して、通信費を節約できるとともに、ASCIIコードへの変換処理を不要にして、コンピュータの負担を軽減できる。また、データ列中に発生し得ない特定値をヘッダに指定するので、コンピュータが数値データをヘッダと誤認する可能性もなくなる。従って、本発明の通信プロトコルによれば、特に多量の数値データを含むメッセージを送る場合に、経済的かつ効率のよい通信を的確に行うことができるという効果がある。
【発明を実施するための最良の形態】
【0011】
以下、本発明を実施するための最良の形態を図面に基づいて説明する。図1に示すように、この実施形態の通信システム1は、ネットワーク2に接続された複数のコンピュータ3が通信プロトコル4を用いて主に数値データからなるビジネスメッセージの送受信を行うように構成されている。通信プロトコル4は、通信プログラムの一部として各コンピュータ3に実装され、受信したメッセージを該コンピュータ3の他のプログラムが認識可能な形式に変換する。以下に、通信プロトコル4の具体的な機能について幾つかの実施例をあげて詳細に説明する。
【実施例1】
【0012】
図2に示すように、実施例1の通信プロトコルでは、メッセージ11が多数の数値データを並べたデータ列12と、データ列12の先頭に位置するヘッダ13とで構成されている。データ列12の数値データは、ASCIIコード等への変換を行わずに、そのまま16進数の数値で表されている。例えば、送信先の“アドレス”は「0x80」、“コマンド”は「0xA1」、“データ1”は「0x02」でそれぞれ表現されている。そして、ヘッダ13に2バイト16進数の最大値である「0xFF」が指定されている。
【0013】
しかし、「0xFF」はデータ列12の中に多数紛れ込んでいるはずであるから、実施例1の通信プロトコルは、データ列12で使用可能な数値に上限値を設定し、ヘッダ13にその上限値を超える特定の数値を指定する。具体的には、データ列12中の数値を10進数の8桁までに制限する。10進数の「99,999,999」は16進数の「0x5F5E0FF」である。これを上限値に設定すれば、データ列12に「0xFF」が連続して現れる最大値は「0x4FFFFFF」(83,886,079)であり、「FF」が3回連続する。従って、ヘッダ13に「FF」が4回連続する特定の数値、つまり「0xFFFFFFFF」を指定すれば、ヘッダ13と数値データとの混同を回避できる。
【0014】
この場合、実際の電文14がヘッダ13の表示に4バイトを必要とするため、“STX”にASCIIコードの「0x02」(図6参照)を指定する従来と比較し、ヘッダ13の電文長が4倍となる。しかし、実施例1の通信プロトコルによれば、例えば、ASCIIコードで200バイトを要したデータ列12の電文長が半分の100バイトまで圧縮される。このため、電文14の全長が差し引き96バイトに相当する長さだけ短くなる。従って、メッセージ11に含まれる数値データの量が増えるほど、通信時間を短縮でき、有料回線を利用する場合にパケット料等の通信費を節約できて、経済的かつ効率のよい通信を的確に行うことができる。
【実施例2】
【0015】
図3に示すように、実施例2の通信プロトコルでは、メッセージ21がデータ列22とヘッダ23とで構成され、データ列22の先頭付近に“データ長”を表すセル25が設けられている。“データ長”はデータ列22の全長をバイトで示すデータであり、データ列22の他の数値データと同様、16進数の数値でセル25に表されている。例えば、データ列22に99の数値データが含まれている場合、セル25に自身を含む“データ長”が「0x64」(10進数の100)で表記される。
【0016】
こうすれば、セル25のデータに基づいてコンピュータ3が受信した電文24の終わりを正しく認識できる。従って、ASCIIコードの“ETX”をメッセージ21から省略したとしても、通信になんらの支障をきたさない。その他の構成、作用効果は実施例1と同じである。
【実施例3】
【0017】
図4に示すように、実施例3の通信プロトコルでは、メッセージ31がデータ列32とヘッダ33とで構成され、データ列32の末尾に“BCC”を表すセル35が設けられている。“BCC”は電文34にノイズ等による通信エラーが生じていないかどうかを示すデータであり、データ列32の他の数値データと同様、16進数の数値でセル35に表記されている。ここで、“BCC”の計算結果が「0xFF」となる可能性がある。さらに偶然に、“BCC”直前の“データ99”が「0x4FFFFFF」であった場合、“BCC”と合わせて「FF」が4回連続し、これをコンピュータ3がヘッダ33と誤認するおそれがある。
【0018】
従って、実施例3の通信プロトコルは、“BCC”を付加する場合に、「FF」が5回連続する特定の数値、つまり「0xFFFFFFFFFF」をヘッダ33に指定する。こうすれば、“BCC”によるエラー表示機能を備えた通信システム1において、ヘッダ33と数値データとの混同を確実に回避することができる。その他の構成、作用効果は実施例1と同じである。
【図面の簡単な説明】
【0019】
【図1】本発明の通信プロトコルが適用される通信システムの概略図である。
【図2】実施例1の通信プロトコルを示す機能図である。
【図3】実施例2の通信プロトコルを示す機能図である。
【図4】実施例3の通信プロトコルを示す機能図である。
【図5】従来の通信プロトコルが使用するASCIIコード表である。
【図6】従来の通信プロトコルを示す機能図である。
【符号の説明】
【0020】
1 通信システム
2 ネットワーク
3 コンピュータ
4 通信プロトコル
11,21,31 メッセージ
12,22,32 データ列
13,23,33 ヘッダ
14,24,34 電文

【特許請求の範囲】
【請求項1】
通信メッセージをコンピュータが認識可能な形式に変換するプログラムであって、通信メッセージを数値データが含まれるデータ列と、データ列の先頭に付加されるヘッダとで構成し、データ列中の数値データを特定値を除く16進数の数値で表し、ヘッダに該特定値を表す16進数の数値を指定することを特徴とする通信プロトコル。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate