(57)【要約】【課題】非接触通信システムにおいて、ＩＣカード側では決済が完了しているにも拘らず、R/W側では決済が完了していない事態の発生を抑止する。【解決手段】送信部２６は、所定のタイミングで送信バッファ２７に保持しているレスポンスをアドレス順に読み出して送信することにより、レスポンスをR/W２に対して送信する。また、送信部２６は、送信バッファ２７においてレスポンスが保持されているアドレスの次のアドレスを、割込発生アドレスとして割込処理部２８に通知する。割込処理部２８は、送信部２６による送信バッファ２７の読み出しアドレスを監視し、次の読み出しが割込発生アドレスである場合に割込み処理を開始する。ここで、割込処理とは、主に、不揮発性メモリ１６の領域Ａ，Ｂのうち、現在、無効な領域を有効とし、反対に、現在、有効な領域を無効とする処理である）。本発明は、非接触通信システムに適用できる。【選択図】図３
2010044603.tif 000002
【特許請求の範囲】
【請求項１】
送信されたコマンドを受信する受信手段と、
受信された前記コマンドに応じたコマンド処理を行い、前記コマンド処理の結果を含むレスポンスを生成するコマンド処理手段と、
第１の領域および第２の領域から成り、現在の状態を示す情報を保持するメモリの第１の領域または第２の領域のうち、現在無効とされている一方の領域に保持されている情報を、前記コマンド処理の結果を用いて更新する更新手段と、
生成された前記レスポンスを送信する送信手段と、
前記レスポンスの送信が完了した直後に、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替える切り替え手段と
を含む通信装置。
【請求項２】
前記切り替え手段は、前記レスポンスのレスポンス長に動的に対応して、前記レスポンスの送信が完了した直後に、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替える
請求項１に記載の通信装置。
【請求項３】
前記レスポンスが送信前に保持されている送信バッファから前記送信手段が前記レスポンスを読み出し終えたことを検知する割込処理手段をさらに含み、
前記切り替え手段は、前記割込処理手段からの指示に従い、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替える
請求項２に記載の通信装置。
【請求項４】
前記送信手段は、前記レスポンスの送信が完了したことを前記切り替え手段に通知し、
前記切り替え手段は、前記送信手段からの前記通知に従い、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替える
請求項２に記載の通信装置。
【請求項５】
前記送信手段は、前記レスポンスの送信が完了したことを示す送信完了フラグを有し、
前記切り替え手段は、前記送信完了フラグの状態に応じ、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替える
請求項２に記載の通信装置。
【請求項６】
受信したコマンドに応じたコマンド処理を行い、前記コマンド処理の結果を含むレスポンスを送信する通信装置の通信方法において、
前記通信装置が、
送信されたコマンドを受信し、
受信された前記コマンドに応じたコマンド処理を行い、前記コマンド処理の結果を含むレスポンスを生成し、
第１の領域および第２の領域から成り、現在の状態を示す情報を保持するメモリの第１の領域または第２の領域のうち、現在無効とされている一方の領域に保持されている情報を、前記コマンド処理の結果を用いて更新し、
生成された前記レスポンスを送信し、
前記レスポンスの送信が完了した直後に、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替える
ステップを含む通信方法。
【請求項７】
受信したコマンドに応じたコマンド処理を行い、前記コマンド処理の結果を含むレスポンスを送信する通信装置の制御用のプログラムであって、
送信されたコマンドを受信し、
受信された前記コマンドに応じたコマンド処理を行い、前記コマンド処理の結果を含むレスポンスを生成し、
第１の領域および第２の領域から成り、現在の状態を示す情報を保持するメモリの第１の領域または第２の領域のうち、現在無効とされている一方の領域に保持されている情報を、前記コマンド処理の結果を用いて更新し、
生成された前記レスポンスを送信し、
前記レスポンスの送信が完了した直後に、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替える
ステップを含む処理を通信装置のコンピュータに実行させるプログラム。
【請求項８】
通信装置とリーダライタとの間で非接触通信を行なう通信システムにおいて、
前記通信装置は、
送信されたコマンドを受信する受信手段と、
受信された前記コマンドに応じたコマンド処理を行い、前記コマンド処理の結果を含むレスポンスを生成するコマンド処理手段と、
第１の領域および第２の領域から成り、現在の状態を示す情報を保持するメモリの第１の領域または第２の領域のうち、現在無効とされている一方の領域に保持されている情報を、前記コマンド処理の結果を用いて更新する更新手段と、
生成された前記レスポンスを送信する送信手段と、
前記レスポンスの送信が完了した直後に、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替える切り替え手段と
を含み、
前記リーダライタは、
前記コマンドを送信する送信手段と、
前記レスポンスを受信する受信手段と
を含む
通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、通信方法、プログラム、および通信システムに関し、特に、例えば、非接触で通信を行なう場合に用いて好適な通信装置、通信方法、プログラム、および通信システムに関する。
【背景技術】
【０００２】
現在、電子マネーや交通機関の乗車券などに、FeliCa（商標）に代表される非接触通信ＩＣカード通信技術が広く利用されている。
【０００３】
図１は、非接触通信を実現する非接触通信システムの従来存在する構成の一例を示している。
【０００４】
この非接触通信システム１は、リーダ／ライタ（以下、R/Wと記載する）２と非接触通信ＩＣカード（以下、単にＩＣカードと称する）１０から構成される。非接触通信システム１においては、ＩＣカード１０のユーザがＩＣカード１０をR/W２にかざすことにより、R/W２からの電磁波に基づいてＩＣカード１０に駆動電力が発生し、データの通信が行なわれる。
【０００５】
ＩＣカード１０は、電磁波の送受信を行なうアンテナ１１、R/W２からのコマンドを受信する受信部１２、コマンドに応じた処理を行うコマンド処理部１３、コマンド処理部１３の結果に応じて不揮発性メモリ１６に記録されているデータを更新する更新部１４、不揮発性メモリ１６の有効な領域を示すセレクタ１５、領域Ａ，Ｂに分割された不揮発性メモリ１６、および、R/W２に対するレスポンスを送信する送信部１７から構成される。
【０００６】
不揮発性メモリ１６には、例えば、ＩＣカード１０が電子マネーとして利用される場合、利用可能な金額（残額）が記録されている。ただし、不揮発性メモリ１６に記録されているデータの原子性を保証するため、不揮発性メモリ１６は、領域Ａ，Ｂに分割されており、一方が有効、他方が無効とされている。
【０００７】
そして、データの更新は、有効な領域からデータが読み出されて、新たなデータに変更（更新）され、変更（更新）後のデータが無効な領域に書き込まれる。この後、それまで無効であった、変更（更新）後のデータが書き込まれた領域が有効とされ、反対に、それまで有効であった領域が無効とされる。
【０００８】
なお、メモリに記録されているデータの原子性を保証するため、メモリを複数の領域に分割し、いずれかを有効、その他を無効とする方法については、例えば、特許文献１に記載されているように従来技術である。
【０００９】
領域Ａ，Ｂの何方が有効であるか（無効であるか）を示す情報はセレクタ１５が保持するが、この情報を不揮発性メモリ１６自身が保持するようにしてもよい。
【００１０】
次に、ＩＣカード１０が電子マネーとして用いられる場合を例に、ＩＣカード１０の動作について、図２のフローチャートを参照して説明する。
【００１１】
ＩＣカード１０のユーザが商品を購入する際、販売店に設置されているR/W２にＩＣカード１０をかざすと、R/W２からＩＣカード１０に対してコマンドが送信される。このコマンドには、商品の価格情報（例えば、１００円）が含まれている。
【００１２】
ＩＣカード１０では、ステップＳ１において、受信部１２が、R/W２からのコマンドを受信し、受信したコマンドをコマンド処理部１３に供給する。
【００１３】
ステップＳ２において、コマンド処理部１３は、更新部１４およびセレクタ１５を介して、不揮発性メモリ１６の領域Ａ，Ｂのうちの有効な領域から電子マネーの残額（例えば、１０００円）の情報を読み出す。また、コマンド処理部１３は、読み出した残額から、購入する商品の代金を減額して、更新後の残額（いまの場合、９００円）を示す情報を生成し、更新部１４に出力する。さらに、コマンド処理部１３は、R/W２に対するレスポンスを生成して送信部１７に出力する。このレスポンスには、更新後の残額を示す情報が含まれている。
【００１４】
さらに、ステップＳ２において、更新部１４は、更新後の残額を示す情報を、セレクタ１５を介して、不揮発性メモリ１６の領域Ａ，Ｂのうち、現在、無効な領域に上書き記録（更新）する。この上書き記録が完了した後、更新部１４は、セレクタ１５を制御して、上書き記録された、それまで無効であった領域を有効とし、反対に、それまで有効であった領域を無効とさせる。
【００１５】
この後、ステップＳ３において、コマンド処理部１３は、送信部１７に対してレスポンス１７を送信させる。以上で、ＩＣカード１０の動作は終了される。
【００１６】
一方、R/W２では、ＩＣカード１０からのレスポンスを受信することにより、決済完了を認識し、商品購入に対するR/W２の動作も終了される。
【００１７】
【特許文献１】特開２００５−２３５０２８
【発明の開示】
【発明が解決しようとする課題】
【００１８】
ところで、上述したＩＣカード１０の動作では、例えば、ステップＳ３の処理が終了した後、ステップＳ４の処理が終了する前に、ＩＣカード１０がR/W２から遠ざけられたりしてＩＣカード１０の電源途絶が発生すると、ＩＣカード１０側では決済が完了しているにも拘らず、R/W２側では決済が完了していない事態が発生し得る。
【００１９】
ここで、ＩＣカード１０側の決済が完了しているとは、残額から商品代金分の減額が行なわれて、不揮発性メモリ１６の一方の領域に上書き記録され、その領域が有効とされていることを指す。
【００２０】
このような事態に際しては、ユーザが再びＩＣカード１０をR/W２にかざせば、ＩＣカード１０とR/W２の双方で正しく決済処理が完了する仕組みが確立されている。しかしながら、ユーザがこれ（再びＩＣカード１０をR/W２にかざすこと）を実行しないと、ＩＣカード１０の残額から商品代金が引き落とされたにも拘らず、ユーザが商品を入手できないことが起こり得る。
【００２１】
本発明はこのような状況に鑑みてなされたものであり、非接触通信システムにおいて、ＩＣカード側では決済が完了しているにも拘らず、R/W側では決済が完了していない事態の発生を抑止できるようにするものである。
【課題を解決するための手段】
【００２２】
本発明の第１の側面である通信装置は、送信されたコマンドを受信する受信手段と、受信された前記コマンドに応じたコマンド処理を行い、前記コマンド処理の結果を含むレスポンスを生成するコマンド処理手段と、第１の領域および第２の領域から成り、現在の状態を示す情報を保持するメモリの第１の領域または第２の領域のうち、現在無効とされている一方の領域に保持されている情報を、前記コマンド処理の結果を用いて更新する更新手段と、生成された前記レスポンスを送信する送信手段と、前記レスポンスの送信が完了した直後に、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替える切り替え手段とを含む。
【００２３】
前記切り替え手段は、前記レスポンスのレスポンス長に動的に対応して、前記レスポンスの送信が完了した直後に、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替えることができる。
【００２４】
本発明の第１の側面である通信装置は、前記レスポンスが送信前に保持されている送信バッファから前記送信手段が前記レスポンスを読み出し終えたことを検知する割込処理手段をさらに含み、前記切り替え手段は、前記割込処理手段からの指示に従い、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替えることができる。
【００２５】
前記送信手段は、前記レスポンスの送信が完了したことを前記切り替え手段に通知し、
前記切り替え手段は、前記送信手段からの前記通知に従い、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替えることができる。
【００２６】
前記送信手段は、前記レスポンスの送信が完了したことを示す送信完了フラグを有し、
前記切り替え手段は、前記送信完了フラグの状態に応じ、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替えることができる。
【００２７】
本発明の第１の側面である通信方法は、受信したコマンドに応じたコマンド処理を行い、前記コマンド処理の結果を含むレスポンスを送信する通信装置の通信方法において、前記通信装置が、送信されたコマンドを受信し、受信された前記コマンドに応じたコマンド処理を行い、前記コマンド処理の結果を含むレスポンスを生成し、第１の領域および第２の領域から成り、現在の状態を示す情報を保持するメモリの第１の領域または第２の領域のうち、現在無効とされている一方の領域に保持されている情報を、前記コマンド処理の結果を用いて更新し、生成された前記レスポンスを送信し、前記レスポンスの送信が完了した直後に、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替えるステップを含む。
【００２８】
本発明の第１の側面であるプログラムは、受信したコマンドに応じたコマンド処理を行い、前記コマンド処理の結果を含むレスポンスを送信する通信装置の制御用のプログラムであって、送信されたコマンドを受信し、受信された前記コマンドに応じたコマンド処理を行い、前記コマンド処理の結果を含むレスポンスを生成し、第１の領域および第２の領域から成り、現在の状態を示す情報を保持するメモリの第１の領域または第２の領域のうち、現在無効とされている一方の領域に保持されている情報を、前記コマンド処理の結果を用いて更新し、生成された前記レスポンスを送信し、前記レスポンスの送信が完了した直後に、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替えるステップを含む処理を通信装置のコンピュータに実行させる。
【００２９】
本発明の第１の側面においては、受信されたコマンドに応じたコマンド処理が行われ、コマンド処理の結果を含むレスポンスが生成される。また、第１の領域および第２の領域から成り、現在の状態を示す情報を保持するメモリの第１の領域または第２の領域のうち、現在無効とされている一方の領域に保持されている情報が、コマンド処理の結果を用いて更新され、生成されたレスポンスが送信される。さらに、レスポンスの送信が完了した直後に、メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報がコマンド処理の結果を用いてされた一方の領域が有効に、現在有効とされている他方の領域が無効に切り替えられる。
【００３０】
本発明の第２の側面である通信システムは、通信装置とリーダライタとの間で非接触通信を行なう通信システムにおいて、前記通信装置が、送信されたコマンドを受信する受信手段と、受信された前記コマンドに応じたコマンド処理を行い、前記コマンド処理の結果を含むレスポンスを生成するコマンド処理手段と、第１の領域および第２の領域から成り、現在の状態を示す情報を保持するメモリの第１の領域または第２の領域のうち、現在無効とされている一方の領域に保持されている情報を、前記コマンド処理の結果を用いて更新する更新手段と、生成された前記レスポンスを送信する送信手段と、前記レスポンスの送信が完了した直後に、前記メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報が前記コマンド処理の結果を用いて更新された前記一方の領域を有効に、現在有効とされている他方の領域を無効に切り替える切り替え手段とを含み、前記リーダライタが、前記コマンドを送信する送信手段と、前記レスポンスを受信する受信手段とを含む。
【００３１】
本発明の第２の側面においては、リーダライタにより、コマンドが送信され、通信装置により、受信されたコマンドに応じたコマンド処理が行われ、コマンド処理の結果を含むレスポンスが生成される。また、第１の領域および第２の領域から成り、現在の状態を示す情報を保持するメモリの第１の領域または第２の領域のうち、現在無効とされている一方の領域に保持されている情報が、コマンド処理の結果を用いて更新され、生成されたレスポンスが送信され、リーダライタにより、レスポンスが受信される。またさらに、通信装置により、レスポンスの送信が完了した直後に、メモリの第１の領域または第２の領域のうち、現在無効とされており、保持する情報がコマンド処理の結果を用いてされた一方の領域が有効に、現在有効とされている他方の領域が無効に切り替えられる。
【発明の効果】
【００３２】
本発明の第１の側面によれば、R/Wに対するレスポンスを送信する前に決済が完了してしまうことを防止することができる。
【００３３】
また、本発明の第１の側面によれば、非接触通信システムにおいて、ＩＣカード側では決済が完了しているにも拘らず、R/W側では決済が完了していない事態の発生を抑止できる。
【００３４】
本発明の第２の側面によれば、ＩＣカード側では決済が完了しているにも拘らず、R/W側では決済が完了していない事態の発生を抑止できる。
【発明を実施するための最良の形態】
【００３５】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００３６】
図３は、本発明を適用した非接触通信システムの構成例を示しており、特に、本発明の実施の形態である非接触通信ＩＣカード（以下、ＩＣカードと称する）の第１の構成例を示している。
【００３７】
なお、このＩＣカード２１と、図１に示された従来のＩＣカード１０とで共通する構成要素については、同一の符号を付しているので、その説明は適宜省略する。
【００３８】
ＩＣカード２１は、アンテナ１１、受信部２２、コマンド処理部２４、更新部２５、セレクタ１５、不揮発性メモリ１６、送信部２６、および割込処理部２８から構成される。
【００３９】
受信部２２は、受信バッファ２３を内蔵しており、R/W２からコマンドを受信してコマンド処理部２４に出力する。
【００４０】
図３は、R/W２から送信されるコマンドのデータ構造を示している。コマンドは、その先頭にコマンド全体のサイズ（コマンド長）を示す情報が記載される領域LENが設けられており、領域LENに続いてコマンドデータ（例えば、商品の金額を含む）が配置されている。
【００４１】
例えば、領域LEN自身のサイズが１バイト、領域LENに記載されている情報が１０バイトを示す場合、受信部２２は、領域LENを受信してコマンド長（１０バイト）を把握し、その後、コマンド長から領域LENのサイズ（１バイト）を引いた９バイト分のデータを受信バッファ２３にバッファリングし、受信バッファ２３上に形成されたコマンドデータをコマンド処理部２４に出力する。
【００４２】
コマンド処理部２４は、受信部２２からのコマンドデータに応じた処理を行い、その処理結果を更新部２５に出力するとともに、その処理結果を含むレスポンスを生成して送信部２６に供給する。
【００４３】
更新部２５は、コマンド処理部２４からの処理結果に応じて不揮発性メモリ１６に記録されているデータを更新する。
【００４４】
送信部２６は、コマンド処理部２４から供給されたレスポンスを内蔵する送信バッファ２７に保持し、所定のタイミングで送信バッファ２７に保持しているデータをアドレス順に読み出して送信することにより、レスポンスをR/W２に対して送信する。
【００４５】
図５は、コマンド処理部２４によって生成されるレスポンスのデータ構造を示している。レスポンスは、R/W２からのコマンドと同様、図５に示されるように、その先頭にレスポンス全体のサイズ（レスポンス長）を示す情報が記載される領域LENが設けられており、領域LENに続いてレスポンスデータ（例えば、商品の代金引き落とし後の残額を含む）が配置されている。
【００４６】
また、送信部２６は、図６に示すように、送信バッファ２７においてレスポンスが保持されているアドレスの次のアドレスを、割込発生アドレスとして割込処理部２８に通知する。
【００４７】
割込処理部２８は、送信部２６による送信バッファ２７の読み出しアドレスを監視し、次の読み出しが割込発生アドレスである場合に割込み処理を開始する。ここで、割込処理とは、主に、不揮発性メモリ１６の領域Ａ，Ｂのうち、現在、無効な領域を有効とし、反対に、現在、有効な領域を無効とする処理である（詳細後述）。
【００４８】
次に、ＩＣカード２１が電子マネーとして用いられる場合を例に、ＩＣカード２１の動作について、図７のフローチャートを参照して説明する。
【００４９】
ＩＣカード２１のユーザが商品を購入する際、販売店に設置されているR/W２にＩＣカード２１をかざすと、R/W２からＩＣカード２１に対してコマンドが送信される。このコマンドには、商品の価格情報（例えば、１００円）が含まれている。
【００５０】
ＩＣカード２１では、ステップＳ１１において、受信部２２が、R/W２からのコマンドを受信し、受信したコマンドのうちのコマンドデータをコマンド処理部２４に供給する。
【００５１】
ステップＳ１２において、コマンド処理部２４は、受信部２２の動作をオフとする。これにより、受信部２２は、仮にR/W２から新たなコマンドが送信されたとしても、それを受信しない状態となる。
【００５２】
ステップＳ１３において、コマンド処理部２４は、コマンドに応じたコマンド処理を行う。すなわち、コマンド処理部２４は、更新部２５およびセレクタ１５を介して、不揮発性メモリ１６の領域Ａ，Ｂのうちの有効な領域から電子マネーの残額（例えば、１０００円）の情報を読み出す。また、コマンド処理部２４は、読み出した残額から、購入する商品の代金を減額して、更新後の残額（いまの場合、９００円）を示す情報を生成し、更新部２５に出力する。
【００５３】
ステップＳ１４において、更新部２５は、コマンド処理結果である、更新後の残額を示す情報を、セレクタ１５を介して、不揮発性メモリ１６の領域Ａ，Ｂのうち、現在、無効な領域に上書き記録（更新）する。
【００５４】
ステップＳ１５において、コマンド処理部２４は、コマンド処理結果である、更新後の残額を示す情報が含むレスポンスを生成して送信部２６に出力する。送信部２６は、入力されたレスポンスを送信バッファ２７に保持する。
【００５５】
ステップＳ１６において、送信部２６は、送信バッファ２７においてレスポンスが保持されているアドレスの次のアドレスを、割込発生アドレスとして割込処理部２８に通知する。この通知に応じ、割込処理部２８は、送信部２６が送信バッファ２７からデータを読み出すときの読み出しアドレスの監視を開始する。
【００５６】
ステップＳ１７において、送信部２６は、送信バッファ２７からレスポンスを読み出してその送信を開始する。
【００５７】
ステップＳ１８において、割込処理部２８は、送信部２６によって次に読み出される送信バッファ２７のアドレス（読み出しアドレス）が割込発生アドレスと一致するまで待機する。この待機の間、送信部２６は、送信バッファ２７からアドレス順にレスポンスを構成するデータを順に読み出して送信している。そして、送信部２６がレスポンスを送信し終えたとき、次に読み出される送信バッファ２７のアドレス（読み出しアドレス）が割込発生アドレスと一致するので、処理はステップＳ１９に進められる。
【００５８】
また、この時点で、通信相手のR/W２では、ＩＣカード２１からのレスポンスを受信することにより、決済完了を認識し、商品購入に対するR/W２の動作は終了される。
【００５９】
ステップＳ１９において、割込処理部２８が割込処理を行う。これにより、ＩＣカード２１の動作は終了される。
【００６０】
ここで、ステップＳ１９の割込処理について、図８のフローチャートを参照して説明する。
【００６１】
ステップＳ２１において、更新部２５は、セレクタ１５を制御して、ステップＳ１４の処理で上書き記録された、それまで無効であった領域Ａ，Ｂの一方を有効とし、反対に、それまで有効であった領域Ａ，Ｂの他方を無効とさせる。
【００６２】
なお、このセレクタ１５による有効、無効の切り替えに要する時間は、レスポンスの送信に要する時間に比較して非常に短い。したがって、セレクタ１５による有効、無効の切り替えが、電源途断などにより未完了となる可能性は非常に低い。
【００６３】
この後、更新部２５は、不揮発性メモリ１６の領域Ａ，Ｂの有効、無効の交代を終えたことをコマンド処理部２４に通知する。
【００６４】
この通知に応じ、ステップＳ２２において、コマンド処理部２４には、送信部２６の動作をオフとする。また、ステップＳ２３において、コマンド処理部２４は、受信部２２の動作をオンとする。これにより、受信部２２は、R/W２からの新たなコマンドを受信する状態となる。すなわち、ＩＣカード２１は、R/W２との新たな通信に対処できる状態となる。以上で、割込処理は終了される。
【００６５】
以上説明したように、ＩＣカード２１によれば、レスポンス長に動的に対応し、レスポンスを送信した直後に、セレクタ１５による有効、無効の切り替えが速やかに行なわれるので、ＩＣカード２１側では決済が完了しているにも拘らず、R/W２側では決済が完了していないといった不都合な事態の発生を抑止することができる。
【００６６】
次に、図９は、本発明の実施の形態であるＩＣカードの第２の構成例を示している。
【００６７】
なお、この第２の構成例であるＩＣカード４１と、図３に示された第１の構成例であるＩＣカード２１とで共通する構成要素については、同一の符号を付しているので、その説明は適宜省略する。
【００６８】
すなわち、このＩＣカード４１は、アンテナ１１、受信部２２、コマンド処理部２４、更新部４３、セレクタ１５、不揮発性メモリ１６、および送信部４４から構成される。
【００６９】
更新部４３は、コマンド処理部２４からの処理結果に応じて不揮発性メモリ１６に記録されているデータを更新する。また、更新部４３は、送信部４４からの所定の通知（後述）に応じ、図３の割込処理部２８と同様の割込処理を行う。
【００７０】
送信部４４は、コマンド処理部２４から供給されたレスポンスを内蔵する送信バッファ４５に保持し、所定のタイミングで送信バッファ４５に保持しているデータをアドレス順に読み出して送信することにより、レスポンスをR/W２に対して送信する。
【００７１】
また、送信部４４は、送信バッファ４５のデータを１バイト送信する毎にカウントダウンするカウンタ４６を内蔵しており、レスポンスを送信する前にカウンタ４６をレスポンス長が示す値に設定し、カウンタ４６の値が０になったとき、その旨を更新部４３に対して通知する。この通知に応じ、更新部４３により割込処理が開始される。
【００７２】
このＩＣカード４１が電子マネーとして用いられる場合を例に、ＩＣカード４１の動作について、図１０のフローチャートを参照して説明する。
【００７３】
ＩＣカード４１のユーザが商品を購入する際、販売店に設置されているR/W２にＩＣカード４１をかざすと、R/W２からＩＣカード４１に対してコマンドが送信される。このコマンドには、商品の価格情報（例えば、１００円）が含まれている。
【００７４】
ＩＣカード４１では、ステップＳ３１において、受信部２２が、R/W２からのコマンドを受信し、受信したコマンドのうちのコマンドデータをコマンド処理部２４に供給する。
【００７５】
ステップＳ３２において、コマンド処理部２４は、受信部２２の動作をオフとする。これにより、受信部２２は、仮にR/W２から新たなコマンドが送信されたとしても、それを受信しない状態となる。
【００７６】
ステップＳ３３において、コマンド処理部２４は、コマンドに応じたコマンド処理を行う。すなわち、コマンド処理部２４は、更新部４３およびセレクタ１５を介して、不揮発性メモリ１６の領域Ａ，Ｂのうちの有効な領域から電子マネーの残額（例えば、１０００円）の情報を読み出す。また、コマンド処理部２４は、読み出した残額から、購入する商品の代金を減額して、更新後の残額（いまの場合、９００円）を示す情報を生成し、更新部４３に出力する。
【００７７】
ステップＳ３４において、更新部４３は、コマンド処理結果である、更新後の残額を示す情報を、セレクタ１５を介して、不揮発性メモリ１６の領域Ａ，Ｂのうち、現在、無効な領域に上書き記録（更新）する。
【００７８】
ステップＳ３５において、コマンド処理部２４は、コマンド処理結果である、更新後の残額を示す情報が含むレスポンスを生成して送信部４４に出力する。送信部４４は、入力されたレスポンスを送信バッファ４５に保持する。
【００７９】
ステップＳ３６において、送信部４４は、送信バッファ４５に保持されたレスポンスのレスポンス長の値を取得し、取得した値を内蔵するカウンタ４６に設定する。
【００８０】
ステップＳ３７において、送信部４４は、送信バッファ４５からレスポンスを１バイトずつ読み出してその送信を開始する。
【００８１】
ステップＳ３８において、カウンタ４６は、送信バッファ４５に保持されているレスポンスが１バイト読み出される毎に、自身の値（カウント値）を１ずつデクリメントし、ステップＳ３９において、送信部４４は、カウント値が０になったか否かを判定する。そして、カウント値が０になったと判定するまで、ステップＳ３８およびＳ３９の処理が繰り返される。
【００８２】
そして、ステップＳ３９において、カウント値が０になったと判定した場合、送信部４４は、その旨を更新部４３に対して通知する。
【００８３】
この時点で、通信相手のR/W２では、ＩＣカード２１からのレスポンスを受信することにより、決済完了を認識し、商品購入に対するR/W２の動作は終了される。
【００８４】
送信部４４からの通知に応じ、ステップＳ４０において、更新部４３は割込処理を実行する。具体的には、図８で説明した割込処理と同様であるので、その説明は省略する。これにより、ＩＣカード４１の動作は終了される。
【００８５】
以上説明したように、ＩＣカード４１によれば、レスポンス長に動的に対応し、レスポンスを送信した直後に、セレクタ１５による有効、無効の切り替えが速やかに行なわれる。よって、ＩＣカード４１側では決済が完了しているにも拘らず、R/W２側では決済が完了していないといった不都合な事態の発生を抑止することができる。
【００８６】
次に、図１１は、本発明の実施の形態であるＩＣカードの第３の構成例を示している。
【００８７】
なお、この第３の構成例であるＩＣカード５１と、図３に示された第１の構成例であるＩＣカード２１とで共通する構成要素については、同一の符号を付しているので、その説明は適宜省略する。
【００８８】
すなわち、このＩＣカード５１は、アンテナ１１、受信部２２、コマンド処理部２４、更新部５３、セレクタ１５、不揮発性メモリ１６、および送信部５４から構成される。
更新部５３は、コマンド処理部２４からの処理結果に応じて不揮発性メモリ１６に記録されているデータを更新する。また、更新部５３は、送信部５４の送信完了フラグ５６を確認する（ポーリングする）ことにより、レスポンスが送信されたか否かを判定し、レスポンスが送信されたことに応じ、図３の割込処理部２８と同様の割込処理を行う。
【００８９】
送信部５４は、コマンド処理部２４から供給されたレスポンスを内蔵する送信バッファ５５に保持し、所定のタイミングで送信バッファ５５に保持しているデータをアドレス順に読み出して送信することにより、レスポンスをR/W２に対して送信する。
【００９０】
また、送信部５４はレスポンスの送信完了の有無を示す送信完了フラグ５６を内蔵しており、コマンド処理部２４からレスポンスが供給されたとき、送信完了フラグ５６をオフとし、送信バッファ５５上のレスポンスの送信が完了したとき、直ちに送信完了フラグ５６をオンとするようになされている。
【００９１】
このＩＣカード５１が電子マネーとして用いられる場合を例に、ＩＣカード５１の動作について、図１２のフローチャートを参照して説明する。
【００９２】
ＩＣカード５１のユーザが商品を購入する際、販売店に設置されているR/W２にＩＣカード５１をかざすと、R/W２からＩＣカード５１に対してコマンドが送信される。このコマンドには、商品の価格情報（例えば、１００円）が含まれている。
【００９３】
ＩＣカード５１では、ステップＳ５１において、受信部２２が、R/W２からのコマンドを受信し、受信したコマンドのうちのコマンドデータをコマンド処理部２４に供給する。
【００９４】
ステップＳ５２において、コマンド処理部２４は、受信部２２の動作をオフとする。これにより、受信部２２は、仮にR/W２から新たなコマンドが送信されたとしても、それを受信しない状態となる。
【００９５】
ステップＳ５３において、コマンド処理部２４は、コマンドに応じたコマンド処理を行う。すなわち、コマンド処理部２４は、更新部５３およびセレクタ１５を介して、不揮発性メモリ１６の領域Ａ，Ｂのうちの有効な領域から電子マネーの残額（例えば、１０００円）の情報を読み出す。また、コマンド処理部２４は、読み出した残額から、購入する商品の代金を減額して、更新後の残額（いまの場合、９００円）を示す情報を生成し、更新部５３に出力する。
【００９６】
ステップＳ５４において、更新部５３は、コマンド処理結果である、更新後の残額を示す情報を、セレクタ１５を介して、不揮発性メモリ１６の領域Ａ，Ｂのうち、現在、無効な領域に上書き記録（更新）する。この後、更新部５３は、送信部５４の送信完了フラグ５６のポーリングを開始する。
【００９７】
ステップＳ５５において、コマンド処理部２４は、コマンド処理結果である、更新後の残額を示す情報が含むレスポンスを生成して送信部５４に出力する。送信部５４は、入力されたレスポンスを送信バッファ５５に保持する。ステップＳ５６において、送信部５４は、送信完了フラグ５６をオフとする。
【００９８】
ステップＳ５７において、送信部５４は、送信バッファ５５からレスポンスを１バイトずつ読み出してその送信を開始する。
【００９９】
ステップＳ５８において、送信部５４は、送信バッファ５５に保持されているレスポンスの送信が完了したか否かを判定し、レスポンスの送信が完了したとき、直ちに送信完了フラグ５６をオンとする。
【０１００】
この時点で、通信相手のR/W２では、ＩＣカード２１からのレスポンスを受信することにより、決済完了を認識し、商品購入に対するR/W２の動作は終了される。
【０１０１】
ステップＳ５９において、更新部５３は、ステップＳ５４で開始した送信部５４に対するポーリングの結果、送信完了フラグ５６がオンであるか否か判定する。送信完了フラグがオンではないと判定された場合、処理はステップＳ５８に戻され、ステップＳ５８およびＳ５９が繰り返される。そして、ステップＳ５９において、送信完了フラグがオンであると判定された場合、処理はステップＳ６０に進められる。
【０１０２】
ステップＳ６０において、更新部５３は割込処理を実行する。具体的には、図８で説明した割込処理と同様であるので、その説明は省略する。これにより、ＩＣカード５１の動作は終了される。
【０１０３】
以上説明したように、ＩＣカード５１によれば、更新部５３がポーリングにより送信完了フラグ５６を確認するので、レスポンス長に動的に対応し、レスポンスを送信した直後に、セレクタ１５による有効、無効の切り替えを速やかに行なうことができる。よって、ＩＣカード５１側では決済が完了しているにも拘らず、R/W２側では決済が完了していないといった不都合な事態の発生を抑止することができる。
【０１０４】
以上説明した本発明の実施の形態であるＩＣカード２１，４１，５１によれば、不揮発性メモリ１６の書き換え、レスポンスの送信、不揮発性メモリ１６の有効領域の切り替えの順で処理を実行するので、ＩＣカード側では決済が完了しているにも拘らず、R/W２側では決済が完了していないといった不都合な事態の発生を抑止することができる。
【０１０５】
なお、本発明は、ＩＣカードに限らず、ＩＣカードと同等のＩＣチップを内蔵する携帯電話機などにも適用することが可能である。
【０１０６】
また、上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータに、プログラム記録媒体からインストールされる。
【０１０７】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１０８】
また、プログラムは、１台のコンピュータにより処理されるものであってもよいし、複数のコンピュータによって分散処理されるものであってもよい。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであってもよい。
【０１０９】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０１１０】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１１１】
【図１】非接触通信システムの構成の一例を示す図である。
【図２】従来のＩＣカードによる決済処理を説明するフローチャートである。
【図３】本発明を適用したＩＣカードの第１の構成例を示すブロック図である。
【図４】コマンドのデータ構造を示す図である。
【図５】レスポンスのデータ構造を示す図である。
【図６】送信バッファにおけるレスポンスの保持状態を示す図である。
【図７】ＩＣカードの第１の構成例による決済処理を説明するフローチャートである。
【図８】図７のステップＳ１９の割込処理を説明するフローチャートである。
【図９】本発明を適用したＩＣカードの第２の構成例を示すブロック図である。
【図１０】ＩＣカードの第２の構成例による決済処理を説明するフローチャートである。
【図１１】本発明を適用したＩＣカードの第３の構成例を示すブロック図である。
【図１２】ＩＣカードの第３の構成例による決済処理を説明するフローチャートである。
【符号の説明】
【０１１２】
１  非接触通信システム，  ２  リーダライタ，  １５  セレクタ，  １６  不揮発性メモリ，  ２１  非接触通信ＩＣカード，  ２２  受信部，  ２３  受信バッファ，  ２４  コマンド処理部，  ２５  更新部，  ２６  送信部，  ２７  送信バッファ，  ２８  割込処理部，  ４１  非接触通信ＩＣカード，  ４３  カウンタ，  ４４  送信部，  ４６  カウンタ，  ５１  非接触通信ＩＣカード，  ５３  更新部，  ５４  送信部，  ５６  送信完了フラグ
【図１】
2010044603.tif 000003
【図２】
2010044603.tif 000004
【図３】
2010044603.tif 000005
【図４】
2010044603.tif 000006
【図５】
2010044603.tif 000007
【図６】
2010044603.tif 000008
【図７】
2010044603.tif 000009
【図８】
2010044603.tif 000010
【図９】
2010044603.tif 000011
【図１０】
2010044603.tif 000012
【図１１】
2010044603.tif 000013
【図１２】
2010044603.tif 000014