(57)【要約】【課題】磁気レベルが低下した磁気カードの誤読を防止する。【解決手段】ピーク検出回路２０５は、磁気ヘッド２０１を介して磁気カード２０２上の磁気ストライプの記録信号のピーク点を検出する。磁気レベル検出回路２０６は、記録信号のピーク点の検出時に、そのピーク点に対応する磁気ストライプの磁気出力レベルを磁気ヘッド２０１を介して検出する。磁気ヘッド制御部１０７は、磁気ストライプのリード時に、記録信号のピーク点及び磁気出力レベルの各情報に基づいて、磁気出力レベルの低下を検出することにより、誤読の可能性のある磁気レベルの変化を監視する。【選択図】図２
2011216137.tif 000002
【特許請求の範囲】
【請求項１】
磁気カードに記録されている周波数変調された磁気ストライプを磁気ヘッドにて読み取る磁気カードリーダ装置であって、
前記磁気ヘッドを介して前記磁気ストライプの記録信号のピーク点を検出するピーク検出回路と、
前記ピーク点の検出時に、該ピーク点に対応する前記磁気ストライプの磁気出力レベルを前記磁気ヘッドを介して検出する磁気レベル検出回路と、
を備え、
前記磁気ストライプのリード時に、前記ピーク点及び前記磁気出力レベルの各情報に基づいて、前記磁気出力レベルの低下を検出することにより、誤読の可能性のある磁気レベルの変化を監視する、
ことを特徴とする磁気カードリーダ装置。
【請求項２】
前記磁気ストライプのリード時に、前記ピーク点及び前記磁気出力レベルの各情報に基づいて、隣接する記録信号のピーク点の磁気出力レベルの変化の度合いを算出することにより、誤読の可能性のある磁気レベルの変化を監視する、
ことを特徴とする請求項１に記載の磁気カードリーダ装置。
【請求項３】
前記磁気ストライプのリード時に、前記ピーク点及び前記磁気出力レベルの各情報に基づいて、隣接する記録信号のピーク点の磁気出力レベルの変化率を算出し、該変化率が所定の閾値以上となる回数を検出することにより、誤読の可能性のある磁気レベルの変化を監視する、
ことを特徴とする請求項２に記載の磁気カードリーダ装置。
【請求項４】
前記誤読の可能性のある磁気レベルの変化が検出されたときに、前記磁気ストライプのリード状態を変更し、該各リード状態毎の前記磁気ストライプのリード結果を比較することにより、前記磁気ストライプのリードの正否を判断する、
ことを特徴とする請求項１に記載の磁気カードリーダ装置。
【請求項５】
磁気カードに記録されている周波数変調された磁気ストライプを磁気ヘッドにて読み取る磁気カード読取り方法において、
前記磁気ヘッドを介して前記磁気ストライプの記録信号のピーク点を検出し、
前記ピーク点の検出時に、該ピーク点に対応する前記磁気ストライプの磁気出力レベルを前記磁気ヘッドを介して検出し、
前記磁気ストライプのリード時に、前記ピーク点及び前記磁気出力レベルの各情報に基づいて、前記磁気出力レベルの低下を検出することにより、誤読の可能性のある磁気レベルの変化を監視する、
ことを特徴とする磁気カード誤読防止制御方法。
【請求項６】
前記磁気ストライプのリード時に、前記ピーク点及び前記磁気出力レベルの各情報に基づいて、隣接する記録信号のピーク点の磁気出力レベルの変化の度合いを算出することにより、誤読の可能性のある磁気レベルの変化を監視する、
ことを特徴とする請求項５に記載の磁気カード誤読防止制御方法。
【請求項７】
前記磁気ストライプのリード時に、前記ピーク点及び前記磁気出力レベルの各情報に基づいて、隣接する記録信号のピーク点の磁気出力レベルの変化率を算出し、該変化率が所定の閾値以上となる回数を検出することにより、誤読の可能性のある磁気レベルの変化を監視する、
ことを特徴とする請求項２に記載の磁気カード誤読防止制御方法。
【請求項８】
前記誤読の可能性のある磁気レベルの変化が検出されたときに、前記磁気ストライプのリード状態を変更し、該各リード状態毎の前記磁気ストライプのリード結果を比較することにより、前記磁気ストライプのリードの正否を判断する、
ことを特徴とする請求項５に記載の磁気カード誤読防止制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、磁気カードの誤読を防止するための技術に関する。
【背景技術】
【０００２】
ＦＭ（周波数変調）方式で記録された磁気カードが磁石との接触やカードの傷などにより磁気レベルが低下することで、磁気カード上の磁気ストライプ（ＭＳ）のリード時に、論理値０又は１のデコードを行った結果が誤って、水平／垂直パリティで検出できないデータ化けにより、誤読に至るケースがある。
【０００３】
ＦＭ方式は、図１４に示されるように、ＦＭ記録信号のピーク点の間隔（時間）により論理値０又は１のデコードを行う方式である。一定周期で記録されているクロックビットの間に磁気変化が発生する場合が「１」に、発生しない場合が「０」にデコードされる。ＦＭ方式は、磁気カードの標準的な記録方式である。
【０００４】
磁気カードの誤読を防止するための方式としては、以下の手法が一般に採用されている。まず、デコードされたデータ列から開始符号（ＳＴＸ）を見つけ、開始符号以降を１文字ビット長に切り出してデータとする。図１５に示されるように、１文字ビット長毎に切り出したデータを垂直パリティでチェックし、読み出したデータの各ビット位置を水平パリティでチェックする。これにより、データの読み取り誤りを検出することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２７２９４７号公報
【特許文献２】特開０４−１５５６６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、ＦＭ方式の磁気カード読取り技術においては、第１の問題点として、磁石との接触やカードの傷などにより磁気レベルが低下した場合に、ＦＭ記録信号のピーク点をずれた位置で検出することがある。
【０００７】
例えば、図１６に示されるように、点線で示される正常なＦＭ記録信号に対して、磁気低下した信号が実線で示されるような状態になる場合がある。論理値０及び１のデコードはピーク点の間隔を利用して行っている。このため、検出のタイミングによりデコード結果が「データ化けのデコード結果」として示されるように、「正常なデコード結果」に対して入れ替わってしまうことがあるという問題点を有していた。
【０００８】
更に、図１７に示されるように、同一行の水平パリティのビットの論理値０及び１が偶数個入れ替わった場合に、垂直パリティ／水平パリティが偶然に一致してしまって正常な読取りデータとして扱われ、誤読となってしまう可能性があるという問題点を有していた。
【０００９】
更に、ＦＭ方式の磁気カード読取り技術においては、第２の問題点として、図１８に示されるように、ピーク点検出において磁気レベルの閾値を設けた場合、磁気レベルが低下するとピーク点検出ができなくなって、誤読が発生するという問題点を有していた。
【００１０】
本発明の課題は、磁気レベルが低下した磁気カードの誤読を防止することにある。
【課題を解決するための手段】
【００１１】
態様の一例は、磁気カードに記録されている周波数変調された磁気ストライプを磁気ヘッドにて読み取る磁気カードリーダ装置として実現され、以下の構成を有する。
ピーク検出回路は、磁気ヘッドを介して磁気ストライプのピーク点を検出する。
【００１２】
磁気レベル検出回路は、ピーク点の検出時に、そのピーク点に対応する磁気ストライプの磁気出力レベルを磁気ヘッドを介して検出する。
そして、磁気ストライプのリード時に、ピーク点及び磁気出力レベルの各情報に基づいて、磁気出力レベルの低下を検出することにより、誤読の可能性のある磁気レベルの変化を監視する。
【発明の効果】
【００１３】
本発明によれば、磁気レベルをチェックして磁気間隔が仕様にあった位置にずれた場合でも、異常を検出することが可能となる。
本発明によれば、磁気レベルの検出に閾値を設けていないため、磁気レベル低下時もピーク点を取得することができ、磁気レベルの変化量を監視／リトライ／コンペアすることで磁気レベル低下による誤読を防止しつつ読み取り性能を上げることが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本実施形態のシステム構成図である。
【図２】本実施形態の詳細構成図である。
【図３】本実施形態の基本動作の説明図である。
【図４】本実施形態の全体処理を示すフローチャート（その１）である。
【図５】本実施形態の全体処理を示すフローチャート（その２）である。
【図６】前準備処理を示すフローチャートである。
【図７】ＭＳリード処理を示すフローチャートである。
【図８】ピーク検出割込み処理を示すフローチャートである。
【図９】ＭＳリード処理の説明図である。
【図１０】１ｂｉｔ読出し処理を示すフローチャートである。
【図１１】磁気出力レベルチェック処理を示すフローチャートである。
【図１２】磁気出力レベルチェック処理の説明図である。
【図１３】本実施形態で使用されるデータの説明図である。
【図１４】ＦＭ方式の説明図である。
【図１５】従来のデータ誤り検出方式の説明図である。
【図１６】磁気低下によるデータ化けの問題点の説明図である。
【図１７】データ化けによる誤り検出の誤動作の説明図である。
【図１８】ピーク点検出の閾値がある場合の問題点の説明図である。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
図１は、本実施形態のシステム構成図である。
図１において、まず、制御部１０１は、カードリーダ、ライタユニット１０２と例えばＵＳＢ（ユニバーサル・シリアル・バス）インタフェースによって通信し、同ユニットに対して各種動作指示を行う。
【００１６】
カードリーダ、ライタユニット１０２は、通信制御部１０３、モニタ／システム管理部１０４、カードリーダライタ−メカ制御部１０５、メカ部１０６、磁気ヘッド制御部１０７、及び磁気ヘッド周辺回路部１０８を備える。
【００１７】
通信制御部１０３は、制御部１０１との通信を処理する。
モニタ／システム管理部１０４は、制御部１０１からのコマンド解析及びレスポンス応答、カードリーダライタ−メカ制御部１０５及び磁気ヘッド制御部１０７への動作指示を行う。
【００１８】
カードリーダライタ−メカ制御部１０５は、磁気カードの搬送部分のメカ部１０６を制御する。メカ部１０６は、モータ、マグネット、センサ等からなる。
磁気ヘッド制御部１０７は、磁気ヘッド周辺回路部１０８と通信を行って、磁気ストライプ（ＭＳ）のリード及びライト動作を制御する。
【００１９】
図２は、図１のシステム構成に基づく本実施形態の更に詳細な構成図である。
図２において、図１の場合と同じ部分には、同じ番号を付してある。
まず、磁気カード２０２は、搬送路２０３上を、図１のカードリーダライタ−メカ制御部１０５による制御のもとで駆動するモータで回転する搬送ローラ２０４によって搬送される。磁気カード２０２に貼付された磁気ストライプ（ＭＳ）が、磁気ヘッド２０１によって読み取られる。
【００２０】
その結果、磁気ヘッド２０１に接続されているピーク検出回路２０５で磁気ストライプのピークが検出されると、ピーク検出回路２０５から磁気ヘッド制御部１０７内の割込み処理部２０８に対して、割込みが発生する（Ｓ１割込み）。
【００２１】
磁気ヘッド制御部１０７内の割込み処理部２０８でピーク検出の割込みが発生すると、タイマ２０７のカウンタ値が読み出されるとともに、磁気レベル検出回路２０６の現在の磁気レベル（ＡＤ変換結果の電圧値）が読み出され（Ｓ２リード）、メモリ２１０の記憶領域として確保されているピーク検出バッファ２１１に格納されるとともに、磁気レベル検出回路２０６から、現在の磁気レベル（ＡＤ変換結果の電圧値）が、メモリ２１０の記憶領域として確保されている磁気出力レベルバッファ２１２に格納される（Ｓ２ライト）。
【００２２】
続いて、磁気ヘッド制御部１０７内のＭＳリード処理部２０９が、メモリ２１０上のピーク検出バッファ２１１及び磁気出力レベルバッファ２１２の記憶値から、論理値０／１及び磁気情報への変換を行う（Ｓ３リード）。そして、ＭＳリード処理部２０９は、算出した論理値０／１を、メモリ２１０の記憶領域として確保されるリードデータ２１４に格納すし、また、ＭＳリード処理部２０９は、磁気情報の垂直パリティ、水平パリティをチェックし、処理結果を、メモリ２１０の記憶領域として確保されるリード結果２１３に格納する（Ｓ３ライト）。
【００２３】
以上の構成を有する本実施形態の基本動作について、図３を用いて説明する。
本実施形態では、図２のピーク検出回路２０５及び磁気レベル検出回路２０６によって、図３（ａ）に示されるように、ＦＭ記録信号のピーク点の磁気レベル（電圧値）を取得する機能が実現される。そして、磁気レベルの状態が監視され、リトライ及び複数回の磁気ストライプのリード結果のコンペアを行うことで、誤読を防止する。
【００２４】
次に、本実施形態では、図３（ｂ）に示されるように、磁気レベルの０（中心電圧）からの各ピーク点の磁気レベル（電圧値）の変化量の絶対値が算出される。
更に、本実施形態では、図３（ｃ）に示されるように、「前回の磁気レベルとの差」（隣接するピーク点の変化量）の「今回の磁気レベル」に対する百分率が絶対値で算出される。
【００２５】
ここで、隣接するピーク点の変化量の百分率の絶対値が大きな値になる箇所は、磁気レベルに乱れが生じている箇所であり誤読の可能性がある。そこで例えば、隣接するピーク点の変化量の百分率の絶対値が一定量（例えば７０％）を超える箇所が２箇所以上ある場合は、データ化けによる誤読の可能性があると判定される。ここで、２箇所以上とするのは、次の理由による。すなわち、磁気レベルの乱れ箇所が１箇所だけだと垂直パリティ／水平パリティによってデータ化けを検出することができる。これに対して、磁気レベルの乱れ箇所が２箇所以上あると、「発明が解決しようとする課題」の項で説明したように、垂直パリティ／水平パリティが偶然に一致してしまって正常な読取りデータとして扱われ、誤読となってしまう可能性がある。従って、磁気レベルの乱れ箇所が２箇所以上検出された場合には、データ化けによる誤読の可能性があると判定される。
【００２６】
この場合には、磁気カード２０２の読出し方向が逆にされて再度読出し（リトライ）が行われる。そして、正方向から読み出された結果と逆方向から読み出した結果が比較（コンペア）され、一致する場合のみ磁気ストライプのリードデータは正常であると判定される。これにより、磁気レベル低下時であっても誤読が防止される。
【００２７】
図４及び図５は、上記基本動作を実現するための本実施形態の全体処理を示す動作フローチャートである。このフローチャートは、図２の磁気ヘッド制御部１０７内のＣＰＵが例えばメモリ２１０に記憶された制御プログラムを実行する動作として実現される。
【００２８】
以下の各フローチャートの説明において使用されるデータの一覧を、図１３に示す。これらのデータの各記憶領域は、図２のメモリ２１０上に確保される。図１３中のサイズは、バイト数を示す。
【００２９】
図４において、まず、［ｄｉｒ指定］データの値が正方向にされる。このデータは、図１３に示されるように、磁気カード２０２を読み出しする方向の指定を行うためのデータである。また、［隣接ｂｉｔ差大カウンタ］データの値が０にリセットされる。このデータは、図１３に示されるように、磁気カード２０２の隣り合うピークの磁気出力レベルの変化率が大きい部分の回数をカウントする記憶領域である。更に、［リトライ回数］データの値が０にリセットされる。このデータは、図１３に示されるように、磁気ストライプ（ＭＳ）リード処理のリトライを実行した回数を示す記憶領域である（以上、図４のステップＳ４０１）。
【００３０】
次に、前準備処理が実行される（図４のステップＳ４０２）。この処理の詳細は、図６のフローチャートで示される。即ち、図６のステップＳ６０１においてまず、［読出カウンタ］データの値が０にリセットされる。このデータは、図１３に示されるように、ピーク検出バッファ２１１と磁気出力レベルバッファ２１２（共に図２参照）における次に読み出す位置を指すカウンタ領域である。
【００３１】
また、［中心電圧］データ及び［中心電圧ｔｍｐ］データの各値が１２７にセットされる。図１３に示されるように、前者は、磁気出力レベルバッファ２１２から読み出した電圧値の現在の中心電圧（０Ｖ）を示す領域である。後者は、中心電圧を算出する際の作業領域である。図１の磁気レベル検出回路２０６におけるＡＤ変換値が２５６階調のため、両方の初期値共に１２７としている。
【００３２】
更に、［前回ＡＤ変換値］データの値が０にリセットされる。このデータは、図１３に示されるように、磁気出力レベルのチェックをする際に前回使用した磁気出力レベル（ＡＤ変換値）を格納する領域である。最初は無いので０とされる。
【００３３】
図４のフローチャートに戻って、ステップＳ４０２に続いて、ＭＳリード処理が実行される（図４のステップＳ４０３）。この処理では、図２の磁気カード２０２の磁気ストライプ（ＭＳ）のリード処理が実行される。この場合に、前述した図３に示される基本動作に基づく磁気レベルの乱れを考慮した誤読防止の処理が実行される。このＭＳリード処理の詳細については、後述する。
【００３４】
上記ＭＳリード処理の結果、正常にリードが完了したか否かが判定される（図４のステップＳ４０４）。
正常にリードが完了せずステップＳ４０４の判定がＮＯならば、磁気カード２０２の読み取り方向が反対向きにされる。即ち、［ｄｉｒ指定］データの値は正方向であるか否かが判定され（図４のステップＳ４０５）、その値の逆方向が［ｄｉｒ指定］データにセットされる（図４のステップＳ４０６又はＳ４０７）。
【００３５】
その後、［リトライ回数］データの値が＋１される（図４のステップＳ４０８）。
そして、リトライを４回実行したか否か、即ち［リトライ回数］データの値が４を超えたか否かが判定される（図４のステップＳ４０９）。
【００３６】
リトライがまだ４回実行されておらずステップＳ４０９の判定がＮＯならば、ステップＳ４０２の処理に戻り、磁気カード２０２の逆方向に対して再度、磁気ストライプのリード処理が実行される。
【００３７】
リトライが４回実行されステップＳ４０９の判定がＹＥＳならば、磁気ストライプが正常に読みとれなかったとして、異常終了する（図４のステップＳ４１０）。
ステップＳ４０４において、正常にリードが完了したとしてその判定がＹＥＳならば、［隣接ｂｉｔ差大カウンタ］データの値が２以上であるか否かが判定される（ステップＳ４１１）。このデータ値が２以上であるということは、図３（ｃ）で説明したように、隣接するピーク点の変化量の百分率の絶対値が一定量を超える箇所が２箇所以上あり、データ化けによる誤読の可能性があるということを示している。
【００３８】
従って、ステップＳ４１１の判定がＮＯならば、磁気ストライプが正常に読みとれたとして、正常終了する（図４のステップＳ４１２）。
一方、ステップＳ４１１の判定がＹＥＳならば、以下のステップＳ４１３以降の処理で、磁気カード２０２の逆方向に対して再度磁気ストライプのリード処理が実行される。そして、そのリード結果が現在の方向のリード結果と比較（コンペア）され、両者が一致する場合のみ、磁気ストライプのリードデータは正常であると判定される。
【００３９】
即ちまず、現在のリードデータ２１４（［リードデータ］データ）の値が保存用の記憶領域［リードデータ（保存用）］（図１３参照）にコピーされる（図４のステップＳ４１３）。
【００４０】
次に、逆方向のための［リトライ回数］データの値が０にリセットされる（図４のステップＳ４１４）。
更に、［ｄｉｒ指定］データの値は正方向であるか否かが判定され（図４のステップＳ４１５）、その値の逆方向が［ｄｉｒ指定］データにセットされる（図４のステップＳ４ｄ１６又はＳ４１７）。
【００４１】
続いて図５のフローチャートにおいて、図４のステップＳ４０２と同様の前準備処理が実行され（図５のステップＳ４１８）、更に図４のステップＳ４０３と同様のＭＳリード処理が実行される（図５のステップＳ４１９）。
【００４２】
その結果、磁気カード２０２の逆方向について、上記ＭＳリード処理の結果、正常にリードが完了したか否かが判定される（図４のステップＳ４２０）。
正常にリードが完了せずステップＳ４０４の判定がＮＯならば、［リトライ回数］データの値が＋１される（図４のステップＳ４２４）。
【００４３】
そして、リトライを４回実行したか否か、即ち［リトライ回数］データの値が４を超えたか否かが判定される（図４のステップＳ４２５）。
リトライがまだ４回実行されておらずステップＳ４２５の判定がＮＯならば、ステップＳ４１８の処理に戻り、磁気カード２０２の逆方向に対して再度、磁気ストライプのリード処理が実行される。
【００４４】
リトライが４回実行されステップＳ４２５の判定がＹＥＳならば、磁気ストライプが正常に読みとれなかったとして、異常終了する（図４のステップＳ４２６）。
ステップＳ４２０において、磁気カード２０２の逆方向について正常にリードが完了したとしてその判定がＹＥＳになると、次の処理が実行される。即ち、現在の逆方向のリードデータ２１４（［リードデータ］データ）の値と、正方向の［リードデータ（保存用）］データの値とが比較される（図４のステップＳ４２１）。
【００４５】
その結果、両者が一致しステップＳ４２１の判定がＹＥＳならば、磁気ストライプは正常に読みとれたとして正常終了する（図４のステップＳ４２３）。
一方、両者が一致しステップＳ４２１の判定がＮＯならば、リトライ回数が４を超えるまで逆方向のＭＳリード処理がリトライされる（図４のステップＳ４２２→Ｓ４２４）。
【００４６】
以上説明した図４及び図５のフローチャートの処理によって、磁気レベルの乱れを考慮した誤読防止のＭＳリード処理（図４のステップＳ４０３又は図５のステップＳ４１９）を実行しながら、磁気カード２０２に対する適切なリトライ処理が実現される。
【００４７】
図７は、図４のステップＳ４０３又は図５のステップＳ４１９のＭＳリード処理の詳細を示すフローチャートである。
まず、［dir指定］データの値が示す方向に磁気カード２０２を搬送して１枚分の磁気データ（ピーク検出時のマイクロ秒単位の時間、磁気出力レベルの電圧値）を取得する（図７のステップＳ７０１）。
【００４８】
この搬送期間中、図２において、磁気ヘッド２０１に接続されているピーク検出回路２０５で磁気ストライプのピークが検出される毎に、ピーク検出回路２０５から磁気ヘッド制御部１０７内の割込み処理部２０８に対して、割込みが発生する（図２のＳ１割込み）。この割込みが発生する毎に、図８のフローチャートで示される割込み処理が実行される。
【００４９】
即ちまず、図２のメモリ２１０上の磁気出力レベルバッファ２１２の空きが確認される（図８のステップＳ８０１）。
磁気出力レベルバッファ２１２が空いておりステップＳ８０１の判定がＹＥＳならば、図２において、磁気レベル検出回路２０６から、現在の磁気レベル（ＡＤ変換結果の電圧値）が、メモリ２１０上の磁気出力レベルバッファ２１２に格納される（図８のステップＳ８０２）。
【００５０】
ステップＳ８０２の後、又は磁気出力レベルバッファ２１２が空いておらずステップＳ８０１の判定がＮＯとなった後に、図２において、タイマ２０７のカウンタ値が、メモリ２１０上のピーク検出バッファ２１１に格納される（図８のステップ８０３）。
【００５１】
その後、ピーク検出による割込み処理を終了する。
以上の割込み処理に基づいて、図７のステップＳ７０１の処理により、例えば図９（ａ）→（ｂ）に示されるようにして、磁気カード２０２の１枚分の検出ピークデータと磁気出力レベルデータが得られる。
【００５２】
続いて、１ｂｉｔ読出し処理が実行される（図７のステップＳ７０２）。この処理の詳細については後述するが、図９（ｂ）→（ｃ）として示されるように、取得したピーク検出バッファ２１１の差分値に基づいて論理値０／１を検出し、［１ｂｉｔデータバッファ］データ領域（図１３参照）に格納する。その際に、図９に示されるように、磁気出力レベルバッファ２１２の電圧値から隣接する磁気出力レベルの変化率が大きい箇所の回数（［隣接ｂｉｔ差大カウンタ］データ）をカウントする。ステップＳ７０２の１ｂｉｔ読出し処理は、ステップＳ７０１でピーク検出バッファ２１１と磁気出力レベルバッファ２１２に得られた全ての検出ピークデータ及び磁気出力レベルデータ（図９（ｂ）参照）に対して繰り返し実行される。
【００５３】
次に、［１ｂｉｔデータバッファ］から、開始符号のＳＴＸ（ＦＦｈ）を検索する。このＳＴＸ発見で、ＳＴＸ符号がメモリ２１０上のリードデータ２１４（図１３参照）へ格納される（図７のステップＳ７０３）。
【００５４】
次に、ＳＴＸが発見されたか否かが判定される（図７のステップＳ７０４）。
ＳＴＸが発見されずステップＳ７０４の判定がＮＯならば、磁気ストライプから正常な読出しが行えなかったとして異常終了する（ステップＳ７０５）。
【００５５】
ＳＴＸが発見されステップＳ７０４の判定がＹＥＳならば、図９（ｃ）→（ｄ）として例示されるように、［1bitデータバッファ］から８ビット単位にデータを取り出して垂直パリティチェックし、正常ならばリードデータ２１４へ格納する（図７のステップＳ７０６）。この処理は、終わり符号のＥＴＸ(ＦＦｈ)が発見されるまで、繰り返し実行される。
【００５６】
次に、垂直パリティが正常であったか否かが判定される（図７のステップＳ７０７）。
垂直パリティが正常ではなくステップＳ７０７の判定がＮＯならば、垂直パリティ異常が検出され磁気ストライプから正常な読出しが行えなかったとして異常終了する（図７のステップＳ７０８）。
【００５７】
垂直パリティが正常でステップＳ７０７の判定がＹＥＳならば、終了符号であるＥＴＸが発見されたか否かが判定される（図７のステップＳ７０９）。
ＥＴＸが発見されずステップＳ７０９の判定がＮＯならば、磁気ストライプから正常な読出しが行えなかったとして異常終了する（図７のステップＳ７１０）。
【００５８】
ＥＴＸが発見されステップＳ７０９の判定がＹＥＳならば、［1bitデータバッファ］から８ビット単位にデータを取り出して水平パリティチェックをする（図７のステップＳ７１１）。
【００５９】
次に、水平パリティが正常であるか否かが判定される（図７のステップＳ７１２）。
水平パリティが正常ではなくステップＳ７１２の判定がＮＯならば、水平パリティ異常が検出され磁気ストライプから正常な読出しが行えなかったとして異常終了する（図７のステップＳ７１３）。
水平パリティが正常でステップＳ７１２の判定がＹＥＳならば、磁気ストライプから正常な読出しが行えたとして正常終了する（図７のステップＳ７１４）。
【００６０】
図１０は、図７のステップＳ７０２の１ｂｉｔ読出し処理の詳細を示すフローチャートである。図９に例示される（ｂ）→（ｃ）の処理が実行される。
まず、ピーク検出バッファ２１１（図２、図１３参照）中の[読出カウンタ]データが指すアドレスから、１個分の検出ピークデータが、[今回時刻]データ（図１３参照）に読み出される（図１０のステップＳ１００１）。[読出カウンタ]データは、図１３に示されるように、ピーク検出バッファ２１１と磁気出力レベルバッファ２１２における次に読み出す位置を指すカウンタ領域である。
【００６１】
次に、[読出カウンタ]データが３よりも大きいか否かが判定される（図１０のステップＳ１００２）。
[読出カウンタ]データが３を超えておらずステップＳ１００２の判定がＮＯならば、更に、[読出カウンタ]データが０であるか否か我判定される（図１０のステップＳ１０１１）。
【００６２】
[読出カウンタ]データが０でステップＳ１００２の判定がＹＥＳならば、磁気出力レベルバッファ２１２から１個分の磁気出力レベルデータが［前回ＡＤ変換値］データに読み出される（図１０のステップＳ１０１２）。［前回ＡＤ変換値］データは、図１３に示されるように、磁気出力レベルのチェックをする際に前回使用した磁気出力レベル（ＡＤ変換値）を格納する領域であり、[読出カウンタ]データの値が０である初期状態においては、このステップＳ１０１２で、最初の磁気出力レベルデータが初期値としてセットされる。その後、後述するステップＳ１０１３に移行する。
【００６３】
[読出カウンタ]データが１，２，又は３でステップＳ１００２の判定がＮＯならば、論理値０／１の検出は行われずに、後述する磁気出力レベルのチェック処理のみが実行される（図１０のステップＳ１０１０）。その後、後述するステップＳ１０１３に移行する。
【００６４】
ステップＳ１００２の判定において、[読出カウンタ]データが３を超えておりその判定がＹＥＳならば、まず、後述する磁気出力レベルのチェック処理が実行される（図１０のステップＳ１００３）。
【００６５】
その後、[今回時刻]データの値から[前回時刻]データの値を差し引いて得られる値が、［間隔］データ（図１３参照）に格納される（図１０のステップＳ１００４）。[前回時刻]データは、図１３に示されるように、磁気出力レベルのチェックをする際に前回使用した磁気出力レベル（ＡＤ変換値）を格納する領域であり、後述するステップＳ１０１３によって更新される。
【００６６】
次に、［間隔］データの値が［閾値１］データの値よりも大きいか否かが判定される（図１０のステップＳ１００５）。この［閾値１］データは、ピーク検出バッファのピークの間隔を０／１に変換する閾値を格納する領域である。
【００６７】
［間隔］データの値が［閾値１］データの値よりも大きくステップＳ１００５の判定がＹＥＳなら、読出しデータを“０”として［１ｂｉｔデータバッファ］データ領域に格納する（図１０のステップＳ１００６）。図１４で説明したように、［間隔］データの値である隣接ピーク間隔が、［閾値１］データの値よりも大きく、クロックビット間隔に近い値をとれば、“０”が認識される。
【００６８】
［間隔］データの値が［閾値１］データの値よりも大きくはなくステップＳ１００５の判定がＹＥＳなら、読出しデータを“１”として［１ｂｉｔデータバッファ］データ領域に格納する（図１０のステップＳ１００７）。図１４で説明したように、［間隔］データの値である隣接ピーク間隔が、［閾値１］データの値以下で、クロックビット間隔の半分程度の値をとれば、“１”が認識される。
【００６９】
この場合、図１４に示されるように、次の判定ピークまでの間にもう一つピークがあるため、これを読み飛ばす必要がある。
そこで、まず、［読出カウンタ］データの値が＋１される（図１０のステップＳ１００８）。その後に、ピーク検出バッファ２１１中の[読出カウンタ]データが指すアドレスから、１個分の検出ピークデータが、[今回時刻]データに読み出される（図１０のステップＳ１００９）。そして、後述する磁気出力レベルのチェック処理のみが実行されて（図１０のステップＳ１０１０）、[今回時刻]データに読み出された次のピークが読み飛ばされて、すぐに[前回時刻]データにセットされる（図１０のステップＳ１０１３）。
【００７０】
ステップＳ１００６又はステップＳ１００７〜Ｓ１０１０の処理の後、[今回時刻]データにセットされていた検出ピークデータが、[前回時刻]データにセットされる（図１０のステップＳ１０１３）。
【００７１】
最後に、［読出カウンタ］データの値が＋１されて（図１０のステップＳ１０１４）、１ｂｉｔ分の読出し処理を終了する。
以上の図１０のフローチャートの処理により、論理値０／１の検出処理が実現される。
【００７２】
図１１は、図１０のステップＳ１００３又はＳ１０１０にて実行される磁気出力レベルのチェック処理の詳細を示すフローチャートである。この処理は、前述した図３（ｂ）→（ｃ）の機能を実現する。
【００７３】
まず、磁気出力レベルバッファ２１２中の［読出カウンタ］データの値が示すアドレスから１個分が、[今回ＡＤ変換値]データに読み出される（図１１のステップＳ１１０１）。[今回ＡＤ変換値]データは、図１３に示されるように、磁気出力レベルのチェックをする際の今回対象となる磁気出力レベル（ＡＤ変換値）を格納する領域である。
【００７４】
次に、[中心電圧]データの値が算出される。まず、[中心電圧ｔｍｐ]と[今回ＡＤ変換値]の変化量にローパスフィルタをかけて[中心電圧ｔｍｐ]が算出される。更に、[中心電圧ｔｍｐ]と[中心電圧]の変化量にローパスフィルタをかけて[中心電圧]が算出される（以上、図１１のステップＳ１１０２）。より具体的には、「[今回ＡＤ変換値]−[中心電圧ｔｍｐ]」を１／８した値を[中心電圧ｔｍｐ]に加算して得られる値が、新たな[中心電圧ｔｍｐ]とされる。次に、「[中心電圧]−[中心電圧ｔｍｐ]」を１／８した値を[中心電圧]に加算して得られる値が、新たな[中心電圧]とされる。このような一種の移動平均が２重に計算されることにより、ＡＤ変換値に追従してなめらかに変化する[中心電圧]の値を算出することができる。今、ＦＭ記録信号は、例えば図１２（ａ）として示されるように、０Ｖを中心に変化する波形となる。これに対してＡＤ変換が実行された場合、図１２（ｂ）に示されるように、２５６階調のデジタルデータとなる。このため取得されたＡＤ変換値に基づいて、図１２（ｂ）に示される中心電圧（０Ｖ）が算出される。
【００７５】
次に、[前回ＡＤ変換値]データの値から[今回ＡＤ変換値]データの値への[変化量(絶対値)]が、次式により算出される（図１１のステップＳ１１０３）。
・[前回電圧]=[前回ＡＤ変換値]-[中心電圧]
・[今回電圧]=[今回ＡＤ変換値]-[中心電圧]
・[変化量]=[今回電圧]+[前回電圧]
・[変化量]の絶対値[変化量(絶対値)]が求められる
例えば、図１２（ｃ）のＡとして示されるように、各ＡＤ変換値が、中心電圧を０Ｖとした電圧値に変換される。次に例えば、図１２（ｃ）のＢとして示されるように、隣り合う電圧値を加算することで変化量が算出され、変化量が絶対値にされる。図１２（ｃ）のＡで示される今回ＡＤ変換値と前回ＡＤ変換値は、符号が異なる。そして、これら隣接値の振幅の差が大きい場合、両者を加算した結果の絶対値Ｂは大きな値となる。今例えば、図１２（ｃ）の１２０１として示される位置でみた場合、電圧値Ａにおける［今回電圧］（横軸値が「３」の位置）のピーク値の振幅は＋１０である。また、［前回電圧］（横軸値が「２」の位置）のピーク値の振幅は−３０である。この結果、符号が異なる両者を加算した場合、加算結果である［変化量］は−２０となって、その絶対値である［変化量（絶対値）］は、図１２（ｃ）のＢ（横軸値が「３」の位置）として示されるように、大きな値２０となる。一方、例えば、図１２（ｃ）の１２０２として示される位置でみた場合、電圧値Ａにおける［今回電圧］（横軸値が「７」の位置）のピーク値の振幅は＋２５である。また、［前回電圧］（横軸値が「６」の位置）のピーク値の振幅は−３０である。従って、符号が異なる両者を加算した場合、加算結果である［変化量］は−５となって、その絶対値である［変化量（絶対値）］は、図１２（ｃ）のＢ（横軸値が「７」の位置）として示されるように、小さな値５となる。このようにして、ステップＳ１１０３の計算により、ピーク値の磁気出力レベルが急に変化した箇所を大きな値で表せるようになる。
【００７６】
次に、図１２（ｃ）のＡで示される[今回電圧]データの値が絶対値[今回電圧（絶対値）]にされる（図１１のステップＳ１１０４）。例えば、図１２（ｄ）のＣとして示される如くである。
【００７７】
次に、次式により、[変化率(絶対値)]データの値が算出される（図１１のステップＳ１１０５）。そして、この値が百分率に換算される。
・[変化率(絶対値)]=[変化量(絶対値)]÷[今回電圧（絶対値）]
・[変化率(絶対値)]（百分率）=[変化率(絶対値)]×１００
例えば、図１２（ｄ）において、Ｂは、図１２（ｃ）と同じ[変化量(絶対値)]である。また前述したように、Ｃは、[今回電圧（絶対値）]である。この結果、上述の計算式により、[変化率(絶対値)]（百分率）が、例えばＤとして示されるように算出される。今例えば、図１２（ｄ）の１２０３として示される位置（横軸値が「３」の位置）でみた場合、Ｂで示される[変化量(絶対値)]の値は２０であり、Ｃで示される[今回電圧（絶対値）]の値は１０である。この結果、[変化率(絶対値)]（百分率）は、２０÷１０×１００＝２００％となる。一方、図１２（ｄ）の１２０４として示される位置（横軸値が「５」の位置）でみた場合、Ｂで示される[変化量(絶対値)]の値は１５と大きいが、Ｃで示される[今回電圧（絶対値）]の値も２５と大きい。このため、[変化率(絶対値)]（百分率）は、１５÷２５×１００＝６０％となって、それほど大きい数値にはならない。すなわち、図１２（ｄ）の１２０３として例示される箇所のように、ピーク値の磁気出力レベルが急に変化した箇所であって、かつ、今回電圧の振幅が小さくなった箇所のみが、磁気レベルに乱れが生じている箇所であって誤読の可能性がある箇所として検出されることになる。図１２（ｄ）の１２０４として例示される箇所のように、ピーク値の磁気出力レベルが急に変化した箇所であっても、図１２（ｃ）に示されるように、今回電圧の振幅が大きくなった箇所については、磁気レベルの乱れから復帰したような正常な箇所であるということになる。
【００７８】
そして、[変化率(絶対値)]データの値が［閾値２］データの値（例えば「７０％」）以上であるか否かが判定される（図１１のステップＳ１１０６）。［閾値２］データは、図１３に示されるように、隣り合う磁気出力レベルの変化率が大きいことを判定するための閾値を格納する領域である。
【００７９】
[変化率(絶対値)]データの値が［閾値２］データの値以上でステップＳ１１０６の判定がＹＥＳならば、[隣接ｂｉｔ差大カウンタ]データの値が＋１される（図１１のステップＳ１１０７）。[隣接ｂｉｔ差大カウンタ]データは、図１３に示されるように、磁気カードの隣り合うピークの磁気出力レベルの変化率が大きい部分の回数をカウントする領域である。例えば、図１２（ｄ）のＥとして例示される [変化率(絶対値)]データの絶対値が閾値２に対応するスライス値以上となる回数が、[隣接ｂｉｔ差大カウンタ]データにカウントされる。
【００８０】
最後に、[今回ＡＤ変換値]データにセットされていたデータが、[前回ＡＤ変換値]データにセットされて（図１１のステップＳ１１０８）、磁気出力レベルチェック処理を終了する。
【００８１】
以上の図１１のフローチャートの処理により、磁気出力レベルのチェックにより、隣接するピーク点の変化量の百分率の絶対値が大きな値になる箇所を、磁気レベルに乱れが生じている箇所であって誤読の可能性がある箇所として検出することができる。そして、その状態を図４のステップＳ４１１にて判定し、リトライ処理することが可能となる。
【００８２】
従来の磁気間隔のみのデコードでは、部分的な磁気レベル低下により磁気間隔がずれてもそれを知る手段は無く、磁気間隔が仕様にあった位置にずれた場合は正常扱いでデコードしていた。
【００８３】
これに対して本実施形態によれば、磁気レベルをチェックして磁気間隔が仕様にあった位置にずれた場合でも、異常を検出できる。
この場合、磁気レベルの検出に閾値を設けていないため、磁気レベル低下時もピーク点を取得することができ、磁気レベルの変化量を監視／リトライ／コンペアすることで磁気レベル低下による誤読を防止しつつ読み取り性能を上げることができる。
【００８４】
更に、全体的に磁気レベルが低下して変化量が少ない場合でも磁気レベルに閾値がなくピーク点検出を行うことができるため読み取りが可能となる。
【符号の説明】
【００８５】
１０１  制御部
１０２  カードリーダ、ライタユニット
１０３  通信制御部
１０４  モニタ／システム管理部
１０５  カードリーダライタ−メカ制御部
１０６  メカ部
１０７  磁気ヘッド制御部
１０８  磁気ヘッド周辺回路部
２０１  磁気ヘッド
２０２  磁気カード
２０３  搬送路
２０４  搬送ローラ
２０５  ピーク検出回路
２０６  磁気レベル検出回路
２０７  タイマ
２０８  割込み処理部
２０９  ＭＳリード処理部
２１０  メモリ
２１１  ピーク検出バッファ
２１２  磁気出力レベルバッファ
２１３  リード結果
２１４  リードデータ
【図１】
2011216137.tif 000003
【図２】
2011216137.tif 000004
【図３】
2011216137.tif 000005
【図４】
2011216137.tif 000006
【図５】
2011216137.tif 000007
【図６】
2011216137.tif 000008
【図７】
2011216137.tif 000009
【図８】
2011216137.tif 000010
【図１０】
2011216137.tif 000011
【図１１】
2011216137.tif 000012
【図１４】
2011216137.tif 000013
【図１５】
2011216137.tif 000014
【図１６】
2011216137.tif 000015
【図１７】
2011216137.tif 000016
【図１８】
2011216137.tif 000017
【図９】
2011216137.tif 000018
【図１２】
2011216137.tif 000019
【図１３】
2011216137.tif 000020