(第1の実施形態)
図1は、本発明の第1の実施形態の情報処理システム1の構成を示すブロック図である。本実施形態では、情報処理システム1が、ホスト機2と、複数のICカードリーダ3とを備えている。ICカードリーダ3は、通信バス5を介してホスト機2と接続されている。一実施形態では、情報処理システム1は、ETCシステムとして用いてもよく、この場合、ホスト機2及びICカードリーダ3は、料金所に設置される路側装置として用いられる。より具体的には、ICカードリーダ3が料金所の車路のそれぞれに設置され、ホスト機2は、当該料金所に設置されたICカードリーダ3を統括する装置として用いられる。より具体的には、ホスト機2は、ICカードリーダ3を介してICカード4から読み取ったデータ(進入料金所、車種等のデータ)に基づいて課金処理を行い、又は、ICカード4に対して所望のデータ(進入料金所、車種等のデータ)の書き込みを行う。
本実施形態の情報処理システム1は、従前の通信プロトコル(以下、「旧プロトコル」ということがある。)に対応し、新しい通信プロトコル(以下、「新プロトコル」ということがある。)に対応していないICカード4と、旧プロトコルに加え、新プロトコルに対応しているICカード4との両方を取り扱えるように構成される。以下において、旧プロトコルにのみ対応しているICカード4−1を「旧カード4−1」といい、新プロトコルにも対応しているICカード4−2を「新カード4−2」ということがある。
加えて、本実施形態の情報処理システム1では、旧プロトコルにしか対応していないICカードリーダ3と、旧プロトコルに加え、新プロトコルに対応しているICカードリーダ3とが混在していることが許容される。図1においては、参照符号に付された添字“1”は、旧プロトコルにしか対応していない構成要素を示しており、添字“2”は、旧プロトコルと新プロトコルの両方に対応している構成要素を示している。即ち、図1のICカードリーダ3−1と、ICカード4−1とは、旧プロトコルにしか対応しておらず、ICカードリーダ3−2と、ICカード4−2とは、旧プロトコルと新プロトコルの両方に対応している。また、旧プロトコルにしか対応していない構成要素と旧プロトコルと新プロトコルの両方に対応している構成要素とを区別しない場合、添字は参照符号に添付されない。
新プロトコルでの通信は、ICカードリーダ3とICカード4の組み合わせが、いずれも、新プロトコルに対応している場合にのみ行われる。即ち、あるICカード4が、あるICカードリーダ3に挿入された場合に、当該ICカードリーダ3とICカード4の両方が新プロトコルに対応している場合にのみ、新プロトコルでの通信が行われる。
ここで、新プロトコルでの通信では、ICカードリーダ3−2とICカード4−2との間の通信の通信速度が、旧プロトコルでの通信におけるICカードリーダ3(3−1又は3−2)とICカード4−1との通信における通信速度よりも速くなるように設定されている。通信速度の高速化は、ICカードリーダ3−2と新カード4−2の間の通信において、データ演算に割り当てられる時間を増大可能にするという利点がある。例えば、新プロトコルにおいて高度な暗号化処理が行われる場合、暗号化処理に必要なデータ演算量が増大し、データ演算に必要な時間も増大する。このような状況の下で一定時間内でICカード4との通信を完了するためには、暗号化処理に必要な演算を行うための演算時間を確保する必要があり、通信速度の高速化は、演算時間の確保のために有効である。
その一方で、ICカードリーダ3−1が、ハードウェア上の問題によって新プロトコルで用いられる通信速度に対応できない場合には、ICカードリーダ3−1を新プロトコルによる通信に用いることはできない。このような場合、新プロトコルに規定された通信速度で通信可能なハードウェアを有するICカードリーダ3、即ち、ICカードリーダ3−2に置き換える必要性が生じることになる。
理想的には、現状で存在している、旧プロトコルにしか対応していないICカードリーダ3−1の全てを、同時に、新プロトコルに対応しているICカードリーダ3−2に更新することが望ましい。しかしながら、全てのICカードリーダ3−1を同時に更新することは、コスト面から困難なことがある。このような場合、ICカードリーダ3−1をシステムに残存させておくことが考えられる。
その一方で、旧プロトコルにしか対応していないICカードリーダ3−1をシステムに残存させておくと、予期しない動作により、システムに不具合を起こすことがあり得る。特に、旧プロトコルにしか対応していないICカードリーダ3−1に、それが対応できないコマンド(例えば、新プロトコルにのみ規定されているコマンド)を送付すると、ICカードリーダ3−1が誤動作することがあり得る。以下に述べられる本発明の実施形態は、このような問題に対処するためのものである。以下に詳細に後述されるように、本実施形態では、ホスト機2が、各ICカードリーダ3が、旧プロトコルにしか対応していないのか、新プロトコルに対応しているのかを判別し、それぞれのICカードリーダ3に応じた動作を行う。このようなホスト機2の動作により、旧プロトコルにしか対応していないICカードリーダ3−1と、新プロトコルに対応しているICカードリーダ3−2とが混在していても、システムの不具合の発生が防止される。以下、本実施形態のホスト機2について、詳細に説明する。
図2は、本実施形態におけるホスト機2の構成を示すブロック図である。ホスト機2は、通信インタフェース11と、演算装置12と、暗号演算装置13と、記憶装置14とを備えている。
通信インタフェース11は、ICカードリーダ3と接続され、ICカードリーダ3と通信に用いられるインタフェースである。より具体的には、通信インタフェース11は、ICカードリーダ3へのコマンドの送信、ICカードリーダ3からの応答(レスポンス)の受信、ICカードリーダ3を介したICカード4へのコマンドの送信、ICカードリーダ3を介したICカード4からの応答(レスポンス)の受信に使用される。
演算装置12は、ホスト機2の動作において必要となる様々なデータ処理を行う。より具体的には、演算装置12は、ICカードリーダ3及びICカード4に送るべきコマンドを生成し、また、ICカードリーダ3又はICカード4から送られてきた応答を処理する。
暗号演算装置13は、暗号化処理、及び、復号化処理を行う専用の装置である。ICカード4に送られるコマンドは、暗号演算装置13によって暗号化処理が行われ、ICカード4から受け取った応答は、暗号演算装置13によって復号化処理が行われる。
記憶装置14は、ホスト機2において行われるデータ処理において必要となる様々なデータを記憶する記憶部として機能する。詳細には、記憶装置14は、動作プログラム15と、ICカードリーダ情報16とを記憶する。動作プログラム15は、演算装置12が実行すべきデータ処理を記述しており、演算装置12は、動作プログラム15を実行することで、所望のデータ処理を行う。ICカードリーダ情報16は、各ICカードリーダ3に関する情報、特に、各ICカードリーダ3が旧プロトコルにしか対応していないバージョンなのか新プロトコルにも対応しているバージョンなのか判断するために用いられる情報である。本実施形態では、ICカードリーダ情報16として、各ICカードリーダ3のバージョンを示す情報であるバージョン情報が登録される。後述されるように、バージョン情報を参照することで、各ICカードリーダ3が旧プロトコルにしか対応していないバージョンなのか新プロトコルにも対応しているバージョンなのかを判別することができる。ホスト機2の動作については、後に詳細に説明する。
一方、図3は、本実施形態のICカードリーダ3の構成を示すブロック図である。本実施形態のICカードリーダ3は、通信インタフェース21と、ICカードインタフェース22と、演算装置23と、記憶媒体24とを備えている。
通信インタフェース21は、ホスト機2に接続され、ホスト機2と通信するために使用されるインタフェースである。
一方、ICカードインタフェース22は、ICカード4が挿入されるスロットを有しており、挿入されたICカード4と通信するために使用される。ここで、ICカードインタフェース22が対応する通信速度は、旧プロトコルにしか対応していないICカードリーダ3−1と、新プロトコルにも対応しているICカードリーダ3−2とで異なる。旧プロトコルにしか対応していないICカードリーダ3−1のICカードインタフェース22がICカード4と通信可能な速度は、旧プロトコルで規定されている通信速度に限定される。一方、新プロトコルにも対応しているICカードリーダ3−2のICカードインタフェース22は、(旧プロトコルで規定されている通信速度よりも速い)新プロトコルで規定されている通信速度でICカード4−2と通信可能である。
演算装置23は、ICカードリーダ3の動作において必要となる様々なデータ処理を行う。より具体的には、演算装置23は、ホスト機2から送られてきたコマンドを解釈し、そのコマンドに応じたデータ処理を行う。演算装置23によって行われるデータ処理には、コマンドをICカード4に転送する転送処理と、ICカード4から送られてきた応答をホスト機2に転送する動作も行う。加えて、演算装置23は、ホスト機2からICカードリーダ3宛てに送られてきたコマンドに対応した動作を行う。
記憶媒体24は、ICカードリーダ3の動作において必要となる様々なデータを記憶する記憶部として機能する。詳細には、記憶媒体24は、動作プログラム25を記憶する。動作プログラム25は、演算装置23が実行すべきデータ処理を記述しており、演算装置23は、動作プログラム25を実行することで、所望のデータ処理を行う。
続いて、ICカードリーダ3の動作について、図4及び図5を参照しながら説明する。図4は、旧プロトコルにのみ対応しているICカードリーダ3−1の動作の例を示しており、図5は、新プロトコルに対応しているICカードリーダ3−2の動作の例を示している。以下に述べられるICカードリーダ3の動作は、演算装置23が、動作プログラム25を実行することで実現されることに留意されたい。
図4を参照して、旧プロトコルにのみ対応しているICカードリーダ3−1は、ICカード4がICカードリーダ3のスロットに挿入されたことを検知すると(ステップS21)、ICカード検出通知をホスト機2に送信する(ステップS22)。
また、ホスト機2からコマンドを受け取った場合(ステップS23)、ICカードリーダ3−1は、受け取ったコマンドを解釈し、受け取ったコマンドの種類に応じて異なる処理を行う。受け取ったコマンドの解釈は、例えば、コマンドに含まれるヘッダ(コマンドヘッダ)に基づいて行われる。
詳細には、ホスト機2から受け取ったコマンドが基本情報読み出しコマンドである場合、ICカードリーダ3は、ICカード4から基本情報を読み出すための処理を行う(ステップS24)。ここで、基本情報読み出しコマンドとは、ICカード4から基本情報(ICカード4に関する様々な情報)の読み出しを要求するコマンドである。より具体的には、ICカードリーダ3−1は、ホスト機2から受け取った基本情報読み出しコマンドをICカード4に転送し、更に、ICカード4から受け取った基本情報読み出しコマンドに対する応答を、ホスト機2に転送する。この応答には、ICカード4のバージョンを示すバージョン情報が含まれている。このバージョン情報から、ホスト機2は、ICカード4が、旧カード4−1と新カード4−2のいずれであるかを判断することができる。
更に、ホスト機2から受け取ったコマンドがカード排出コマンドである場合、ICカードリーダ3−1は、挿入されたICカード4をICカードリーダ3のスロットから排出する(ステップS25)。
また、ホスト機2から受け取ったコマンドが、ICカードリーダ3−1が対応していないコマンドであると解釈した場合、ICカードリーダ3−1は、ホスト機2に、異常応答(即ち、異常なコマンドを受け取ったことをホスト機2に通知する応答)を返す(ステップS26)。
更に、ホスト機2から受け取ったコマンドが、ICカード4に向けて送信されたコマンド(ICカードコマンド)であると解釈した場合、ICカードリーダ3−1は、当該ICカードコマンドをICカード4に転送する(ステップS27)。
また、ホスト機2から受け取ったコマンドが、ICカードリーダ3にバージョンを問い合わせるバージョン問合せコマンドであると解釈した場合、ICカードリーダ3−1は、そのバージョンを示すバージョン情報をホスト機2に送信する(ステップS28)。ただし、旧プロトコルにしか対応していないICカードリーダ3−1が既設である場合には、ICカードリーダ3−1が、バージョン問合せコマンドに対応していない場合があり得る。この場合、当該ICカードリーダ3−1は、バージョン問合せコマンドを受け取っても、バージョン情報をホスト機2に通知しないことになる。
一方、図5に図示されているように、新プロトコルに対応しているICカードリーダ3−2は、概略的には旧プロトコルにのみ対応しているICカードリーダ3−1と類似した動作を行う。相違点は、新プロトコルに対応しているICカードリーダ3−2は、ホスト機2から新プロトコル切替コマンドを受け取ると、その動作を、新プロトコルに対応した動作に切り替えることである(ステップS29)。具体的には、ICカードリーダ3−2は、ICカードインタフェース22がICカード4と通信する通信速度を、新プロトコルに規定された通信速度に切り換える。これにより、ICカードリーダ3−2は、以後、ICカード4との通信を、新プロトコルに規定された通信速度で行うことができるような状態になる。
なお、新たに導入するICカードリーダ3−2については、その仕様設計により、バージョン問合せコマンドに応答してバージョン情報をホスト機2に返すように設計することが可能である。即ち、新プロトコルに対応しているICカードリーダ3−2については、バージョン問合せコマンドに応答してバージョン情報をホスト機2に返すという前提で、ホスト機2の動作を設計してもよい。
続いて、本実施形態のホスト機2の動作について説明する。本実施形態のホスト機2は、上述された動作を行う、旧プロトコルにのみ対応するICカードリーダ3−1と、新プロトコルにも対応するICカードリーダ3−2のいずれにも対応した動作を行う。詳細には、ホスト機2は、各ICカードリーダ3から得た情報によって、各ICカードリーダ3が旧プロトコルにしか対応していないのか、新プロトコルにも対応しているのかを判断し、その判断に基づいて、各ICカードリーダ3とICカード4との間の通信で使用される通信プロトコルを切り替える動作を行う。
より具体的には、本実施形態では、ホスト機2は、各ICカードリーダ3に、そのバージョンを問い合わせるバージョン問合せを送信し、ICカードリーダ3からのバージョン問合せに対する応答として、バージョン情報を得る。ホスト機2は、旧プロトコルにしか対応していないICカードリーダ3−1については、旧プロトコルに規定されているコマンドを発行してICカードリーダ3に送信する。一方、新プロトコルに対応しているICカードリーダ3については、ホスト機2は、新プロトコルに規定されているコマンドを発行してICカードリーダ3に送信する。以下では、ホスト機2の動作の詳細について説明する。
図6A、図6Bは、本実施形態のホスト機2の動作の詳細を示すフローチャートである。以下に述べられるホスト機2の動作は、演算装置12が、動作プログラム15を実行することで実現されることに留意されたい。
図6Aを参照して、各ICカードリーダ3(図6A、図6Bでは、「ICCR」と記載されている)が起動すると、起動したことをホスト機2に知らせる起動通知がホスト機2に送られる。ホスト機2の演算装置12は、各ICカードリーダ3から起動通知を受け取ると、ICカードリーダ3の起動に応答した処理設定を行う(ステップS01)。例えば、起動通知を送ったICカードリーダ3が起動したことを示す情報を記憶装置14のICカードリーダ情報16に登録する。
更に、ホスト機2の演算装置12は、起動したICカードリーダ3(即ち、起動通知を送信したICカードリーダ3)に、バージョン問合せコマンドを発行する(ステップS02)。発行されたバージョン問合せコマンドは、起動したICカードリーダ3に送られる。ホスト機2の演算装置12は、バージョン問合せコマンドを発行した後、起動したICカードリーダ3からの応答を待つ(ステップS03)。
ホスト機2の演算装置12は、起動したICカードリーダ3からの応答が正常であると判断した場合(ステップS04)、該応答に含まれているバージョン情報を、記憶装置14のICカードリーダ情報16に登録する。起動したICカードリーダ3が旧プロトコルにしか対応していないバージョンである場合、該ICカードリーダ3が旧プロトコルにしか対応していないバージョンである旨を示す情報がICカードリーダ情報16に登録されることになる(ステップS06)。また、起動したICカードリーダ3が新プロトコルに対応しているバージョンである場合、該ICカードリーダ3が新プロトコルに対応しているバージョンである旨を示す情報がICカードリーダ情報16に登録されることになる(ステップS07)。
ここで、ステップS04において、起動したICカードリーダ3からの応答が異常であると判断された場合にも、該ICカードリーダ3が旧プロトコルにしか対応していないバージョンである旨を示すバージョン情報がICカードリーダ情報16に登録される(ステップS07)。
一方、ステップS03において、起動したICカードリーダ3からの応答を受け取らずに所定時間が経過してタイムアウトが発生した場合、ホスト機2の演算装置12は、バージョン問合せコマンドの発行回数が所定の上限回数に到達するまで、繰り返してバージョン問合せコマンドを発行する(ステップS08)。バージョン問合せコマンドの発行回数が、所定の上限回数に到達すると、起動したICカードリーダ3をリセットし(ステップS09)、更に、該ICカードリーダ3が旧プロトコルにしか対応していないバージョンである旨を示すバージョン情報がICカードリーダ情報16に登録される。ステップS09においてICカードリーダ3がリセットされるのは、バージョン問合せコマンドに対する応答を返さない場合、ICカードリーダ3が、バージョン問合せコマンドを受け取ったことにより、不所望な動作を行っている(例えば、暴走している)ことが考えられるからである。ICカードリーダ3をリセットすることで、当該ICカードリーダ3を元の状態に戻すことができる。
ステップS01〜S09の処理は、各ICカードリーダ3が起動するごとに、起動したICカードリーダ3に対して行われる。なお、ホスト機2に接続されているICカードリーダ3の全てが一斉に起動される場合には、各ICカードリーダ3について、順次にステップS01〜S09の処理が行われても良い。
図6Bを参照して、各ICカードリーダ3は、それにICカード4が挿入されたことを検出すると、ICカード4の挿入を検出したことを示すICカード検出通知をホスト機2に送信する。ホスト機2の演算装置12は、そのICカード検出通知を受け取ると(ステップS10)、基本情報読み出しコマンドを発行し、該ICカードリーダ3に送信する(ステップS11)。ICカードリーダ3は、該基本情報読み出しコマンドをICカード4に転送すると共に、ICカード4からの応答をホスト機2に転送する。基本情報読み出しコマンドのICカード4への転送、及び、基本情報読み出しコマンドに対する応答のホスト機2への転送は、旧プロトコルに従って行われる。基本情報読み出しコマンドに対する応答には、ICカード4のバージョンを示すバージョン情報が含まれている。
ホスト機2の演算装置12は、基本情報読み出しコマンドに対する応答から、挿入されたICカード4が正常なカードであるか否かを判断する(ステップS12)。正常なカードでないと判断した場合、ホスト機2の演算装置12は、カード排出コマンドを発行してICカードリーダ3に送信する(ステップS17)。これにより、該挿入されたICカード4に対する処理は完了する。
一方、挿入されたICカード4が正常なカードであると判断した場合、ホスト機2の演算装置12は、基本情報読み出しコマンドに対する応答に含まれているバージョン情報から、挿入されたICカード4が、旧カード4−1と新カード4−2のいずれであるかを判断する(ステップS13)。
基本情報読み出しコマンドに対する応答に含まれているバージョン情報により、挿入されたICカード4が旧カード4−1と判断される場合、又は、何らかの不具合によって基本情報読み出しコマンドに旧カード4−1と新カード4−2のいずれであるかを示す情報が含まれていない場合、ホスト機2の演算装置12は、旧プロトコルによる処理を継続する(ステップS14)。この場合、ホスト機2の演算装置12は、旧プロトコルに規定されたICカードコマンドを発行し、発行したICカードコマンドをICカードリーダ3を介してICカード4に転送する。
一方、挿入されたICカード4が新カード4−2と判断される場合、ホスト機2の演算装置12は、記憶装置14に記憶されているICカードリーダ情報16を参照して、ICカード4が挿入されたICカードリーダ3のバージョン情報を確認する(ステップS15)。
該ICカードリーダ3のバージョン情報からICカード4が挿入されたICカードリーダ3が新プロトコルに対応しているICカードリーダ3−2と判断した場合、ホスト機2の演算装置12は、当該ICカードリーダ3と、それに挿入されたICカード4(新カード4−2)とを、新プロトコルによる通信を行う状態に切り換える(ステップS16)。より具体的には、当該ICカード4とICカードリーダ3のそれぞれに、それぞれが新プロトコルに対応する動作を開始するように指示する新プロトコル要求コマンドを送る。その後、ホスト機2の演算装置12は、新プロトコルに規定されたICカードコマンドを発行し、発行したICカードコマンドを該ICカードリーダ3を介して該ICカード4に転送する。
一方、該ICカードリーダ3のバージョン情報から、ICカード4が挿入されたICカードリーダ3が旧プロトコルにのみ対応しているICカードリーダ3−1と判断した場合、ホスト機2の演算装置12は、旧プロトコルによる処理を継続する(ステップS14)。ICカードリーダ情報16に登録されている該ICカードリーダ3のバージョン情報が不定である場合も、ホスト機2は、ICカード4が挿入されたICカードリーダ3が旧プロトコルにのみ対応しているICカードリーダ3−1と判断する。これらの場合、ホスト機2の演算装置12は、旧プロトコルに規定されたICカードコマンドを発行し、発行したICカードコマンドを、ICカードリーダ3を介してICカード4に転送する。
所定の処理が完了すると、ホスト機2は、カード排出コマンドを発行してICカードリーダ3に送信する(ステップS17)。これにより、該挿入されたICカード4に対する処理は完了する。
図7、図8、図9A〜図9C、図10A〜図10Cは、上記の動作を行うホスト機2及びICカードリーダ3(旧プロトコルにのみ対応しているICカードリーダ3−1、及び、新プロトコルに対応しているICカードリーダ3−2)が情報処理システム1に組み込まれた場合の、情報処理システム1全体の動作を示している。情報処理システム1の動作は、ICカード4が挿入されたICカードリーダ3が、旧プロトコルにのみ対応しているICカードリーダ3−1であるか、新プロトコルに対応しているICカードリーダ3−2であるかに応じて異なる。以下、それぞれの場合について、説明する。
(1)ICカード4が挿入されたICカードリーダ3が、新プロトコルに対応している場合
図7及び図8は、ICカード4が挿入されたICカードリーダ3が、新プロトコルに対応しているICカードリーダ3−2である場合の情報処理システム1の動作を示す図である。ここで、図7は、挿入されたICカード4が旧カード4−1である場合の動作を示しており、図8は、挿入されたICカード4が新カード4−2である場合の動作を示している。
ICカード4が挿入されたICカードリーダ3が、新プロトコルに対応している場合、ホスト機2は、ICカード4が挿入されたICカードリーダ3へのバージョン問合せコマンドの応答に含まれるバージョン情報から、該ICカードリーダ3が新プロトコルに対応しているICカードリーダ3−2であると認識する。そして、ホスト機2は、挿入されたICカード4が旧カード4−1であるか新カード4−2であるかに応じて、旧プロトコルのまま通信を継続するか、新プロトコルへの切り替えが行われるかを決定する。
詳細には、図7、図8に図示されているように、ICカードリーダ3−2が起動されると、ホスト機2は、バージョン問合せコマンドをICカードリーダ3−2に送信する。ICカードリーダ3−2は、自身が新プロトコルに対応しているバージョンであることを示すバージョン情報をホスト機2に返す。これにより、ホスト機2は、該ICカードリーダ3−2が、新プロトコルに対応していることを認識することができる。
更に、ICカード4がICカードリーダ3−2に挿入されると、ICカードリーダ3−2は、挿入されたICカード4を活性化するための動作を行う。例えば、ICカードリーダ3−2は、挿入されたICカード4への電力及び動作クロックの供給を開始すると共に、リセット信号をICカード4に供給する。ICカード4が活性化されると、該ICカード4は、活性化応答をICカードリーダ3−2に送る。ICカードリーダ3−2は、ICカード4から活性化応答を受け取ると、ICカード4がICカードリーダ3−2に挿入されたことを知らせるICカード検出通知をホスト機2に送信する。
ICカード検出通知がホスト機2に送られると、ホスト機2とICカード4との間で、ICカードリーダ3−2を介した通信が開始される。ホスト機2とICカード4との間の通信は、まず、旧プロトコルで開始される。詳細には、ホスト機2は、基本情報読み出し要求コマンドを、ICカードリーダ3−2に送る。ICカードリーダ3−2は、受け取った基本情報読み出し要求コマンドをICカード4に転送する。ICカード4は、ICカードリーダ3を介して基本情報読み出し要求コマンドへの応答をホスト機2に送信する。以上の動作は、ICカードリーダ3に挿入されたICカード4が、旧カード4−1、新カード4−2のいずれである場合も同一である。
基本情報読み出し要求コマンドへの応答には、挿入されたICカード4のバージョンを示すバージョン情報が含まれている。このバージョン情報から、ホスト機2は、挿入されたICカード4が旧プロトコルにのみ対応している旧カード4−1であるか、新プロトコルに対応している新カード4−2であるかを判断することができる。
図7に図示されているように、基本情報読み出し要求コマンドへの応答に含まれているバージョン情報からICカードリーダ3−2に挿入されたICカード4が旧カード4−1であることを認識すると、ホスト機2は、旧プロトコルでの通信を継続し、旧プロトコルで定義されているICカードコマンドをICカードリーダ3−2に送る。ICカードリーダ3−2は、ホスト機2から送られてきたICカードコマンドを旧カード4−1に転送する。旧カード4−1は、受け取った各ICカードコマンドに対する応答を、ICカードリーダ3−2を介してホスト機2に送信する。旧カード4−1に所望のICカードコマンドを送信し、且つ、それらに対する応答を受け取ると、ホスト機2は、旧カード4−1との通信を完了し、旧カード4−1をICカードリーダ3−2から排出する。
一方、図8に図示されているように、基本情報読み出し要求コマンドへの応答に含まれているバージョン情報からICカードリーダ3−2に挿入されたICカード4が旧カード4−1であることを認識すると、ホスト機2は、通信に用いられるプロトコルを、旧プロトコルから新プロトコルに切り替える動作を行う。詳細には、ホスト機2は、新カード4−2に、新プロトコルに対応した動作に切り換えるように要求する新プロトコル切替要求コマンドを送信する。図8においては、この新プロトコル切替要求コマンドは、「新プロトコル切替要求(カード)」として図示されている。新カード4−2は、新プロトコル切替要求コマンドを受け取ると、新プロトコルに対応する動作を開始するとともに、この新プロトコル切替要求コマンドに対する応答をホスト機2に返す。ホスト機2は、この応答により、新カード4−2が新プロトコルに対応する動作を開始したことを認識することができる。
ホスト機2は、新カード4−2から新プロトコル切替要求コマンドに対する応答を受け取ると、ICカードリーダ3−2に新プロトコルに対応した動作に切り換えるように要求する新プロトコル切替要求コマンドを送信する。図8においては、この新プロトコル切替要求コマンドは、「新プロトコル切替要求(リーダ)」として図示されている。ICカードリーダ3−2は、新プロトコル切替要求コマンドを受け取ると、新プロトコルに対応した動作を開始するとともに、この新プロトコル切替要求コマンドに対する応答をホスト機2に返す。
その後、ホスト機2は、所望の動作を実現するためのICカードコマンドを、新カード4−2に送信し、新カード4−2は、受け取った各ICカードコマンドに対する応答をホスト機2−2に送信する。ホスト機2−2と新カード4−2との間で交換されるICカードコマンド及び応答は、いずれも、新プロトコルで定義されているものが使用される。
以上に説明されているように、ICカード4が挿入されたICカードリーダ3が新プロトコルに対応している場合には、該ICカード4が旧カード4−1、新カード4−2のいずれであるかに応じて、旧プロトコルでの通信が継続され、又は、新プロトコルへの切り替えが行われる。
(2)ICカード4が挿入されたICカードリーダ3が、旧プロトコルにのみ対応している場合
図9A〜図9C及び図10A〜図10Cは、ICカード4が挿入されるICカードリーダ3が、旧プロトコルにのみ対応しているICカードリーダ3−1である場合の情報処理システム1の動作を示す図である。ここで、図9A〜図9Cは、挿入されたICカード4が旧カード4−1である場合の動作を示しており、図10A〜図10Cは、挿入されたICカード4が新カード4−2である場合の動作を示している。ICカード4が挿入されたICカードリーダ3が旧プロトコルにのみ対応している場合、ホスト機2は、ICカード4が挿入されたICカードリーダ3へのバージョン問合せコマンドの応答から、該ICカードリーダ3が旧プロトコルにのみ対応しているICカードリーダ3−1であると認識する。そして、ホスト機2は、挿入されたICカード4が旧カード4−1であるか新カード4−2であるかに関わらず、旧プロトコルの通信を継続する。
ここで、旧プロトコルにのみ対応しているICカードリーダ3−1が既設である場合、該ICカードリーダ3−1が、バージョン問合せコマンドに対応している場合と、対応していない場合とが想定される。図9A、図10Aは、ICカードリーダ3−1がバージョン問合せに対応している場合の動作を示している。
図9A、図10Aに図示されているように、ICカードリーダ3−1が起動されると、ホスト機2は、バージョン問合せコマンドをICカードリーダ3−1に送信する。ICカードリーダ3−1は、自身が旧プロトコルにのみ対応しているバージョンであることを示すバージョン情報をホスト機2に返す。これにより、ホスト機2は、該ICカードリーダ3−1が、旧プロトコルにのみ対応していることを認識することができる。
更に、ICカード4がICカードリーダ3−1に挿入されると、ICカードリーダ3−1は、挿入されたICカード4を活性化するための動作を行う。ICカード4が活性化されると、該ICカード4は、活性化応答をICカードリーダ3−1に送る。ICカードリーダ3−1は、ICカード4から活性化応答を受け取ると、ICカード4のICカードリーダ3−1への挿入を検知したことを知らせるICカード検出通知をホスト機2に送信する。
ICカード検出通知がホスト機2に送られると、ホスト機2とICカード4との間で、ICカードリーダ3を介した通信が行われる。ホスト機2とICカード4との間の通信は、まず、旧プロトコルで開始される。詳細には、ホスト機2は、基本情報読み出し要求コマンドを、ICカードリーダ3−1に送る。ICカードリーダ3−1は、受け取った基本情報読み出し要求コマンドをICカード4に転送する。ICカード4は、ICカードリーダ3を介して基本情報読み出し要求コマンドへの応答をホスト機2に送信する。以上の動作は、ICカード4が、旧カード4−1、新カード4−2のいずれである場合も同一である。
基本情報読み出し要求コマンドへの応答には、挿入されたICカード4が、旧プロトコルにのみ対応している旧カード4−1であるか、新プロトコルに対応している新カード4−2であるかを示す情報(例えば、挿入されたICカード4のバージョン情報)が含まれている。しかしながら、ホスト機2は、挿入されたICカード4が、旧カード4−1である場合(図9A)及び新カード4−2である場合(図10A)のいずれであっても、旧プロトコルでの通信を継続する。詳細には、ホスト機2は、旧プロトコルで定義されているICカードコマンドをICカードリーダ3−1に送る。ICカードリーダ3−1は、ホスト機2から送られてきたICカードコマンドをICカード4に転送する。ICカード4は、受け取った各ICカードコマンドに対する応答を、ICカードリーダ3−1を介してホスト機2に送信する。挿入されたICカード4に所望のICカードコマンドを送信し、且つ、それらに対する応答を受け取ると、ホスト機2は、ICカード4との通信を完了し、ICカード4をICカードリーダ3−1から排出する。
一方、図9B、図9C、図10B、図10Cは、ICカードリーダ3−1がバージョン問合せコマンドに対応していない場合の動作を示している。バージョン問合せコマンドに対応していないICカードリーダ3−1がバージョン問合せコマンドを受け取った場合、当該ICカードリーダ3−1は、受け取ったコマンドに対応していないことを示す応答(異常応答)を返す場合がある(図9B、図10B)。この場合、異常応答が返されたことから、ホスト機2は、該ICカードリーダ3−1が、旧プロトコルにのみ対応していると判断する。
また、バージョン問合せコマンドに対応していないICカードリーダ3−1がバージョン問合せコマンドを受け取った場合、当該ICカードリーダ3−1は、何らの応答も返さない場合があり得る。(図9C、図10C)。この場合、ホスト機2は、カードリーダ3−1から何らの応答も受け取らないまま所定時間が経過し、タイムアウトが発生することになる。タイムアウトが発生した場合、ホスト機2は、バージョン問合せコマンドの発行回数が所定の上限回数に到達するまで繰り返してバージョン問合せコマンドを発行する。
バージョン問合せコマンドの発行回数が所定の上限回数に到達してもバージョン問合せコマンドに対する応答を、ICカードリーダ3−1から受け取らなかった場合、ホスト機2は、該ICカードリーダ3−1が、旧プロトコルにのみ対応していると判断する。
いずれの場合でも、ホスト機2は、ICカードリーダ3−1が、旧プロトコルにのみ対応していると判断すると、旧プロトコルでの通信を継続して行う。ICカード4がICカードリーダ3−1に挿入された後の動作は、上述された、ICカードリーダ3−1がバージョン問合せコマンドに対応している場合の動作(図9A、図10A)と同一である。
以上に説明されているように、ホスト機2は、バージョン問合せコマンドへの応答からICカード4が挿入されたICカードリーダ3が旧プロトコルにのみ対応していると判断すると、旧プロトコルでの通信を継続して行う。この場合、新プロトコルにのみ規定されているコマンド(新プロトコル切替要求コマンド、及び、ICカードコマンド)は、ICカードリーダ3−1及びICカード4に送られない。このため、ICカードリーダ3−1が予期しない動作を行うことによるシステムの不具合の発生を抑制することができる。
(第2の実施形態)
図11は、第2の実施形態における、新プロトコルに対応するICカードリーダ3−2の動作を示すフローチャートであり、図12A、図12Bは、第2の実施形態におけるホスト機2の動作を示すフローチャートである。第2の実施形態の情報処理システム1は、第1の実施形態と同様の構成を有しているが、ホスト機2及びICカードリーダ3の動作が変更される。
より具体的には、第2の実施形態では、ホスト機2が、ICカード4がICカードリーダ3に挿入されたときに該ICカードリーダ3からホスト機2に送られるICカード検出通知に含まれる情報から、該ICカードリーダ3が旧プロトコルにのみ対応しているバージョンか、新プロトコルに対応しているバージョンかを判断する。ここで、新プロトコルに対応するICカードリーダ3−2は、図11に図示されているように、ICカード検出通知に、自身が新プロトコルに対応するバージョンであることを示すバージョン情報を組み込むように設計される(ステップS22)。ホスト機2は、その情報から、ICカード4が挿入されたICカードリーダ3が、新プロトコルに対応するICカードリーダ3−2であると判断する。本実施形態では、新プロトコルに対応するICカードリーダ3−2は、第1の実施形態のように、バージョン問合せリクエストに応答する機能(図5のステップS28)を必要とされない。
一方、旧プロトコルにしか対応していないICカードリーダ3−1が既設である場合、該ICカードリーダ3−1は、自身のバージョンを示すバージョン情報をICカード検出通知に組み込むとは限らない。そこで、ホスト機2は、あるICカードリーダ3から受け取ったICカード検出通知に、該ICカードリーダ3のバージョンを示すバージョン情報が含まれていない場合には、該ICカードリーダ3が旧プロトコルにのみ対応するICカードリーダ3−1であると判断する。ここで、ホスト機2は、ICカード4が挿入されたICカードリーダ3が旧プロトコルにのみ対応するバージョンであることを示すバージョン情報がICカード検出通知に含まれている場合には、その情報から、ICカード4が挿入されたICカードリーダ3が、旧プロトコルにのみ対応するICカードリーダ3−1であると確定的に判断することができる。一方、ICカード検出通知に、そのような情報が含まれていなくても、該ICカードリーダ3が新プロトコルに対応するバージョンであることを示すバージョン情報が含まれていない場合には、ホスト機2は、該ICカードリーダ3が旧プロトコルにのみ対応するICカードリーダ3−1であると判断する。
続いて、図12A、図12Bを参照しながら、本実施形態におけるホスト機2の動作について説明する。
図12Aを参照して、各ICカードリーダ3(図12Aでは、「ICCR」と記載されている)が起動すると、起動したことをホスト機2に知らせる起動通知がホスト機2に送られる。ホスト機2の演算装置12は、各ICカードリーダ3から起動通知を受け取ると、ICカードリーダ3の起動に応答した処理設定を行う(ステップS01)。例えば、起動通知を送ったICカードリーダ3が起動したことを示す情報を記憶装置14のICカードリーダ情報16に登録する。
その後、各ICカードリーダ3が、それぞれにICカード4が挿入されたことを検出すると、ICカード4の挿入を検出したことを示すICカード検出通知をホスト機2に送信する。
ホスト機2の演算装置12は、ICカード検出通知を受け取ると(ステップS10)、そのICカード検出通知に、ICカード4が挿入されたICカードリーダ3のバージョン情報(ICカードリーダ3が旧プロトコルにしか対応していないバージョンか、新プロトコルに対応しているバージョンかを示す情報)が含まれているかを判断する(ステップS31)。バージョン情報が含まれていない場合、ICカードリーダ情報16に登録されている、ICカードリーダ3のバージョン情報は、不定のままである。
一方、ICカード検出通知にバージョン情報が含まれている場合、ホスト機2の演算装置12は、該バージョン情報を、記憶装置14のICカードリーダ情報16に登録する。ICカード4が挿入されたICカードリーダ3が新プロトコルに対応しているバージョンである場合(ステップS32)、該ICカードリーダ3が新プロトコルに対応しているバージョンである旨を示す情報がICカードリーダ情報16に登録されることになる(ステップS33)。また、ICカード4が挿入されたICカードリーダ3が旧プロトコルにしか対応していないバージョンである場合(ステップS32)、該ICカードリーダ3が旧プロトコルにしか対応していないバージョンである旨を示す情報がICカードリーダ情報16に登録されることになる(ステップS34)。
続いて、ホスト機2の演算装置12は、基本情報読み出しコマンドを発行し、該ICカードリーダ3に送信する(ステップS11)。ICカードリーダ3は、該基本情報読み出しコマンドをICカード4に転送すると共に、ICカード4からの応答をホスト機2に転送する。基本情報読み出しコマンドのICカード4への転送、及び、基本情報読み出しコマンドに対する応答のホスト機2への転送は、旧プロトコルに従って行われる。基本情報読み出しコマンドに対する応答には、ICカード4が、旧カード4−1と新カード4−2のいずれであるかを示す情報(例えば、ICカード4のバージョンを示すバージョン情報)が含まれている。
ホスト機2の演算装置12は、基本情報読み出しコマンドに対する応答から、挿入されたICカード4が正常なカードであるか否かを判断する(ステップS12)。正常なカードでないと判断した場合、ホスト機2の演算装置12は、カード排出コマンドを発行してICカードリーダ3に送信する(ステップS17)。これにより、該挿入されたICカード4に対する処理は完了する。
一方、挿入されたICカード4が正常なカードであると判断した場合、ホスト機2の演算装置12は、基本情報読み出しコマンドに対する応答から、挿入されたICカード4が、旧カード4−1と新カード4−2のいずれであるかを判断する(ステップS13)。
基本情報読み出しコマンドに対する応答に含まれている情報により、挿入されたICカード4が旧カード4−1と判断される場合、又は、何らかの不具合によって基本情報読み出しコマンドに旧カード4−1と新カード4−2のいずれであるかを示す情報が含まれていない場合、ホスト機2の演算装置12は、旧プロトコルによる処理を継続する(ステップS14)。この場合、ホスト機2の演算装置12は、旧プロトコルに規定されたICカードコマンドを発行し、発行したICカードコマンドをICカードリーダ3を介してICカード4に転送する。
一方、挿入されたICカード4が、新カード4−2と判断される場合、更に、ホスト機2の演算装置12は、記憶装置14に記憶されているICカードリーダ情報16を参照して、ICカード4が挿入されたICカードリーダ3のバージョン情報を確認する(ステップS15)。
該ICカードリーダ3のバージョン情報からICカード4が挿入されたICカードリーダ3が新プロトコルに対応しているICカードリーダ3−2と判断した場合、ホスト機2の演算装置12は、当該ICカードリーダ3と、それに挿入されたICカード4(新カード4−2)とを、新プロトコルに対応する動作に切り換える(ステップS16)。より具体的には、当該ICカード4とICカードリーダ3のそれぞれに、それぞれが新プロトコルに対応する動作を開始するように指示する新プロトコル要求コマンドを送る。その後、ホスト機2の演算装置12は、新プロトコルに規定されたICカードコマンドを発行し、発行したICカードコマンドを該ICカードリーダ3を介して該ICカード4に転送する。
一方、該ICカードリーダ3のバージョン情報から、ICカード4が挿入されたICカードリーダ3が旧プロトコルにのみ対応しているICカードリーダ3−1と判断した場合、ホスト機2の演算装置12は、旧プロトコルによる処理を継続する(ステップS14)。ICカードリーダ情報16に登録されている該ICカードリーダ3のバージョン情報が不定である場合も、ホスト機2は、ICカード4が挿入されたICカードリーダ3が旧プロトコルにのみ対応しているICカードリーダ3−1と判断する。これらの場合、ホスト機2の演算装置12は、旧プロトコルに規定されたICカードコマンドを発行し、発行したICカードコマンドを、ICカードリーダ3を介してICカード4に転送する。
所定の処理が完了すると、ホスト機2は、カード排出コマンドを発行してICカードリーダ3に送信する(図12AのステップS17)。これにより、該挿入されたICカード4に対する処理は完了する。
図13、図14、図15A、図15B、図16A、図16Bは、上記の動作を行うホスト機2及びICカードリーダ3(旧プロトコルにのみ対応しているICカードリーダ3−1、及び、新プロトコルに対応しているICカードリーダ3−2)が情報処理システム1に組み込まれた場合の、情報処理システム1全体の動作を示している。情報処理システム1の動作は、ICカード4が挿入されたICカードリーダ3が、旧プロトコルにのみ対応しているICカードリーダ3−1であるか、新プロトコルに対応しているICカードリーダ3−2であるかに応じて異なる。以下、それぞれの場合について、説明する。
(1)ICカード4が挿入されたICカードリーダ3が、新プロトコルに対応している場合
図13及び図14は、ICカード4が挿入されたICカードリーダ3が、新プロトコルに対応しているICカードリーダ3−2である場合の情報処理システム1の動作を示す図である。ここで、図13は、挿入されたICカード4が旧カード4−1である場合の動作を示しており、図14は、挿入されたICカード4が新カード4−2である場合の動作を示している。
ICカード4が挿入されたICカードリーダ3が新プロトコルに対応している場合、ホスト機2は、該ICカードリーダ3から送られてくるICカード挿入通知から、該ICカードリーダ3が新プロトコルに対応しているICカードリーダ3−2であると認識する。そして、ホスト機2は、挿入されたICカード4が旧カード4−1であるか新カード4−2であるかに応じて、旧プロトコルのまま通信を継続するか、新プロトコルへの切り替えが行われるかを決定する。
詳細には、図13、図14に図示されているように、ICカード4がICカードリーダ3−2に挿入されると、ICカードリーダ3−2は、挿入されたICカード4を活性化するための動作を行う。ICカード4が活性化されると、該ICカード4は、活性化応答をICカードリーダ3−2に送る。ICカードリーダ3−2は、ICカード4から活性化応答を受け取ると、ICカード4がICカードリーダ3−2に挿入されたことを知らせるICカード検出通知をホスト機2に送信する。ホスト機2は、該ICカード挿入通知から、ICカード4が挿入されたICカードリーダ3が新プロトコルに対応しているICカードリーダ3−2であると認識する。
ICカード検出通知がホスト機2に送られると、ホスト機2とICカード4との間で、ICカードリーダ3−2を介した通信が行われる。ホスト機2とICカード4との間の通信は、まず、旧プロトコルで開始される。詳細には、ホスト機2は、基本情報読み出し要求コマンドを、ICカードリーダ3−2に送る。ICカードリーダ3−2は、受け取った基本情報読み出し要求コマンドをICカード4に転送する。ICカード4は、ICカードリーダ3を介して基本情報読み出し要求コマンドへの応答をホスト機2に送信する。以上の動作は、ICカード4が、旧カード4−1、新カード4−2のいずれである場合も同一である。
基本情報読み出し要求コマンドへの応答には、挿入されたICカード4が、旧プロトコルにのみ対応している旧カード4−1であるか、新プロトコルに対応している新カード4−2であるかを示す情報(例えば、挿入されたICカード4のバージョン情報)が含まれている。
図13に図示されているように、基本情報読み出し要求コマンドへの応答からICカードリーダ3−2に挿入されたICカード4が旧カード4−1であることを認識すると、ホスト機2は、旧プロトコルでの通信を継続し、旧プロトコルで定義されているICカードコマンドをICカードリーダ3−2に送る。ICカードリーダ3−2は、ホスト機2から送られてきたICカードコマンドを旧カード4−1に転送する。旧カード4−1は、受け取った各ICカードコマンドに対する応答を、ICカードリーダ3−2を介してホスト機2に送信する。旧カード4−1に所望のICカードコマンドを送信し、且つ、それらに対する応答を受け取ると、ホスト機2は、旧カード4−1との通信を完了し、旧カード4−1をICカードリーダ3−2から排出する。
一方、図14に図示されているように、基本情報読み出し要求コマンドへの応答からICカードリーダ3−2に挿入されたICカード4が旧カード4−1であることを認識すると、ホスト機2は、通信に用いられるプロトコルを、旧プロトコルから新プロトコルに切り替える動作を行う。詳細には、ホスト機2は、新カード4−2に、新プロトコルに対応した動作に切り換えるように要求する新プロトコル切替要求コマンドを送信する。図14においては、この新プロトコル切替要求コマンドは、「新プロトコル切替要求(カード)」として図示されている。新カード4−2は、新プロトコル切替要求コマンドを受け取ると、新プロトコルに対応する動作を開始するとともに、この新プロトコル切替要求コマンドに対する応答をホスト機2に返す。ホスト機2は、この応答により、新カード4−2が新プロトコルに対応する動作を開始したことを認識することができる。
ホスト機2は、新カード4−2から新プロトコル切替要求コマンドに対する応答を受け取ると、ICカードリーダ3−2に新プロトコルに対応した動作に切り換えるように要求する新プロトコル切替要求コマンドを送信する。図8においては、この新プロトコル切替要求コマンドは、「新プロトコル切替要求(リーダ)」として図示されている。ICカードリーダ3−2は、新プロトコル切替要求コマンドを受け取ると、新プロトコルに対応した動作を開始するとともに、この新プロトコル切替要求コマンドに対する応答をホスト機2に返す。
その後、ホスト機2は、所望の動作を実現するためのICカードコマンドを、新カード4−2に送信し、新カード4−2は、受け取った各ICカードコマンドに対する応答をホスト機2−2に送信する。ホスト機2−2と新カード4−2との間で交換されるICカードコマンド及び応答は、いずれも、新プロトコルで定義されているものが使用される。
以上に説明されているように、ICカード4が挿入されたICカードリーダ3が新プロトコルに対応している場合には、該ICカード4が旧カード4−1、新カード4−2のいずれであるかに応じて、旧プロトコルでの通信が継続され、又は、新プロトコルへの切り替えが行われる。
(2)ICカード4が挿入されたICカードリーダ3が、旧プロトコルにのみ対応している場合
図15A、図15B、図16A、及び図16Bは、ICカード4が挿入されるICカードリーダ3が、旧プロトコルにのみ対応しているICカードリーダ3−1である場合の情報処理システム1の動作を示す図である。ここで、図15A、図15Bは、挿入されたICカード4が旧カード4−1である場合の動作を示しており、図16A、図16Bは、挿入されたICカード4が新カード4−2である場合の動作を示している。ICカード4が挿入されたICカードリーダ3が旧プロトコルにのみ対応している場合、ホスト機2は、ICカード4が挿入されたICカードリーダ3へのバージョン問合せコマンドの応答から、該ICカードリーダ3が旧プロトコルにのみ対応しているICカードリーダ3−1であると認識する。そして、ホスト機2は、挿入されたICカード4が旧カード4−1であるか新カード4−2であるかに関わらず、旧プロトコルの通信を継続する。
ここで、旧プロトコルにのみ対応しているICカードリーダ3−1が既設である場合、該ICカードリーダ3−1が、そのバージョンを示す情報(バージョン情報)をICカード検出通知に組み込んで送信する場合と、そうしない場合とが想定される。図15A、図16Aは、ICカードリーダ3−1がバージョン情報をICカード検出通知に組み込んで送信する場合の動作を示している。
図15A、図16Aに図示されているように、ICカード4がICカードリーダ3−1に挿入されると、ICカードリーダ3−1は、挿入されたICカード4を活性化するための動作を行う。ICカード4が活性化されると、該ICカード4は、活性化応答をICカードリーダ3−1に送る。ICカードリーダ3−1は、ICカード4から活性化応答を受け取ると、ICカード4がICカードリーダ3−1に挿入されたことを知らせるICカード検出通知をホスト機2に送信する。ホスト機2は、該ICカード挿入通知から、ICカード4が挿入されたICカードリーダ3が旧プロトコルにのみ対応しているICカードリーダ3−1であると認識する。
ICカード検出通知がホスト機2に送られると、ホスト機2とICカード4との間で、ICカードリーダ3を介した通信が行われる。ホスト機2とICカード4との間の通信は、まず、旧プロトコルで開始される。詳細には、ホスト機2は、基本情報読み出し要求コマンドを、ICカードリーダ3−1に送る。ICカードリーダ3−1は、受け取った基本情報読み出し要求コマンドをICカード4に転送する。ICカード4は、ICカードリーダ3を介して基本情報読み出し要求コマンドへの応答をホスト機2に送信する。以上の動作は、ICカード4が、旧カード4−1、新カード4−2のいずれである場合も同一である。
基本情報読み出し要求コマンドへの応答には、挿入されたICカード4が、旧プロトコルにのみ対応している旧カード4−1であるか、新プロトコルに対応している新カード4−2であるかを示す情報(例えば、挿入されたICカード4のバージョン情報)が含まれている。しかしながら、ホスト機2は、既に、ICカード4が挿入されたICカードリーダ3が旧プロトコルにしか対応していないと認識しているので、挿入されたICカード4が、旧カード4−1である場合(図15A)及び新カード4−2である場合(図16A)のいずれであっても、旧プロトコルでの通信を継続する。詳細には、ホスト機2は、旧プロトコルで定義されているICカードコマンドをICカードリーダ3−1に送る。ICカードリーダ3−1は、ホスト機2から送られてきたICカードコマンドをICカード4に転送する。ICカード4は、受け取った各ICカードコマンドに対する応答を、ICカードリーダ3−1を介してホスト機2に送信する。挿入されたICカード4に所望のICカードコマンドを送信し、且つ、それらに対する応答を受け取ると、ホスト機2は、ICカード4との通信を完了し、ICカード4をICカードリーダ3−1から排出する。
一方、図15B及び図16Bは、ICカードリーダ3−1が、そのバージョンを示す情報(バージョン情報)をICカード検出通知に組み込んで送信しない場合の動作を示している。ICカードリーダ3−1が、そのバージョンを示す情報(バージョン情報)をICカード検出通知に組み込んで送信しない場合、ホスト機2は、該ICカード挿入通知から、ICカード4が挿入されたICカードリーダ3が旧プロトコルにのみ対応しているICカードリーダ3−1であると判断する。ICカード4がICカードリーダ3−1に挿入された後の動作は、上述された、ICカードリーダ3−1が、そのバージョンを示す情報(バージョン情報)をICカード検出通知に組み込んで送信する場合の動作(図15A、図16A)と同一である。
以上に説明されているように、ホスト機2は、ICカード検出通知から、ICカード4が挿入されたICカードリーダ3が旧プロトコルにのみ対応していると判断すると、旧プロトコルでの通信を継続して行う。この場合、新プロトコルにのみ規定されているコマンド(新プロトコル切替要求コマンド、及び、ICカードコマンド)は、ICカードリーダ3−1及びICカード4に送られない。このため、ICカードリーダ3−1が予期しない動作を行うことによるシステムの不具合の発生を抑制することができる。
本実施形態において、第1の実施形態と同様に、ホスト機2が、各ICカードリーダ3が起動したときに、そのバージョンを問い合わせるバージョン問合せコマンドをICカードリーダ3に送信してもよい。バージョン問合せコマンドを送信するか否かは、情報処理システム1の運用者の設定に依存して決定してもよい。
図17A〜図17Cは、この場合のホスト機2の動作を示すフローチャートである。運用者が、各ICカードリーダ3が起動したときに、そのバージョンを問い合わせるバージョン問合せコマンドをICカードリーダ3に送信するようにホスト機2を設定した場合(ステップS51)、ホスト機2は、起動したICカードリーダ3(即ち、起動通知を送信したICカードリーダ3)に、バージョン問合せコマンドを発行する(ステップS02)。以後、第1の実施形態で説明したステップS03〜S09が実行され、起動したICカードリーダ3が、旧プロトコルにのみ対応するバージョンか、新プロトコルに対応するバージョンかが判断され、いずれのバージョンかを示す情報が、記憶装置14のICカードリーダ情報16として登録される。
一方、バージョン問合せコマンドを送信しないようにホスト機2を設定した場合、この段階では、起動したICカードリーダ3のバージョンは不定であり、記憶装置14のICカードリーダ情報16のバージョン情報は、不定のまま残される(ステップS52)。
その後、各ICカードリーダ3が、それぞれにICカード4が挿入されたことを検出すると、ICカード4の挿入を検出したことを示すICカード検出通知をホスト機2に送信する。ICカード検出通知を受け取って以降のホスト機2の動作は、上述された、本実施形態のホスト機2の動作と同一である(ステップS31〜S34,S11〜S17)。
以上に説明されているように、本実施形態のホスト機2は、ICカード検出通知からICカード4が挿入されたICカードリーダ3が旧プロトコルにのみ対応していると判断すると、旧プロトコルでの通信を継続して行う。この場合、新プロトコルにのみ規定されているコマンド(新プロトコル切替要求コマンド、及び、ICカードコマンド)は、ICカードリーダ3−1及びICカード4に送られない。このため、ICカードリーダ3−1が予期しない動作を行うことによるシステムの不具合の発生を抑制することができる。
以上には、本発明の実施形態が具体的に記述されているが、本発明は、上記の実施形態に限定されない。本発明が、様々な変更と共に実施可能であることは、当業者には自明的であろう。例えば、上述の実施形態では、ICカードリーダ3が、そのスロットにICカード4が挿入されたことを検知してICカード検出通知をホスト機2に送信するように構成されていると説明されているが、ICカードリーダ3は、スロットを有するものに限定されず、ICカード4を何らかの手段で検出できればよい。例えば、上述の実施形態では、ICカードリーダ3は、ICカード4からの活性化応答に応答してICカード検出通知を送信するとして記述されている。