(57)【特許請求の範囲】
【請求項１】
上位装置とシリアル通信可能に接続されており、
前記シリアル通信により前記上位装置からコマンドを受信し、当該コマンドに対応した処理を実行する電子機器装置であって、
前記シリアル通信により受信したデータの保存のタイミングに必要なクロック信号を生成するクロック生成部と、
前記コマンドに含まれる特定コードに対応した反転ビットの間隔を、前記クロック生成部により生成された前記クロック信号で計測する反転間隔計測部と、
該反転間隔計測部により計測された反転ビットの間隔に対応するよう、前記上位装置との通信速度を調整する通信速度調整部と、
前記反転ビットの間隔により前記通信速度を調整した後、前記コマンドを解析して前記通信速度を更に補正するコマンド解析実行部とを備える
ことを特徴とする電子機器装置。
【請求項２】
前記シリアル通信により受信したデータをＤＭＡ（ダイレクト・メモリ・アクセス）で保存するバッファを備え、
前記反転間隔計測部は、前記バッファに保存されたデータのビット列から前記特定コードに対応した反転ビットの間隔を計測し、
前記コマンド解析実行部は、前記コマンドのデータ全体に相当する前記ＤＭＡのデータから、前記シリアル通信の１ビット分の変調周期に相当する前記クロック信号のカウント値を算出し、算出された値を、次コマンド受信時の補正値とする
ことを特徴とする請求項１に記載の電子機器装置。
【請求項３】
前記特定コードは、スタートビットを含む第一の反転ビット列の長さと、その後の第二の反転ビット列の長さとが特定の比となるよう設定され、
前記反転間隔計測部は、前記特定の比となる反転ビットの列として前記第一の反転ビット列及び前記第二の反転ビット列を特定し、特定された前記第一の反転ビット列及び前記第二の反転ビット列の前記クロック信号のカウント値を算出して前記反転ビットの間隔を計測する
ことを特徴とする請求項１又は２に記載の電子機器装置。
【請求項４】
前記上位装置からの前記コマンドを受信し、読み取り又は書き込みするカード状媒体に対して、前記コマンドに対応する特定の処理を実行するカードリーダである
ことを特徴とする請求項１乃至３のいずれか１項に記載の電子機器装置。
【請求項５】
前記反転間隔計測部は、前記上位装置から前記コマンドを受信する度に、前記反転ビットの間隔を計測する
ことを特徴とする請求項４に記載の電子機器装置。
【請求項６】
上位装置とシリアル通信可能に接続されており、
前記シリアル通信により前記上位装置からコマンドを受信し、当該コマンドに対応した処理を実行する電子機器装置により実行されるシリアル通信速度調整方法であって、
前記コマンドに含まれる特定コードに対応した反転ビットの間隔を、内蔵されたクロック生成部により生成されたクロック信号で計測し、
計測された反転ビットの間隔に対応するよう、前記上位装置との通信速度を調整し、
前記反転ビットの間隔により前記通信速度を調整した後、前記コマンドを解析して前記通信速度を更に補正する
ことを特徴とするシリアル通信速度調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器装置、及びシリアル通信速度調整方法に関する。
【背景技術】
【０００２】
従来、ＡＴＭ（Automated Teller Machine）、入室管理システム、在庫管理システム等において、カード状媒体の挿入や排出、データの読み出しや書き込み等に用いられるカードリーダが存在する。
たとえば、特許文献１には、このようなカード状媒体用のカードリーダの例が記載されている。
【０００３】
ここで、特許文献１に記載されたようなカードリーダが上位装置とシリアル通信を行うためには、上位装置とカードリーダ間で同一のボーレートで通信を行う必要がある。一般的に、カードリーダ側では、外部接続の水晶振動子と回路を使った精度の高いクロック信号を用い、カードリーダ側のボーレートの精度を補うように構成されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−８９５７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、外部接続の水晶振動子を使用せず、ＣＰＵ等の制御部に内蔵されるクロックで上位装置とシリアル通信を行った場合、うまく通信できない可能性があった。これは、制御部に内蔵されるクロック信号は温度変化等による変動が大きいためであった。
【０００６】
本発明は、このような状況に鑑みてなされたものであり、水晶振動子等を使った精度の高いクロック信号を使用しなくても上位装置との間で確実にシリアル通信可能な電子機器装置及びシリアル通信速度調整方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の電子機器装置は、上位装置とシリアル通信可能に接続されており、前記シリアル通信により前記上位装置からコマンドを受信し、当該コマンドに対応した処理を実行する電子機器装置であって、前記シリアル通信により受信したデータの保存のタイミングに必要なクロック信号を生成するクロック生成部と、前記コマンドに含まれる特定コードに対応した反転間隔を、前記クロック生成部により生成された前記クロック信号で計測する反転間隔計測部と、該反転間隔計測部により計測された反転間隔に対応するよう、前記上位装置との通信速度を調整する通信速度調整部と、前記反転ビットの間隔により前記通信速度を調整した後、前記コマンドを解析して前記通信速度を更に補正するコマンド解析実行部とを備えることを特徴とする。
このように構成することで、水晶振動子等を使った精度の高いクロック信号を使用しなくても上位装置との間で確実にシリアル通信することが可能となる。
【０００８】
本発明の電子機器装置は、前記シリアル通信により受信したデータをＤＭＡ（ダイレクト・メモリ・アクセス）で保存するバッファを備え、前記反転間隔計測部は、前記バッファに保存されたデータのビット列から前記特定コードに対応した反転間隔を計測し、前記コマンド解析実行部は、前記コマンドのデータ全体に相当する前記ＤＭＡのデータから、前記シリアル通信の１ビット分の変調周期に相当する前記クロック信号のカウント値を算出し、算出された値を、次コマンド受信時の補正値とすることを特徴とする。
このように構成することで、負荷をかけずに高速でデータ転送ができ、確実に受信データを取得でき、シリアル通信の速度を高精度に調整可能となる。
【０００９】
本発明の電子機器装置は、前記特定コードは、スタートビットを含む第一の反転ビット列の長さと、その後の第二の反転ビット列の長さとが特定の比となるよう設定され、前記反転間隔計測部は、前記特定の比となる反転ビットの列として前記第一の反転ビット列及び前記第二の反転ビット列を特定し、特定された前記第一の反転ビット列及び前記第二の反転ビット列の前記クロック信号のカウント値を算出して前記反転間隔を計測することを特徴とする。
このように構成することで、シリアル通信の受信データから容易に特定コードを検出できる。
【００１０】
本発明の電子機器装置は、前記上位装置からの前記コマンドを受信し、読み取り又は書き込みするカード状媒体に対して、前記コマンドに対応する特定の処理を実行するカードリーダであることを特徴とする。
このように構成することで、特定の処理を安全に行うことができる。
【００１１】
本発明の電子機器装置は、前記反転間隔計測部は、前記上位装置から前記コマンドを受信する度に、前記反転間隔を計測することを特徴とする。
このように構成することで、前回のコマンドの受信から時間が経過しクロック等が変動していても、確実に速度を調整してコマンドを受信することが可能となる。
【００１２】
本発明のシリアル通信速度調整方法は、上位装置とシリアル通信可能に接続されており、前記シリアル通信により前記上位装置からコマンドを受信し、当該コマンドに対応した処理を実行する電子機器装置により実行されるシリアル通信速度調整方法であって、前記コマンドに含まれる特定コードに対応した反転間隔を、内蔵されたクロック生成部により生成されたクロック信号で計測し、計測された反転間隔に対応するよう、前記上位装置との通信速度を調整し、前記反転ビットの間隔により前記通信速度を調整した後、前記コマンドを解析して前記通信速度を更に補正することを特徴とする。
このように構成することで、水晶振動子等を使った精度の高いクロック信号を使用しなくても上位装置との間で確実にシリアル通信することが可能となる。
【発明の効果】
【００１３】
本発明によれば、シリアル通信のコマンドに含まれる特定コードに対応した反転間隔を内蔵のクロック信号で計測することで、水晶振動子等を使った精度の高いクロック信号を使用しなくても上位装置との間で確実にシリアル通信可能となる電子機器装置及びシリアル通信速度調整方法を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態に係るカード制御システムのシステム構成図である。
【図２】図１に示すカードリーダが実行するコマンド受信実行処理のフローチャートである。
【図３】図２に示す反転間隔計測処理の概念図である。
【図４】図２に示す反転間隔計測処理の概念図である。
【発明を実施するための形態】
【００１５】
＜実施の形態＞
〔カード制御システムＸの構成〕
図１を参照して、本発明の実施の形態に係るカード制御システムＸの構成について説明する。本実施形態のカード制御システムＸは、ＡＴＭ、入室管理システム、在庫管理システム、入出車管理システム等（以下、「ＡＴＭ等」という。）のカード状媒体３を利用するシステムである。
本実施形態のカード制御システムＸは、カードリーダ１、上位装置２、カード状媒体３を含んで構成される。
【００１６】
カードリーダ１は、ＡＴＭ等に内蔵されたカードリーダ装置である。カードリーダ１は、上位装置２と、例えば、調歩同期方式で半二重通信方式のシリアル通信で送受信が可能なように接続されている。これにより、カード状媒体３がカードリーダ１に挿入されると、カードリーダ１は、シリアル通信により上位装置２からコマンドを受信し、カード状媒体３に対して、当該コマンドに対応した特定の処理を実行する。
【００１７】
上位装置２は、ＡＴＭ等の本体である。上位装置２は、カードリーダ１の電源の供給を制御する。また、上位装置２は、カードリーダ１に対してシリアル通信により各種コマンドを送信し、このコマンドの実行結果を受信する。
【００１８】
カード状媒体３は、磁気カードやＩＣカードやＲＦＩＤ（Radio Frequency Identification）カード等の一時的でない記録媒体である。カード状媒体３は、クレジットカード、プリペイドカード、又はキャッシュカード等の金銭的な価値を示す価値情報、ＩＤ（Identification）コードのような固有情報等が記録されている。
【００１９】
また、カードリーダ１は、制御部１０、主記憶部２０、補助記憶部３０、及びカード読取書込部４０を含んでいる。
【００２０】
制御部１０は、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）等の制御演算手段である。
制御部１０は、後述するように、クロック生成回路を内蔵しており、生成されたクロックを用いて、上位装置２との間でシリアル通信が可能である。
【００２１】
主記憶部２０は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）やＭＲＡＭ（Magnetoresistive Random Access Memory）等の記録媒体である。
主記憶部２０には、後述するように、各種バッファが確保され、当該バッファにデータが保存される。
【００２２】
補助記憶部３０は、ＲＯＭ（Read Only Memory）、フラッシュメモリ（Flash Memory）等の不揮発性の記録媒体である。
補助記憶部３０には、カードリーダ１のファームウェア等の制御プログラムと各種データ等とが保存される。
【００２３】
カード読取書込部４０は、カード状媒体３を読み取り又は書き込むための磁気ヘッドや電磁誘導コイルやＩＣ接続インターフェイスやＲＦＩＤ用アンテナ、カード状媒体３を挿入や排出するための駆動機構やセンサ、状態表示するためのＬＥＤ（Light Emitting Diode）や液晶等の表示部が備えられている。また、カード読取書込部４０に、カードリーダ１の初期設定や各種指示を行うためのディップスイッチやジャンパピンやスイッチ等の入力部が含まれていてもよい。
【００２４】
なお、制御部１０、主記憶部２０、及び補助記憶部３０は、一体的に構成されたマイコン（Micro Controller）等であってもよい。
【００２５】
より詳細に説明すると、制御部１０は、クロック生成部１００、反転間隔計測部１１０、通信速度調整部１２０、ＤＭＡ部１３０（ダイレクト・メモリ・アクセス、Direct Memory Access）、及びコマンド解析実行部１４０を含んでいる。
また、主記憶部２０は、ＤＭＡバッファ２００（Buffer）、及びコマンドデータバッファ２１０の領域が確保される。
また、補助記憶部３０は、ボーレート設定データ３１０を記憶する。
【００２６】
クロック生成部１００は、受信したデータの保存のタイミングに必要なクロック信号を生成する。クロック生成部１００は、オンチップ・オシレータ等の発振回路から構成されるため、外部の水晶発振子等を接続する必要はない。また、クロック生成部１００から生成されるクロック信号は、各部に必要なタイミングに合わせて特定の割合で分周されている。また、クロック生成部１００により生成されるクロック信号の速度は、制御部１０の温度や供給される電圧等により、既定の速度から特定の幅で変動してもよい。また、クロック生成部１００は、制御部１０の各種制御に必要なクロック信号を供給することも可能である。また、クロック生成部１００により生成されたクロック信号により、各種タイミング計測用のソフトウェアタイマー等を設定することも可能である。
【００２７】
反転間隔計測部１１０は、コマンドに含まれる特定コードに対応した反転ビットの間隔（以下、「反転間隔」という。）を、クロック生成部１００により生成されたクロック信号により計測する。ここで、本実施形態においては、以下、シリアル通信の受信信号について、Ｈ（High）レベルである「１」のビットを「非反転ビット」、Ｌ（Low）レベルである「０」のビットを「反転ビット」と称する。また、以下において、反転間隔は、上位機器２からのシリアル通信の受信データの１ビット分に相当する変調周期に対応した、クロック生成部１００により生成されたクロック信号のカウント値である。
具体的に説明すると、反転間隔計測部１１０は、主記憶部２０に記憶されたＤＭＡバッファ２００のＤＭＡデータ５００のビット列から、特定コードに対応する反転ビットのビット列を検索する。反転間隔計測部１１０は、この反転ビットのビット列の長さ、すなわちクロック信号のカウント値を算出し、これを用いて反転間隔を求める。
【００２８】
より具体的に説明すると、反転間隔計測部１１０は、特定コードに対応する第一の反転ビット列及び第二の反転ビット列を特定し、特定された第一の反転ビット列及び第二の反転ビット列についてクロック信号のカウント値を算出して反転間隔を計測する。ここで、本実施形態において、特定コードは、コマンドにおけるテキスト開始用の符号である。このテキスト開始用の符号には、スタートビットを含む第一の反転ビット列の長さと、その後の第二の反転ビット列の長さとが特定の比となるビット列が含まれる。このため、反転間隔計測部１１０は、ＤＭＡバッファ２００に保存されたＤＭＡデータ５００から、連続する反転ビットの長さがこの特定の比であるようなビット列を特定コードとして検索し、検索された特定コードの第一の反転ビット列及び第二の反転ビット列のクロック信号のカウント値を算出し、反転間隔を計測する。本実施形態において、反転間隔計測部１１０は、特定コードの１ビット分となる１クロック信号を単位として、反転間隔を算出する。
【００２９】
また、反転間隔計測部１１０は、上位装置２からコマンドを受信する毎に、反転間隔を計測する。反転間隔計測部１１０は、例えば、上位装置２によりカードリーダ１に電源を供給された直後のコマンドの受信時、待機状態からの復帰時のコマンドの受信時等に、毎回、反転間隔を計測する。
【００３０】
通信速度調整部１２０は、カードリーダ１から上位装置２への通信速度を上位装置２の通信速度に一致させるために、反転間隔計測部１１０により計測された反転間隔に基づいて、カードリーダ１から上位装置２への通信ボーレート（通信速度）を調整する。
具体的に説明すると、通信速度調整部１２０は、反転間隔計測部１１０により算出された反転間隔を、ボーレートに対応する値として、補助記憶部３０のボーレート設定データ３１０に保存する。この保存されたボーレートに対応するクロック信号のカウント値は、反転間隔に対応して通信速度を調整した値となる。
【００３１】
ＤＭＡ部１３０は、ＤＭＡの制御を行う内蔵のＤＭＡコントローラである。ＤＭＡ部１３０は、上位装置２からの転送開始信号により、ＤＭＡ機能を用いてシリアル信号の受信ライン（ＲｘＤ）の周期データを受信し、受信されたデータを、直接、ＤＭＡデータ５００として専用のＤＭＡバッファ２００に保存する。
なお、制御部１０は、後述するように、ＤＭＡ部１３０を備えないような構成であってもよい。また、制御部１０とは別に、ＤＭＡコントローラを別途備えるような構成であってもよい。
【００３２】
コマンド解析実行部１４０は、コマンドを解析し、解析されたコマンドに対応する特定の処理を実行する。コマンド解析実行部１４０は、通信速度調整部１２０により調整された速度で、ＤＭＡバッファ２００のＤＭＡデータ５００からコマンドを解析する。このコマンドは、カードリーダ１の初期化、ステータス（状態情報）の取得や表示、カード状媒体３の挿入や排出、カード状媒体３のデータの読み込みや書き出し、ファームウェアの更新等の特定の処理の指示が含まれるデータである。また、コマンドデータ５１０には、カードリーダ１のファームウェアのプログラムやデータ等が含まれていてもよい。
コマンド解析実行部１４０は、コマンドの実行の結果を、シリアル信号の送信ライン（ＴｘＤ）により、上位装置２に送信する。
【００３３】
ＤＭＡバッファ２００は、ＤＭＡ部１３０により受信されたＤＭＡデータ５００が保存される専用のバッファである。このＤＭＡデータ５００は、クロック生成部１００で生成されたクロック信号に基づいたサンプリング速度でサンプリングされたビット列となる。また、このＤＭＡデータ５００のサンプリング速度は、シリアル通信のボーレートを調整するために必要な速度であり、例えば、上位装置２と通信可能なシリアル通信の規定のボーレートの数倍以上の速度である。
なお、ＤＭＡデータ５００は、クロック信号により作成されたリアルタイムタイマによる、特定の周期で取得されたビット列であってもよい。
【００３４】
コマンドデータバッファ２１０は、ＤＭＡデータ５００から解析されたコマンドデータ５１０を保存するためのバッファである。
コマンドデータ５１０は、コマンド解析実行部１４０によりＤＭＡバッファ２００に保存されたＤＭＡデータ５００から、ボーレート設定データ３１０に設定されたボーレートに対応する値であるクロック信号のカウント値をサンプリング間隔として用いて読み出されたデータである。
【００３５】
ボーレート設定データ３１０は、シリアル通信のボーレートに関するデータである。ボーレート設定データ３１０には、上位装置２のボーレートに対応して算出されたクロック信号のカウント値が含まれている。このクロック信号のカウント値は、ＲＳ−２３２Ｃ等のシリアル通信で規定されたボーレートに対応する値、又は反転間隔に対応して通信速度を調整した値、次コマンド受信時の補正値等である。
【００３６】
また、ボーレート設定データ３１０には、電源投入直後に上位装置２から送信された最初のコマンド（以下、「初回コマンド」という。）を受信する際のボーレートのデフォルト値を含んでいる。たとえば、このボーレートのデフォルト値は、ファームウェアにより設定され、又は入力部のディップスイッチやジャンパピンの組み合わせ等を読み込んで設定される。このボーレートのデフォルト値は、工場出荷時の初期値として、例えば、９，６００ｂｐｓ〜１１５．２Ｋｂｐｓのような、ＲＳ−２３２Ｃで規定された特定値が設定される。
【００３７】
なお、反転間隔計測部１１０、通信速度調整部１２０、及びコマンド解析実行部１４０は、補助記憶部３０については、記憶された制御プログラム（図示せず）を主記憶部２０に展開し、制御部１０が実行することで、各部の機能を実現することが可能である。また、その他の各部は、回路のハードウェアとして実現される。
【００３８】
〔カードリーダ１によるコマンド受信実行処理〕
次に、図２〜図４により、本発明の実施の形態に係るコマンド実行処理について説明する。
本実施形態のコマンド受信実行処理では、上位装置２からのコマンド受信を開始し、シリアル通信の速度を調整し、ボーレートの補正をしてコマンドの実行結果を応答する。ここで、上述したように、上位装置２とカードリーダ１は、シリアル送受信にて接続されている。カードリーダ１は、上位装置２から送信された受信データから反転間隔を測定し、カードリーダ１自身が上位装置２に対してデータを送信する際のボーレートを上位装置２と同じになるよう設定する。また、この補正は、上位装置２からのシリアル通信のコマンドの受信毎に実行する。その後、カードリーダ１は、受信したコマンドに対応した特定の処理を開始し、通信速度の最終的な補正を行って、コマンドの実行結果を上位機器２に応答する。
【００３９】
本実施形態のコマンド受信実行処理は、主に制御部１０が、記憶媒体に記憶された制御プログラム（図示せず）を、各部と協働し、ハードウェア資源を用いて実行する。これにより、本実施形態のシリアル通信速度調整方法、及びシリアル通信速度調整プログラムの処理を実現することができる。
以下で、図２のフローチャートにより、本実施形態のコマンド受信実行処理の詳細をステップ毎に説明する。
【００４０】
（ステップＳ１０１）
まず、ＤＭＡ部１３０が、シリアル通信スタート処理を行う。
ＤＭＡ部１３０は、上位装置２よりシリアル通信でデータが送信されると、ＲｘＤ信号の反転間隔を、ＤＭＡ機能を用いてＤＭＡバッファ２００へＤＭＡデータ５００として保存する。
【００４１】
（ステップＳ１０２）
次に、コマンド解析実行部１４０が、解析されたコマンドデータ５１０に整合性があったか否かを判定する。
【００４２】
まず、コマンド解析実行部１４０は、このＤＭＡバッファ２００のＤＭＡデータ５００を、コマンドに変換し、コマンドデータバッファ２１０に保存する。コマンド解析実行部１４０は、この際、補助記憶部３０からボーレート設定データ３１０を読み出す。コマンド解析実行部１４０は、ボーレート設定データ３１０に設定されたクロック信号のカウント値をサンプリング間隔としてＤＭＡデータ５００を読み出し、コマンドデータ５１０に変換する。この際に、クロック信号のカウント値として、電源投入直後の初回コマンド受信時には、特定のデフォルト値に対応した値を算出して使用する。また、コマンド解析実行部１４０は、二回目以降には、後述するステップＳ１１０でボーレート設定データ３１０にセットされた値をカウント値として使用する。つまり、二回目以降、コマンド解析実行部１４０は、直前のコマンドの受信の際に補正された値、後述する「次コマンド受信時の補正値」をカウント値として使用する。
【００４３】
この上で、コマンド解析実行部１４０は、コマンドデータバッファ２１０に保存されたコマンドデータ５１０について、パリティチェック、電文途切れのチェック、ＣＲＣ（Cyclic Redundancy Check）等により、データの整合性を検査する。
コマンド解析実行部１４０は、コマンドデータ５１０の整合性があった場合に、Ｙｅｓと判定する。コマンド解析実行部１４０は、それ以外の場合には、Ｎｏと判定する。
Ｙｅｓの場合、コマンド解析実行部１４０は、処理をステップＳ１０８に進める。
Ｎｏの場合、コマンド解析実行部１４０は、処理をステップＳ１０３に進める。
【００４４】
（ステップＳ１０３）
コマンドデータ５１０に整合性がなかった場合、コマンド解析実行部１４０が、初回コマンドであったか否かを判定する。コマンド解析実行部１４０は、解析されたコマンドデータ５１０が、初回コマンドであった場合に、Ｙｅｓと判定する。コマンド解析実行部１４０は、それ以外の場合、つまり、二回目以降のコマンドであった場合は、Ｎｏと判定する。
Ｙｅｓの場合、コマンド解析実行部１４０は、処理をステップＳ１０４に進める。
Ｎｏの場合、コマンド解析実行部１４０は、処理をステップＳ１０７に進める。
【００４５】
（ステップＳ１０４）
初回コマンドであった場合、反転間隔計測部１１０が、反転間隔計測処理を行う。
反転間隔計測部１１０は、ＤＭＡバッファ２００に保存されたＤＭＡデータ５００から特定コードに体操した反転間隔を計測する。
【００４６】
図３（ａ）は、この特定コードとして、例えば、コマンドのテキスト開始符号である「ＳＴＸ」のコードである「０ｘＦ２」のビット列を使用する例を示している。シリアル通信のデータは、１ビットのスタートビット、８ビットのデータビット、１ビットのストップビット、１ビットのパリティビットを単位とする、計１０ビットを単位で伝送される。この際に、スタートビットは、必ず「０」、ストップビットは必ず「１」となる。また、データビットであるＢ０〜Ｂ７は、最下位ビット（ＬＳＢ）から最上位ビット（ＭＳＢ）に向けて順に伝送される。
【００４７】
このため、特定コードが「０ｘＦ２」の場合、第一の反転ビット列である「００」、非反転ビット列「１」、その後の第二の反転ビット列である「００」、その後の非反転ビット列「１１１１」、ストップビットの「１」、最後にパリティビットが送信される。よって、この例の場合、第一の反転ビット列の長さＴ０と、その後の第二の反転ビット列の長さＴ２とが等しくなる、つまり、１：１の特定の比となる。
【００４８】
図３（ｂ）は、ＤＭＡバッファ２００に保存されたＤＭＡデータ５００において、Ｔ０：Ｔ２＝１：１のデータの例である。反転間隔計測部１１０は、このように、Ｔ０：Ｔ１＝１：１となる箇所のビット列を検索して、第一の反転ビット列と第二の反転ビット列として特定する。反転間隔計測部１１０は、特定された第一の反転ビット列と第二の反転ビット列から、特定コードの１ビット分となるクロック信号のカウント値である反転間隔を算出する。図３（ｂ）の例の場合、反転間隔計測部１１０は、反転間隔＝（Ｔ０の長さ＋Ｔ２の長さ）／４、として算出する。この例では、Ｔ０の長さ＝６、Ｔ２の長さ＝６であるので、反転間隔＝３（周期）と算出する。
【００４９】
なお、反転間隔計測部１１０は、反転間隔の算出の際に、Ｔ１の長さも用いてもよい。この場合、反転間隔計測部１１０は、反転間隔＝（Ｔ０の長さ×２＋Ｔ１の長さ＋Ｔ２の長さ×２）／５、のような式で算出することが可能である。また、ＤＭＡバッファ２００に保存されたＤＭＡデータ５００は、実際には、誤差が少なくなる程度に細かくサンプリングされていてもよい。
【００５０】
（ステップＳ１０５）
次に、通信速度調整部１２０が、通信速度調整処理を行う。
通信速度調整部１２０は、反転間隔計測部１１０により計測された反転間隔に対応するよう、上位装置２との通信速度を調整する。具体的には、通信速度調整部１２０は、計測された反転間隔を、補助記憶部３０のボーレート設定データ３１０に保存する。これにより、上位装置２との通信速度を調整することが可能になる。
上述の図３（ｂ）の例においては、通信速度調整部１２０は、反転間隔が３（周期）であるので、これをボーレート設定データ３１０に、通信速度が調整された値として設定する。
【００５１】
このように構成することで、通信速度調整部１２０は、９，６００ｂｐｓや３８，４００ｂｐｓ、１１５，２００ｂｐｓ、といった固定値のボーレートを設定する必要がなくなる。また、温度変動等でクロック信号の速度の変動が起こっても、上位装置２と同じボーレートが保たれ、シリアル通信が可能な状態を維持できる。
【００５２】
（ステップＳ１０６）
次に、コマンド解析実行部１４０が、データ復調ができるか否かを判定する。
コマンド解析実行部１４０は、調整された通信速度で、ＤＭＡバッファ２００に保存されたＤＭＡデータ５００から、コマンドデータ５１０への復調を試みる。つまり、コマンド解析実行部１４０は、ＤＭＡバッファ２００に保存されたＤＭＡデータ５００を、ボーレート設定データ３１０に設定されたクロック信号のカウント値の間隔でサンプリングし直して、改めてコマンドデータ５１０に変換する。
【００５３】
コマンド解析実行部１４０は、変換されたコマンドデータ５１０について、上述のステップＳ１０２と同様に整合性を検査する。上述の図３（ｂ）の例では、コマンド解析実行部１４０が、ＤＭＡデータ５００を３（周期）で読み出して、コマンドデータ５１０に変換した場合の整合性を検査する。コマンド解析実行部１４０は、整合性があった場合には、Ｙｅｓと判定する。コマンド解析実行部１４０は、整合性がなかった場合には、Ｎｏと判定する。
Ｙｅｓの場合、コマンド解析実行部１４０は、処理をステップＳ１０８に進める。
Ｎｏの場合、コマンド解析実行部１４０は、復調できなかったとして、処理をステップＳ１０１に戻して、上位装置２からの再度のコマンド送信を待つ。
【００５４】
（ステップＳ１０７）
二回目以降のコマンドであった場合、コマンド解析実行部１４０が、ＮＡＫ応答処理を行う。
カードリーダ１の電源供給又は待機状態からの初回のコマンドではなく、二回目以降のコマンドである場合は、機器の故障、ノイズの混入、及び不正操作等による通信エラーの可能性がある。
このため、コマンド解析実行部１４０は、否定応答符号の「ＮＡＫ」のコードである「０ｘ１５」等を、送信ラインのＴｘＤにより上位装置２へ応答する。
その後、コマンド解析実行部１４０は、処理をステップＳ１０１に戻す。
【００５５】
（ステップＳ１０８）
ここで、コマンドデータ５１０に整合性があった場合、コマンド解析実行部１４０が、ＡＣＫ応答処理を行う。
図４によると、カードリーダ１のコマンド解析実行部１４０は、上位装置２に対して、肯定応答符号の「ＡＣＫ」のコードである「０ｘ０６」等を、ＴｘＤにより上位装置２へ応答する。
【００５６】
（ステップＳ１０９）
次に、コマンド解析実行部１４０が、コマンド対応処理を行う。
コマンド解析実行部１４０は、コマンドデータバッファ２１０に保存されたコマンドデータ５１０を解釈し、コマンドに対応する特定の処理を実行開始する。たとえば、コマンド解析実行部１４０は、カード読取書込部４０に対してカード状媒体３の挿入、排出、読み込み、若しくは書き込み等の指示を行う。また、例えば、コマンド解析実行部１４０は、カードリーダ１自体の状態読み出し、若しくはファームウェア更新等の処理を実行する。
【００５７】
（ステップＳ１１０）
次に、コマンド解析実行部１４０が、通信速度補正処理を行う。
コマンド解析実行部１４０は、コマンドを受信した際にＤＭＡ部１３０により記憶されたＤＭＡバッファ２００に保存されたＤＭＡデータ５００により、通信速度を補正する。コマンド解析実行部１４０は、コマンドデータ５１０として解釈された全てのＤＭＡデータ５００に対応するクロック信号のカウント値（長さ）を、コマンドデータ５１０の全ビット数で割り、コマンドデータ５１０の１ビット分に対応するクロック信号のカウント値を算出する。つまり、コマンド解析実行部１４０は、コマンドデータ５１０全体に相当するＤＭＡデータ５００から、シリアル通信の１ビット分の変調周期に相当するクロック信号のカウント値を算出する。コマンド解析実行部１４０は、この算出された値を、次コマンド受信時の補正値として、ボーレート設定データ３１０に設定する。
【００５８】
このように構成し、一旦、反転間隔により通信速度を調整した後、コマンドを解析して更に補正することで、より高精度に上位装置２との間の通信速度を調整することが可能となる。これにより、上位装置２から、制御部１０が熱等の変動が少ない時間で次回のコマンドが送信された際に、より解析しやすくなる可能性を高めることができる。よって、コマンドに対する特定の処理の実行までの待ち時間等を減らす効果が期待できる。
【００５９】
（ステップＳ１１１）
次に、コマンド解析実行部１４０が、コマンド結果応答処理を行う。
図４によると、コマンド解析実行部１４０は、コマンドの実行が終了した後、上述の算出された平均値で補正されたボーレートにより、コマンドの実行結果の応答（レスポンス）を上位装置２へ送信する。
【００６０】
これに対して、上位装置２が、ＡＣＫの応答をカードリーダ１に対して応答する。
その後、コマンド解析実行部１４０は、処理をステップＳ１０１に戻し、再び上位装置２からコマンドが送信されるまで待機状態になる。
なお、カードリーダ１の待機状態が特定の時間より長く続いた場合、上位装置２は、カードリーダ１への電源供給を停止してもよい。
以上により、本発明の実施の形態に係るコマンド受信実行処理の説明を終了する。
【００６１】
〔本実施形態の主な効果〕
以上のように構成することで、以下のような効果を得ることができる。
本発明の実施の形態に係るカードリーダ１は、上位装置２とシリアル通信で接続されており、シリアル通信により上位装置からコマンドを受信し、当該コマンドに対応した処理を実行する電子機器装置であって、シリアル通信により受信したデータの保存のタイミングに必要なクロック信号を生成するクロック生成部１００と、コマンドに含まれる特定コードに対応した反転間隔を、クロック生成部１００により生成されたクロック信号で計測する反転間隔計測部１１０と、反転間隔計測部１１０により計測された反転間隔に対応するよう、上位装置との通信速度を調整する通信速度調整部１２０とを備えることを特徴とする。
【００６２】
つまり、本実施形態のカードリーダ１は、上位装置２からのシリアル信号ライン（ＲｘＤ信号）の受信データから、カードリーダ１自身の制御部１０のクロック信号により、ボーレートに対応する値を算出する。
このように構成することで、制御部１０の温度変化等によるカードリーダ１の制御部１０のクロック信号の変動が生じても、上位装置２との間で確実にシリアル通信することができる。この結果、カードリーダ１及び上位装置２において、回路構成上、精度の高いクロック信号を発生する、外部の水晶発信子を含む回路を使用しないことが可能となる。また、外部の水晶発信子を含む回路よりも、内蔵クロックの精度が高くない安価な制御部１０を用いることも可能となる。よって、システム全体のコスト削減効果を期待できる。
【００６３】
また、カードリーダ１は、規定のボーレートで通信する必要がなく、上位装置２からのＤＭＡデータ５００に基づいてボーレートを設定し通信することが可能になる。つまり、上位装置２からのＤＭＡデータ５００に基づいて、カードリーダ１のシリアル通信のボーレートを設定可能な仕組みを実現することができる。これにより、上位装置２がＲＳ−２３２Ｃ規格等の規定のボーレートを使用していなかったり、ボーレートがコマンド送信の度に変更されることがあったりするような構成でも、確実にシリアル通信を行うことができる。
【００６４】
また、外部接続の水晶振動子は、コストが高いという問題があった。本実施形態のカードリーダ１は、外部接続の水晶振動子を使用しないため製造コストを低減することができる。
【００６５】
なお、カードリーダ１は、通常、上位装置２に内蔵されており、金銭的な価値を扱うカード状媒体３の処理を行う。よって、上位装置２とのシリアル通信において速度を調整した上で、上位装置２との処理を実行することで、カードリーダ１と上位装置２との間のデータ通信を解読されにくくすることができる。このため、結果として、カード状媒体３のカード情報のスキミングやハッキング等の可能性を減らすことができ、セキュリティを向上させられる。
【００６６】
また、本発明の実施の形態に係るカードリーダ１は、シリアル通信のコマンドをＤＭＡ（ダイレクト・メモリ・アクセス）で保存するバッファを備え、反転間隔計測部１１０は、ＤＭＡバッファ２００に保存されたＤＭＡデータ５００のビット列から特定コードに対応した反転間隔を計測することを特徴とする。
【００６７】
このように構成することで、上位装置２が１１５，２００ｂｐｓ等の高速なボーレートで送信してきた場合でも、制御部１０に負荷をかけずに高速でデータ転送ができ、確実にシリアル通信のＤＭＡデータ５００を取得できる。また、制御部１０が動作するクロックの速度に制限がなく、通信速度の調整を行うことが可能になる。また、制御部１０が直接ＤＭＡデータ５００を取得するのと比べて、ＤＭＡデータ５００をサンプリングする際の誤差が少なくなるため、より確実にクロック信号の周期を算出可能となり、高精度な速度の調整や補正が可能となる。
【００６８】
また、本発明の実施の形態に係るカードリーダ１は、特定コードが、スタートビットを含む第一の反転ビット列の長さと、その後の第二の反転ビット列の長さとが特定の比となるよう設定され、反転間隔計測部１１０は、特定の比となる反転ビットの列として第一の反転ビット列及び第二の反転ビット列を特定し、特定された第一の反転ビット列及び第二の反転ビット列のクロック信号のカウント値を算出して反転間隔を計測することを特徴とする。
このように構成することで、シリアル通信のＤＭＡデータ５００から容易に特定コードを検出でき、確実に反転間隔を計測し、通信速度を調整することができる。
【００６９】
また、本発明の実施の形態に係るカードリーダ１は、上位装置２からのコマンドを受信し、読み取り又は書き込みするカード状媒体３に対して、コマンドに対応する特定の処理を実行することを特徴とする。
このように構成することで、上位装置２からのコマンドをカードリーダ１が確実に受信して、カード状媒体３に対する特定の処理を確実に行うことができる。
【００７０】
また、本発明の実施の形態に係るカードリーダ１は、反転間隔計測部１１０が、上位装置２からコマンドを受信する度に、反転間隔を計測することを特徴とする。
このように構成することで、コマンド受信の度に速度を調整するため、前回のコマンド受信から時間が経過して制御部１０のクロック等が変動していても、確実に上位装置２からのコマンドデータ５１０を受信することが可能となる。カードリーダ１にカード状媒体３が挿入されて特定の処理が実行され、次に他のカード状媒体３が挿入されるまで、通常は、数分〜数時間、時間が経過する。このため、毎回、反転間隔を計測することで、より確実に通信速度を調整できる。
【００７１】
〔他の実施の形態〕
なお、上述の実施形態においては、カード制御システムＸにおいて、上位装置２との間の受信データにより、カードリーダ１と上位装置２との間のシリアル通信のボーレートの調整について説明した。
しかしながら、カードリーダ１は、制御部１０のクロック生成部１００のクロック信号を用いたソフトウェアタイマーを生成し、定期的なセンサ状態の監視やＬＥＤ点滅制御などの用途に使用している。このため、上位装置２からの通信速度が既に設定されている場合、調整されたボーレート設定データ３１０に基づいて、ソフトウェアタイマーの時間を補正することが可能である。
これにより、制御部１０のクロック信号の変動等にかかわらずソフトウェアタイマーの時間を補正でき、センサ状態の監視やＬＥＤ点滅制御等の動作が確実になる。
【００７２】
また、上述の実施形態においては、上位装置２からカードリーダ１へのシリアル信号ライン（ＲｘＤ信号）からのＤＭＡデータ５００の取得に、制御部１０に内蔵されたＤＭＡ部１３０の機能を用いる例について説明した。
しかしながら、例えば、クロック速度が２５ＭＨｚ程度の制御部１０を用いても、ボーレート３８，４００ｂｐｓ程度の速度であれば、このＤＭＡを使用せずに、ＰＩＯ（Programmed I/O）でＤＭＡデータ５００を取得することが十分に可能である。このため、例えば、ボーレートの上限が３８，４００ｂｐｓまでの通信仕様のカードリーダ１であれば、ＤＭＡ機能を用いずにボーレートの自動補正をしてもよい。
これにより、ＤＭＡ機能のない制御部１０を使用可能となり、コストを削減できる。
【００７３】
また、上述の実施形態においては、通信速度を調整するための反転間隔としてコマンドデータ５１０の１ビット分に対応するクロック信号のカウント値を算出して使用した。
しかしながら、このように、クロック信号のカウント値を直接用いずに、ボーレートの設定を行うことも可能である。たとえば、クロック信号のカウント値から、規定のボーレートと、この規定のボーレートからのずれを算出して、これを上位機器２との通信速度の調整に用いてもよい。
【００７４】
この場合、通信速度調整部１２０は、９，６００ｂｐｓや３８，４００ｂｐｓ、１１５，２００ｂｐｓといったＲＳ−２３２Ｃのシリアル通信の固定値のボーレートと一番近い値を選択し、これとの「ずれ」の値をオフセット値として算出する。たとえば、ＤＭＡデータ５００のサンプリングの既定のビットレート（ｂｐｓ）が３３８ｋｂｐｓで、１ビット分の反転間隔となるクロック信号のカウント値が「３」であった場合、反転間隔の時間は約８．６８μｓとなるため、ボーレートを１１５，２００ｂｐｓと算出する。通信速度調整部１２０は、主記憶部２０に選択されたボーレートとオフセット値とを保存し、これらを用いて、上位装置２との通信速度を調整する。
【００７５】
このように構成することで、上位装置２やカードリーダ１に設定されたボーレートとのずれを容易に算出できる。このため、上述のソフトウェアタイマーの設定や、他の各部のタイミング調整を行いやすくなる。
【００７６】
また、上述の実施の形態では、カード制御システムＸについて、シリアル通信の速度調整を行う例について説明した。
これに対して、上位装置２とのシリアル通信を実行する電子機器であれば、本実施形態の速度調整方法と同様に速度調整を行うことが可能である。また、ＲＳ−２３２Ｃ以外の特定コードを使用するシリアル通信にも適用することが可能である。
このように構成することで、各種電子機器のシリアル通信の調整に係る処理時間やコストを削減することができる。
【００７７】
また、上述の実施の形態では、第一の反転ビット列の長さと、その後の第二の反転ビット列の長さとが１：１になる特定コードを使用する例について記載した。しかしながら、特定コードとして、これらの長さが１：ｎ（任意倍）となるような特定コードを使用してもよい。また、特定コードとして、特定のパターンとなるようなデータを使用し、このパターンを検出するようにしてもよい。
このように構成することで、シリアル通信の信号の特性に合わせて確実な通信時間の調整が可能となる。
【００７８】
なお、上記実施の形態の構成及び動作は例であって、本発明の趣旨を逸脱しない範囲で適宜変更して実行することができることは言うまでもない。
【符号の説明】
【００７９】
１  カードリーダ
２  上位装置
３  カード状媒体
１０  制御部
２０  主記憶部
３０  補助記憶部
４０  カード読取書込部
１００  クロック生成部
１１０  反転間隔計測部
１２０  通信速度調整部
１３０  ＤＭＡ部
１４０  コマンド解析実行部
２００  ＤＭＡバッファ
２１０  コマンドデータバッファ
３１０  ボーレート設定データ
５００  ＤＭＡデータ
５１０  コマンドデータ
Ｘ  カード制御システム
【図１】
0006456649.tif 000002
【図２】
0006456649.tif 000003
【図３】
0006456649.tif 000004
【図４】
0006456649.tif 000005