(57)【要約】      （修正有）【課題】主記憶部の記憶容量を有効活用可能な情報媒体処理装置を提供する。【解決手段】カードリーダ１は、上位装置３からカード２への処理に関するコマンドを受信し、コマンドに対応した処理を実行し、実行結果をレスポンスとして通信ラインを介して上位装置３に返信する情報媒体処理装置である。主記憶部２０は、処理に関する一時的なデータを記憶する。受信バッファは、コマンドを受信した際、受信したコマンドを格納する。通信バッファ確保部１１０は、レスポンスを格納する送信バッファとを共通化した通信バッファ２００を主記憶部に確保する。通信バッファ格納部１３０は、通信バッファ確保部１１０により確保された通信バッファ２００において、コマンドを格納した際の空き領域を示すポインタからレスポンスを格納する。【選択図】図１
2017068661.tif 000002
【特許請求の範囲】
【請求項１】
上位装置から情報媒体への処理に関するコマンドを受信し、該コマンドに対応した前記処理を実行し、実行結果をレスポンスとして通信ラインを介して前記上位装置に返信する情報媒体処理装置であって、
前記処理に関する一時的なデータを記憶する記憶部と、
前記コマンドを受信した際、受信した前記コマンドを格納する受信バッファと、前記レスポンスを格納する送信バッファとを共通化した通信バッファを前記記憶部に確保する通信バッファ確保部と、
前記通信バッファ確保部により確保された前記通信バッファにおいて、前記コマンドを格納した際の空き領域を示すポインタから前記レスポンスを格納する通信バッファ格納部とを備える
ことを特徴とする情報媒体処理装置。
【請求項２】
前記通信バッファ確保部は、
前記コマンドの容量に対する前記レスポンスの容量の最大値を算出し、前記コマンドの容量と前記レスポンスの容量の最大値とを足した容量の前記通信バッファを確保する
ことを特徴とする請求項１に記載の情報媒体処理装置。
【請求項３】
前記通信バッファ格納部は、
前記情報媒体に書き込む若しくは設定情報を設定する処理を実行する前記コマンドを受信した場合、前記コマンドを前記通信バッファの先頭から格納し、格納済みの前記コマンドの末尾の次のアドレスを示すポインタから前記レスポンスを格納し、
前記情報媒体から読み出す若しくは状態情報を読み出す処理を実行する前記コマンドを受信した場合、前記レスポンスの末尾の次のアドレスを示す前記ポインタから前記コマンドを格納し、前記通信バッファの先頭から前記レスポンスを格納する
ことを特徴とする請求項１又は２に記載の情報媒体処理装置。
【請求項４】
上位装置から情報媒体への処理に関するコマンドを受信し、該コマンドに対応した前記処理を実行し、実行結果をレスポンスとして通信ラインを介して前記上位装置に返信する情報媒体処理装置により実行される情報処理方法であって、
前記処理に関する一時的なデータを記憶部に記憶し、
前記コマンドを受信した際、受信した前記コマンドを格納する受信バッファと、前記レスポンスを格納する送信バッファとを共通化した通信バッファを前記記憶部に確保し、
確保された前記通信バッファにおいて、前記コマンドを格納した際の空き領域を示すポインタから前記レスポンスを格納する
ことを特徴とする情報媒体処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報媒体処理装置及び情報媒体処理方法に係り、特に情報が記録された情報媒体に対して情報の読み出し又は書き込みを行う際に、上位装置からのコマンドを受信して、コマンドに対応した処理を実行する情報媒体処理装置及び情報媒体処理方法に関する。
【背景技術】
【０００２】
従来から、情報が記録されたカード状媒体等（情報媒体）に対して、情報の読み出し又は書き込みを行うカードリーダ等（情報媒体処理装置）が存在する。
たとえば、特許文献１に、このようなカードリーダの一例が記載されている。
【０００３】
特許文献１に記載のカードリーダは、上位装置からコマンドを受信して、当該コマンドに従って処理を実行する。カードリーダは、各種動作に必要な作業データが格納される、書換え不可能なＲＯＭ（補助記憶部）と、処理を実行する際に必要な作業データがコピーされる書換え可能なＲＡＭ（主記憶部）と、ＲＯＭ及びＲＡＭ（以下、補助記憶部と主記憶部とをまとめて単に「記憶部」という。）にアクセス可能なＣＰＵとを有している。ＣＰＵは、カードリーダが待機状態のときに、ＲＯＭに格納されている作業データにより、ＲＡＭ内の作業データを更新する。
【０００４】
ここで、特許文献１に記載のカードリーダは、コマンドを受信するための受信バッファの領域と、レスポンスを送信するための送信バッファの領域とを、それぞれ独立して記憶部に確保していた。
その際、受信バッファ及び送信バッファのそれぞれについて、必要な容量の最大値を算出し、受信バッファ及び送信バッファのそれぞれについて、当該最大値に対応できる容量の領域を独立して記憶部に確保していた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−４４５１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載されたカードリーダでは、最大値のデータ数を受信する場合、送信データも最大値にとなるとは限らなかった。このため、コマンド及びレスポンスの容量として無駄な領域を記憶部に確保することになり、記憶部の容量を有効利用できていなかった。
【０００７】
本発明は、このような状況に鑑みてなされたものであり、記憶部の容量を有効活用できる情報媒体処理装置及び情報媒体処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の情報媒体処理装置は、上位装置から情報媒体への処理に関するコマンドを受信し、該コマンドに対応した前記処理を実行し、実行結果をレスポンスとして通信ラインを介して前記上位装置に返信する情報媒体処理装置であって、前記処理に関する一時的なデータを記憶する記憶部と、前記コマンドを受信した際、受信した前記コマンドを格納する受信バッファと、前記レスポンスを格納する送信バッファとを共通化した通信バッファを前記記憶部に確保する通信バッファ確保部と、前記通信バッファ確保部により確保された前記通信バッファにおいて、前記コマンドを格納した際の空き領域を示すポインタから前記レスポンスを格納する通信バッファ格納部とを備えることを特徴とする。
このように構成することで、コマンドとレスポンスとで別々に記憶部にバッファを確保する必要がなくなり、記憶部の記憶容量を有効活用することができる。
【０００９】
本発明の情報媒体処理装置は、前記通信バッファ確保部は、前記コマンドの容量に対する前記レスポンスの容量の最大値を算出し、前記コマンドの容量と前記レスポンスの容量の最大値とを足した容量の前記通信バッファを確保することを特徴とする。
このように構成することで、通信バッファの記憶部の記憶容量を小さくすることができる。
【００１０】
本発明の情報媒体処理装置は、前記通信バッファ格納部は、前記情報媒体に書き込む若しくは設定情報を設定する処理を実行する前記コマンドを受信した場合、前記コマンドを前記通信バッファの先頭から格納し、格納済みの前記コマンドの末尾の次のアドレスを示すポインタから前記レスポンスを格納し、前記情報媒体から読み出す若しくは状態情報を読み出す処理を実行する前記コマンドを受信した場合、前記レスポンスの末尾の次のアドレスを示す前記ポインタから前記コマンドを格納し、前記通信バッファの先頭から前記レスポンスを格納することを特徴とする。
このように構成することで、コマンド及びレスポンスを記憶部へ容量順に並べることができるため、記憶部の記憶容量を柔軟に活用することができる。
【００１１】
本発明の情報媒体処理方法は、上位装置から情報媒体への処理に関するコマンドを受信し、該コマンドに対応した前記処理を実行し、実行結果をレスポンスとして通信ラインを介して前記上位装置に返信する情報媒体処理装置により実行される情報処理方法であって、前記処理に関する一時的なデータを記憶部に記憶し、前記コマンドを受信した際、受信した前記コマンドを格納する受信バッファと、前記レスポンスを格納する送信バッファとを共通化した通信バッファを前記記憶部に確保し、確保された前記通信バッファにおいて、前記コマンドを格納した際の空き領域を示すポインタから前記レスポンスを格納することを特徴とする。
このように構成することで、コマンドとレスポンスとで別々に記憶部にバッファを確保する必要がなくなり、記憶部の記憶容量を有効活用することができる。
【発明の効果】
【００１２】
本発明によれば、コマンドを格納する受信バッファとレスポンスを格納する送信バッファとを共通化した通信バッファを記憶部に確保し、コマンドを格納した際の空き領域を示すポインタからレスポンスを格納することで、記憶部の容量を有効活用できる情報媒体処理装置を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態に係る情報媒体処理装置の概略構成を示すブロック図である。
【図２】図１に示す主記憶部に確保された通信バッファの構成を示す概念図である。
【図３】本発明の実施の形態に係るコマンド送受信処理のフローチャートである。
【図４】図３に示すコマンド送受信処理における通信バッファの確保の方式を示す概念図である。
【図５】本発明の他の実施の形態に係る通信バッファの確保の方式を示す概念図である。
【発明を実施するための形態】
【００１４】
＜実施の形態＞
〔カードリーダ１の概略構成〕
まず、図１により、本発明の実施の形態に係るカードリーダ１（情報媒体処理装置）の概略構成の一例について説明する。
本実施形態のカードリーダ１は、カード２（カード状媒体）に記録された情報に対して、情報の読み出し又は書き込みを行うカードリーダ／ライタ装置である。また、カードリーダ１は、ＡＴＭ（ホスト）等の上位装置３に組み込まれ、図示しないホストコンピュータ等の上位装置３に接続される。
【００１５】
具体的に説明すると、カードリーダ１は、モータ搬送式のカードリーダ／ライタ装置である。カードリーダ１は、上位装置３に接続され、上位装置３からの指令（コマンド）により各種処理を実行する。上位装置３は、図示しないものの、制御部、記憶部、各種インターフェイス等を備えており、カードリーダ１を制御する。
【００１６】
カードリーダ１は、カード２に記録された磁気情報の読み込み及び書き出しを行う記録再生ヘッドである磁気ヘッド６１と、カード２に形成される接触端子に接触して情報の送受信を行うＩＣ接点ブロック７１とを備えている。また、カードリーダ１の内部には、カード２が通過するカード通過路が形成されている。
カードリーダ１の詳細構成については後述する。
【００１７】
カード２は、例えば、厚さが０．７〜０．８ｍｍ程度の矩形状の塩化ビニール等のプラスチック製のカードである。このカード２の一方の面には、磁気情報が記録される磁気ストライプが形成されている。また、カード２の他方の面には、ＩＣ接点ブロック７１が接触する接触端子が形成されている。すなわち、本実施形態においては、カード２は、磁気ストライプ付きの接触式ＩＣカードである。なお、カード２には、通信用のアンテナが内蔵されてもよい。すなわち、カード２は、磁気ストライプ付きの非接触式ＩＣカードであってもよい。また、カード２は、厚さが０．１８〜０．３６ｍｍ程度のＰＥＴ（ポリエチレンテレフタレート）カードや、所定の厚さの紙カード等であってもよい。
カードには、ユーザの情報や貨幣価値情報等の情報が記憶されている。
【００１８】
また、カードリーダ１は、制御部１０、主記憶部２０、補助記憶部３０、センサ回路４０、センサ４１、モータ駆動回路５０、モータ５１、磁気情報処理回路６０、磁気ヘッド６１、ＩＣ情報処理回路７０、ＩＣ接点ブロック７１、及びインターフェイス部８０を含んでいる。
【００１９】
制御部１０は、ＣＰＵ（Central Processing Unit）等の制御演算手段である。制御部１０は、カード２の情報の読み出しや書き込みを制御する。
【００２０】
主記憶部２０は、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（Magnetic Random Access Memory）、ＲｅＲＡＭ（Resistance Random Access Memory）等の一時的でない記憶媒体である。
主記憶部２０には、各処理の一時的なデータと、後述する通信バッファ２００の領域とが確保される。また、主記憶部２０には、補助記憶部３０に記憶された制御プログラムやＯＳ（Operating System）が展開されて記憶されていてもよい。
【００２１】
補助記憶部３０は、ＲＯＭ（Read Only Memory）、ＮＡＮＤ型及び／又はＮＯＲ型のフラッシュメモリ（Flash Memory）等の一時的でない記憶媒体である。また、上述のＭＲＡＭ、ＦｅＲＡＭ、ＲｅＲＡＭ等を補助記憶部３０としても使用可能である。また、主記憶部２０と補助記憶部３０とを一続きのメモリ空間として運用してもよい。
補助記憶部３０は、カードリーダ１の全体を制御し、上位装置３と通信し、各種処理を実行するための制御プログラム、ＯＳ、各種状態を示す状態情報、各種設定を示す設定情報等が格納されている。
【００２２】
センサ回路４０は、センサ４１の状態を取得し、センサ４１を制御し、制御部１０に接続するためのインターフェイスを提供する各種回路である。
センサ４１は、カード２の挿入や搬送路内の位置等を検出する各種方式のセンサである。
【００２３】
モータ駆動回路５０は、カード２を搬送するためのモータ５１とローラ等とを含む搬送機構を駆動するための各種回路である。
モータ５１は、搬送機構を駆動するためのモータ５１である。
【００２４】
磁気情報処理回路６０は、磁気ヘッド６１を介してカード２の磁気ストライプに対する入出力信号を処理する各種回路である。
ＩＣ情報処理回路７０は、ＩＣ接点ブロック７１を介してカード２の接触端子に対する入出力信号を処理する各種回路である。
【００２５】
インターフェイス部８０は、ＵＳＢ（Universal Serial Bus）、ＲＳ−２３２Ｃ、ＬＡＮ（Local Area Network）等の通信ラインに接続するための各種インターフェイス回路や物理層等である。インターフェイス部８０は、上位装置３との間で、コマンド２１０（図２）やレスポンス２２０を含む各種情報を、通信ラインを介して送受信する。
【００２６】
また、制御部１０は、機能構成として、コマンド受信部１００、通信バッファ確保部１１０、コマンド処理実行部１２０、通信バッファ格納部１３０、及びレスポンス送信部１４０を備えている。これらの機能構成単位は、制御部１０が、補助記憶部３０に記憶されたＯＳ及び制御プログラムを主記憶部２０に展開して実行することで実現可能である。また、制御部１０は、本発明の実施の形態に係る情報媒体処理方法を実現するためのハードウェア資源となる。
【００２７】
コマンド受信部１００は、上位装置３から情報媒体への処理に関するコマンド２１０を受信する。具体的には、コマンド受信部１００は、上位装置３が通信ラインを介して送信したコマンド２１０を、インターフェイス部８０から取得する。
このコマンド２１０は、カード２の読み出し若しくは書き込み、カードリーダ１の状態を取得する状態取得、カードリーダ１への設定情報を設定する設定情報設定、カードリーダ１のリセット等の処理を示すコマンド２１０と、これに付随するデータとを含む。
【００２８】
通信バッファ確保部１１０は、コマンド２１０を受信した際、受信したコマンド２１０を格納する受信バッファと、レスポンス２２０を格納する送信バッファとを共通化した通信バッファ２００を主記憶部２０に確保する。
また、通信バッファ確保部１１０は、コマンド２１０の容量に対するレスポンス２２０の容量の最大値を算出し、コマンド２１０の容量とレスポンス２２０の容量の最大値とを足した容量の通信バッファ２００を確保する。
この通信バッファ２００の構造については後述する。
【００２９】
コマンド処理実行部１２０は、コマンド２１０に対応した処理を実行する。具体的に、コマンド処理実行部１２０は、コマンド２１０に対応した実際の処理を実行する。また、この際に、コマンド処理実行部１２０は、主記憶部２０に一時的なデータを作成してもよい。
【００３０】
通信バッファ格納部１３０は、通信バッファ確保部１１０により確保された通信バッファ２００において、コマンド２１０を格納した際の空き領域を示すポインタからレスポンス２２０を格納する。
具体的には、本実施形態においては、通信バッファ格納部１３０は、最初に通信バッファ確保部１１０によりコマンド２１０の容量の最大値が確保された通信バッファ２００に対して、コマンド２１０を通信バッファ２００の先頭から格納する。そして、通信バッファ格納部１３０は、コマンド処理実行部１２０による処理の実行の際、格納済みのコマンド２１０の末尾の次のアドレスを示すポインタからレスポンス２２０を格納する。
【００３１】
レスポンス送信部１４０は、通信バッファ格納部１３０により格納されたレスポンス２２０を上位装置３に送信する。具体的には、レスポンス送信部１４０は、レスポンス２２０を、インターフェイス部８０から通信ラインを介して上位装置３へ送信させる。
【００３２】
次に、図２により、通信バッファ格納部１３０が確保する通信バッファ２００の構造について説明する。
通信バッファ２００は、主記憶部２０のメモリ空間内に、例えば、先頭アドレスを示すポインタ及び空き領域を示すポインタと容量を示す変数等として設定される。本実施形態では、この先頭アドレスからコマンド２１０が格納される。そして、このコマンド２１０の長さの次のアドレスを示すポインタＰが設定される。レスポンス２２０は、このポインタＰの位置から格納される。通信バッファ２００は、上述の通信バッファ格納部１３０により、このようにコマンド２１０とレスポンス２２０が連結した状態で、受信されたコマンド２１０に対するレスポンス２２０の容量の最大値を含むように確保される。
【００３３】
〔コマンド送受信処理〕
次に、図３、図４により、本発明の実施の形態に係るコマンド送受信処理の説明を行う。
本実施形態の処理では、カードリーダ１に対する処理として、まず、上位装置３からカードリーダ１へコマンド２１０が送信される。この際、カードリーダ１は、コマンド２１０を受信した際に、このコマンド２１０と送信されるレスポンス２２０とを連結格納する通信バッファ２００を主記憶部２０に確保する。この際、各コマンド２１０について、コマンド２１０に対するレスポンス２２０の容量の最大値を算出し、コマンド２１０の容量とレスポンス２２０の最大値とを加えた容量の通信バッファ２００を確保する。そして、受信データは、この通信バッファ２００の先頭から格納する。また、カードリーダ１では、送信されたコマンド２１０に対応した処理を行う。この際、その処理結果を、通信バッファ２００の格納済み受信データ末尾の次のポインタから、レスポンス２２０として格納する。そして、格納されたレスポンス２２０を、上位装置３へ返送する。
【００３４】
以下で、図３のフローチャートにより、動作履歴保存処理の詳細をステップ毎に説明する。なお、以下のステップは、カードリーダ１の制御部１０が、補助記憶部３０に記憶された制御プログラムを、ハードウェア資源を用いて実行することで実現できる。
また、以下のステップは、それぞれ別々のプロセスやスレッドとして制御部１０が実行し、少なくとも一部のステップは、ＯＳのスケジューラ等により、擬似的に同時に実行されてもよい。
【００３５】
（ステップＳ１０１）
まず、コマンド受信部１００及び通信バッファ確保部１１０が、コマンド受信開始処理を行う。
上位装置３から送信されたコマンド２１０を受信開始すると、コマンド受信部１００がそのコマンド２１０を受信開始したことを、通信バッファ確保部１１０に通知する。
【００３６】
通信バッファ確保部１１０は、通信バッファ２００の先頭アドレスを設定する。
たとえば、通信バッファ確保部１１０は、通信バッファ２００として、当該通信バッファ２００の先頭アドレスを示す「Ｒｃｖ＿Ｓｎｄ＿Ｂｕｆｆｅｒ［］」を、主記憶部２０の空き領域に設定する。
【００３７】
この際、通信バッファ確保部１１０は、Ｃ言語の「ｍａｌｌｏｃ（）」、ｊａｖａ（登録商標）やＣ＋＋の「ｎｅｗ（）」等といった、メモリの動的アロケートを行う関数を使用しない。このため、通信バッファ確保部１１０は、主記憶部２０のメモリ空間内で一時的なデータと干渉しないアドレスを、静的又は動的に算出して、通信バッファ２００の先頭アドレスに指定する。
【００３８】
具体的には、通信バッファ確保部１１０は、この先頭アドレスとして、処理の一時的なデータとして確保されたアドレスやスタック等のアドレス、他のプロセスが作成したバッファ等から特定の容量だけ離したアドレスに設定する。また、通信バッファ確保部１１０は、ガベージコレクション等を行った際に、下記の最大値の容量が確保できるアドレスを先頭アドレスに設定してもよい。
また、通信バッファ確保部１１０は、この先頭アドレスの位置は、カードリーダ１で規定されているコマンド２１０の容量とレスポンス２２０の容量とを加算した場合の最大値の容量が確保可能なように設定する。
【００３９】
（ステップＳ１０２）
次に、コマンド受信部１００は、コマンド格納処理を行う。
図４（ａ）に示すように、コマンド受信部１００は、通信バッファ２００の先頭アドレスを示す位置から、コマンド２１０を受信して格納する。
コマンド受信部１００は、上述の例の場合、「Ｒｃｖ＿Ｓｎｄ＿Ｂｕｆｆｅｒ［０］」を先頭にして、上位装置３から受信されたデータを格納する。
【００４０】
（ステップＳ１０３）
次に、通信バッファ確保部１１０が、ポインタ設定処理を行う。
通信バッファ確保部１１０は、コマンド受信部１００からコマンド２１０の受信が完了した旨の通知を受信すると、このコマンド２１０のデータの容量（大きさ）を算出する。通信バッファ確保部１１０は、例えば、「ｒｅｃｅｉｖｅ＿ｌｅｎｇｔｈ」のような変数に、このコマンド２１０の容量を書き込む。そして、図４（ａ）に示すように、その一つ後のアドレス、すなわち通信バッファ２００の残りの空き領域を示すポインタを、レスポンスを格納するアドレスを示すポインタＰとして保持しておく。
【００４１】
（ステップＳ１０４）
次に、コマンド処理実行部１２０が、コマンド処理を行う。
受信データからコマンド２１０を解釈して、当該コマンド２１０に対応した処理を実行する。
また、コマンド処理実行部１２０は、受信されたコマンド２１０の種別を解釈する。
コマンド処理実行部１２０は、コマンド２１０の実行が完了した際に、その旨とコマンド２１０の種別とを、通信バッファ確保部１１０に通知する。
【００４２】
（ステップＳ１０５）
次に、通信バッファ格納部１３０が、通信バッファ確保処理を行う。
通信バッファ確保部１１０は、この上で、解釈されたコマンド２１０の種別に対するレスポンス２２０の実際の容量（最大値）を算出し、コマンド２１０及びレスポンス２２０の容量を加算した容量の通信バッファ２００の容量を確保する。このレスポンス２２０の実際の容量（最大値）は、補助記憶部３０の設定情報中のコマンドの種別に対応したテーブル等（図示せず）を参照して算出することが可能である。
また、通信バッファ確保部１１０は、通信バッファ２００の容量を確保した後、通信バッファ２００の次のアドレスを示すポインタ（図示せず）を設定し、別のプロセス等の別バッファ（図示せず）を格納する際の先頭アドレスに設定したり、ＯＳ等に通知したりする等の処理を実行することが可能である。
【００４３】
（ステップＳ１０６）
次に、通信バッファ格納部１３０が、レスポンス格納処理を行う。
図４（ｂ）によると、コマンド処理実行部１２０は、コマンド処理実行部１２０が処理の結果として生成したレスポンス２２０を、上述のポインタＰの位置から格納する。
コマンド処理実行部１２０は、上述の例では、レスポンス２２０を「Ｒｃｖ＿Ｓｎｄ＿Ｂｕｆｆｅｒ［ｒｅｃｅｉｖｅ＿ｌｅｎｇｔｈ］」を先頭として格納する。
【００４４】
（ステップＳ１０７）
次に、レスポンス送信部１４０が、レスポンス送信処理を行う。
レスポンス送信部１４０は、レスポンス２２０の格納の完了後、通信バッファ２００に格納されたレスポンス２２０を読み出し、上位装置３へ返信する。
以上により、本発明の実施の形態に係るコマンド送受信処理を終了する。
【００４５】
〔カード２の処理動作〕
次に、カードリーダ１において実行される基本処理動作（処理シーケンス）について概説する。
まず、カード挿入口（ゲート口）から挿入されたカード２は、モータ５１とローラ等を含む搬送機構により奥に取り込まれる。これに従い、カード２は、磁気ヘッド６１によって磁気ストライプに記録された磁気情報が読み込まれる。カード２は、一旦カード挿入口の近くまで搬送され、再度後方（奥）に搬送される。そして、カード２のＩＣ端子に、ＩＣ接点を正確に下ろすための位置だしを行う。この位置だしは、図示しないフォトセンサ或いは機械スイッチ等のセンサ４１により行うことができる。
カード２が所定の通信位置に搬送されると、ＩＣ接点ブロック７１がカード２のＩＣ接点と接触してオンにされ、カード２との通信が行われる。通信が完了すると、ＩＣ接点ブロック７１がオフにされ、カード２がカード挿入口に搬送され、カード２をユーザに返却される。これにより、「取り引き」が完了する。なおここで、ＩＣ接点ブロック７１をオンにするとは、ＩＣ接点ブロック７１がカード２の接触端子に接触している状態をいい、ＩＣ接点ブロック７１をオフにするとは、ＩＣ接点ブロック７１とカード２の接触端子とが非接触の状態のことをいう。
【００４６】
〔本実施形態の主な効果〕
以上のように構成することで、以下のような効果を得ることができる。
従来は、特許文献１で記載されていたように、カードリーダのコマンド用の受信バッファとレスポンスの送信バッファとを独立して確保していた。この領域確保に当たり、受信と送信、それぞれについて必要なデータ数の最大値を算出し、受信バッファ、送信バッファをそれぞれ独立して、それぞれの最大値に対応できる容量の領域を確保していた。
しかしながら、最大値のデータ数を受信するときに、送信データも最大値の容量にとなるとは限らず、多くの場合、受信バッファと送信バッファとを全て利用することはなかった。このため、受信データ数と送信データの容量の合計では無駄な容量を含む領域を確保することになり、メモリを有効利用できていなかった。
【００４７】
これに対して、本発明の実施の形態に係るカードリーダ１は、上位装置３からカード２への処理に関するコマンド２１０を受信し、コマンド２１０に対応した処理を実行し、実行結果をレスポンス２２０として通信ラインを介して上位装置３に返信する情報媒体処理装置であり、処理に関する一時的なデータを記憶する記憶部と、コマンド２１０を受信した際、受信したコマンド２１０を格納する受信バッファと、レスポンス２２０を格納する送信バッファとを共通化した通信バッファ２００を記憶部に確保する通信バッファ確保部１１０と、通信バッファ確保部１１０により確保された通信バッファ２００において、コマンド２１０を格納した際の空き領域を示すポインタからレスポンス２２０を格納する通信バッファ格納部１３０とを備えることを特徴とする。
このように構成することで、受信と送信とに必要なバッファの容量を削減し、主記憶部２０の記憶容量を有効活用することができる。
【００４８】
また、従来から、必要な時に必要な容量の記憶容量を主記憶部において確保し、複数の目的で一つの主記憶部を使いまわすような動的なメモリ管理（以下、「メモリアロケート」という。）を行う構成も使用されている。
しかしながら、カードリーダ１のような組み込み機器の開発キット等においては、メモリアロケートの標準関数がサポートされていなかった。そのため、メモリアロケート機能と同等の機能を実装しようとすると、主記憶部のポインタの管理のため、非常に複雑なプログラムを設計する必要があった。
これに対して、本実施形態によれば、通信バッファ確保部１１０により、主記憶部２０を使用する際にコマンド２１０に対応した通信バッファ２００に限定したメモリ管理機能を実装することで、容易で効率的に必要な記憶容量を確保することができる。また、バッファのメモリ管理用に複雑なプログラムを作成する必要がなくなるため、ポインタ関連のバグ（bug）を回避して、動作の安定したカードリーダ１を製造することができる。
【００４９】
また、本実施形態のカードリーダ１は、通信バッファ確保部１１０は、コマンド２１０の容量に対するレスポンス２２０の容量の最大値を算出し、コマンド２１０の容量とレスポンス２２０の容量の最大値とを足した容量の通信バッファ２００を確保することを特徴とする。
ここで、特に、本実施形態のカードリーダ１の場合、受信データの容量が大きいのは、カード２にデータを書き込む若しくはカードリーダ１への設定情報設定に係る種類のコマンドである。これらのコマンド２１０に対するレスポンス２２０は、コマンド２１０に含まれるデータを正常に書き込み若しくは取得できたか否かの情報だけでよい。このため、レスポンス２２０は、小さい容量でよくなる。
一方、レスポンス２２０の容量が大きいのは、カード２若しくはカードリーダ１からのデータの読み出しに係る種類のコマンドである。これらの種類のコマンド２１０の場合は、データを取得する要求をカードリーダ１に伝えるだけで良い。このため、上位装置３から送信するコマンド２１０の容量は小さくなる。
このため、本実施形態のように、コマンド２１０の受信データとレスポンス２２０の送信データとを連結格納し、受信及び送信時に使用する際に必要最小限の容量だけ主記憶部２０の通信バッファ２００を確保することで、主記憶部２０に確保する記憶容量を必要最小限に小さくすることができる。また、容量を小さくしてまとまったデータとして確保されることで、制御部１０のキャッシュメモリ等も活用されやすくなり、実行時のパフォーマンスを上げることができる。
【００５０】
また、本実施形態のカードリーダ１は、通信バッファ確保部１１０は、通信バッファ２００の先頭からコマンド２１０を格納し、格納済みのコマンド２１０の末尾の次のアドレスを示すポインタからレスポンス２２０を格納することを特徴とする。
このように受信したコマンド２１０を通信バッファ２００の先頭アドレスから記憶することで、受信後に後のレスポンス２２０を格納するアドレスを示すポインタを設定しやすくなる。このため、確実に必要最小限の容量だけ主記憶部２０に通信バッファ２００を確保することができる。
【００５１】
〔他の実施の形態〕
なお、上述の実施の形態においては、通信バッファ確保部１１０は、通信バッファ２００の先頭からコマンド２１０を格納する例について説明した。しかしながら、コマンド２１０とレスポンス２２０の格納の順番を変更して受信するように構成することも可能である。この場合、主記憶部２０において、レスポンス２２０の方がメモリ空間上で最初に格納される。
たとえば、図５に示すように、コマンド２１０のデータをレスポンス２２０のアドレスの後ろに詰めて格納するようにしてもよい。この場合でも、図５（ａ）のように、通信バッファ確保部１１０は、コマンド２１０とレスポンス２２０とを合わせた必要最小限の容量だけ主記憶部２０の通信バッファ２００を確保する。そして、図５（ｂ）のように、通信バッファ確保部１１０は、通信バッファ２００の先頭のアドレスにポインタＰを設定し、レスポンス２２０をこのポインタＰの位置から格納することが可能である。
このように構成することで、コマンド２１０とレスポンス２２０とを主記憶部２０に配置する際のアドレスを柔軟に設定することが可能となる。また、複数種類のメモリを同一のメモリ空間で管理している場合、マルチプロセッサ等の場合、及び特定のＭＰＵ等におけるＤＭＡ転送等で利用する場合等に、アドレスの設定がしやすくなる。また、常に通信バッファ２００の先頭からレスポンス２２０を送信することが可能となるため、レスポンス２２０を容易に送信できる。
【００５２】
なお、通信バッファ確保部１１０は、受信されたコマンド２１０のレスポンス２２０にコマンド２１０に含まれるデータが必要ない場合、レスポンス２２０を示すポインタＰを、コマンド２１０の格納されたアドレスと重なってもよいように設定することも可能である。
このように構成することで、通信バッファ２００の確保に必要な主記憶部２０の記憶容量を削減することができる。
【００５３】
さらに、本発明の他の実施の形態に係る通信バッファ格納部１３０は、カード２に書き込む若しくは設定情報を設定する処理を実行するコマンド２１０を受信した場合、コマンド２１０を通信バッファ２００の先頭から格納し、格納済みのコマンド２１０の末尾の次のアドレスを示すポインタからレスポンス２２０を格納し、カード２から読み出す若しくは状態情報を読み出す処理を実行するコマンド２１０を受信した場合、レスポンス２２０の末尾の次のアドレスを示すポインタからコマンド２１０を格納し、通信バッファ２００の先頭からレスポンス２２０を格納するように構成してもよい。
ここで、カード２にデータを書き込む若しくはカードリーダ１への設定情報の設定のコマンド２１０の容量は大きい。この場合、図４のように、レスポンス２２０の容量は小さくなる。
一方、上述したように、カード２若しくはカードリーダ１からのデータの読み出しのようなコマンド２１０の容量は小さい。この場合、図５のように、レスポンス２２０の容量は大きくなる。
【００５４】
このように構成することで、コマンド２１０とレスポンス２２０のいずれの容量が大きくても、大きい容量のデータと小さい容量のデータとを容量順に並べて保存することが可能となる。これにより、通信バッファ２００を解放したり別のバッファを設定したりするときに、データの容量による配置を予測して主記憶部２０内のアドレスを設定しやすくなる。結果として、ガベージコレクション等をしやすくなり、記憶部の記憶容量を柔軟に活用可能となる。
【００５５】
また、上述の実施の形態では、コマンド２１０とレスポンス２２０とについて連結した通信バッファを確保したものの、他のバッファも連結して確保することも可能である。また、通信以外の機能についても、セットで処理する必要があるデータを保存するためのバッファについて適用可能である。
このように構成することで、記憶部の記憶容量を有効活用することが可能となる。
【００５６】
また、上述の実施の形態では、カードリーダ１として、接触式ＩＣカードリーダ、非接触式ＩＣカードリーダ、及び磁気カードリーダを用いる例について記載した。
しかしながら、本発明の他の実施の形態として、例えば、貨幣価値情報を扱う他の情報媒体に情報を読み込み又は書き出しする装置にも同様に用いることができる。たとえば、磁気ストライプが形成されている通帳に対して、磁気情報の読み出し又は書き込みを行う装置等についても適用可能である。
これにより、情報媒体への処理を行うような装置について、記憶部の記憶容量を有効活用することが可能となる。
【００５７】
なお、上記実施の形態の構成及び動作は例であって、本発明の趣旨を逸脱しない範囲で適宜変更して実行することができることは言うまでもない。
【符号の説明】
【００５８】
１  カードリーダ
２  カード
３  上位装置
１０  制御部
２０  主記憶部
３０  補助記憶部
４０  センサ回路
４１  センサ
５０  モータ駆動回路
５１  モータ
６０  磁気情報処理回路
６１  磁気ヘッド
７０  ＩＣ情報処理回路
７１  ＩＣ接点ブロック
８０  インターフェイス部
１００  コマンド受信部
１１０  通信バッファ確保部
１２０  コマンド処理実行部
１３０  通信バッファ格納部
１４０  レスポンス送信部
２００  通信バッファ
２１０  コマンド
２２０  レスポンス
Ｐ  ポインタ
【図１】
2017068661.tif 000003
【図２】
2017068661.tif 000004
【図３】
2017068661.tif 000005
【図４】
2017068661.tif 000006
【図５】
2017068661.tif 000007