説明

磁気カードリーダ装置及び磁気カード誤読防止制御方法

【課題】磁気レベルが低下した磁気カードの誤読を防止する。
【解決手段】ピーク検出回路205は、磁気ヘッド201を介して磁気カード202上の磁気ストライプの記録信号のピーク点を検出する。磁気レベル検出回路206は、記録信号のピーク点の検出時に、そのピーク点に対応する磁気ストライプの磁気出力レベルを磁気ヘッド201を介して検出する。磁気ヘッド制御部107は、磁気ストライプのリード時に、記録信号のピーク点及び磁気出力レベルの各情報に基づいて、磁気出力レベルの低下を検出することにより、誤読の可能性のある磁気レベルの変化を監視する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、磁気カードの誤読を防止するための技術に関する。
【背景技術】
【0002】
FM(周波数変調)方式で記録された磁気カードが磁石との接触やカードの傷などにより磁気レベルが低下することで、磁気カード上の磁気ストライプ(MS)のリード時に、論理値0又は1のデコードを行った結果が誤って、水平/垂直パリティで検出できないデータ化けにより、誤読に至るケースがある。
【0003】
FM方式は、図14に示されるように、FM記録信号のピーク点の間隔(時間)により論理値0又は1のデコードを行う方式である。一定周期で記録されているクロックビットの間に磁気変化が発生する場合が「1」に、発生しない場合が「0」にデコードされる。FM方式は、磁気カードの標準的な記録方式である。
【0004】
磁気カードの誤読を防止するための方式としては、以下の手法が一般に採用されている。まず、デコードされたデータ列から開始符号(STX)を見つけ、開始符号以降を1文字ビット長に切り出してデータとする。図15に示されるように、1文字ビット長毎に切り出したデータを垂直パリティでチェックし、読み出したデータの各ビット位置を水平パリティでチェックする。これにより、データの読み取り誤りを検出することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−272947号公報
【特許文献2】特開04−155667号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、FM方式の磁気カード読取り技術においては、第1の問題点として、磁石との接触やカードの傷などにより磁気レベルが低下した場合に、FM記録信号のピーク点をずれた位置で検出することがある。
【0007】
例えば、図16に示されるように、点線で示される正常なFM記録信号に対して、磁気低下した信号が実線で示されるような状態になる場合がある。論理値0及び1のデコードはピーク点の間隔を利用して行っている。このため、検出のタイミングによりデコード結果が「データ化けのデコード結果」として示されるように、「正常なデコード結果」に対して入れ替わってしまうことがあるという問題点を有していた。
【0008】
更に、図17に示されるように、同一行の水平パリティのビットの論理値0及び1が偶数個入れ替わった場合に、垂直パリティ/水平パリティが偶然に一致してしまって正常な読取りデータとして扱われ、誤読となってしまう可能性があるという問題点を有していた。
【0009】
更に、FM方式の磁気カード読取り技術においては、第2の問題点として、図18に示されるように、ピーク点検出において磁気レベルの閾値を設けた場合、磁気レベルが低下するとピーク点検出ができなくなって、誤読が発生するという問題点を有していた。
【0010】
本発明の課題は、磁気レベルが低下した磁気カードの誤読を防止することにある。
【課題を解決するための手段】
【0011】
態様の一例は、磁気カードに記録されている周波数変調された磁気ストライプを磁気ヘッドにて読み取る磁気カードリーダ装置として実現され、以下の構成を有する。
ピーク検出回路は、磁気ヘッドを介して磁気ストライプのピーク点を検出する。
【0012】
磁気レベル検出回路は、ピーク点の検出時に、そのピーク点に対応する磁気ストライプの磁気出力レベルを磁気ヘッドを介して検出する。
そして、磁気ストライプのリード時に、ピーク点及び磁気出力レベルの各情報に基づいて、磁気出力レベルの低下を検出することにより、誤読の可能性のある磁気レベルの変化を監視する。
【発明の効果】
【0013】
本発明によれば、磁気レベルをチェックして磁気間隔が仕様にあった位置にずれた場合でも、異常を検出することが可能となる。
本発明によれば、磁気レベルの検出に閾値を設けていないため、磁気レベル低下時もピーク点を取得することができ、磁気レベルの変化量を監視/リトライ/コンペアすることで磁気レベル低下による誤読を防止しつつ読み取り性能を上げることが可能となる。
【図面の簡単な説明】
【0014】
【図1】本実施形態のシステム構成図である。
【図2】本実施形態の詳細構成図である。
【図3】本実施形態の基本動作の説明図である。
【図4】本実施形態の全体処理を示すフローチャート(その1)である。
【図5】本実施形態の全体処理を示すフローチャート(その2)である。
【図6】前準備処理を示すフローチャートである。
【図7】MSリード処理を示すフローチャートである。
【図8】ピーク検出割込み処理を示すフローチャートである。
【図9】MSリード処理の説明図である。
【図10】1bit読出し処理を示すフローチャートである。
【図11】磁気出力レベルチェック処理を示すフローチャートである。
【図12】磁気出力レベルチェック処理の説明図である。
【図13】本実施形態で使用されるデータの説明図である。
【図14】FM方式の説明図である。
【図15】従来のデータ誤り検出方式の説明図である。
【図16】磁気低下によるデータ化けの問題点の説明図である。
【図17】データ化けによる誤り検出の誤動作の説明図である。
【図18】ピーク点検出の閾値がある場合の問題点の説明図である。
【発明を実施するための形態】
【0015】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
図1は、本実施形態のシステム構成図である。
図1において、まず、制御部101は、カードリーダ、ライタユニット102と例えばUSB(ユニバーサル・シリアル・バス)インタフェースによって通信し、同ユニットに対して各種動作指示を行う。
【0016】
カードリーダ、ライタユニット102は、通信制御部103、モニタ/システム管理部104、カードリーダライタ−メカ制御部105、メカ部106、磁気ヘッド制御部107、及び磁気ヘッド周辺回路部108を備える。
【0017】
通信制御部103は、制御部101との通信を処理する。
モニタ/システム管理部104は、制御部101からのコマンド解析及びレスポンス応答、カードリーダライタ−メカ制御部105及び磁気ヘッド制御部107への動作指示を行う。
【0018】
カードリーダライタ−メカ制御部105は、磁気カードの搬送部分のメカ部106を制御する。メカ部106は、モータ、マグネット、センサ等からなる。
磁気ヘッド制御部107は、磁気ヘッド周辺回路部108と通信を行って、磁気ストライプ(MS)のリード及びライト動作を制御する。
【0019】
図2は、図1のシステム構成に基づく本実施形態の更に詳細な構成図である。
図2において、図1の場合と同じ部分には、同じ番号を付してある。
まず、磁気カード202は、搬送路203上を、図1のカードリーダライタ−メカ制御部105による制御のもとで駆動するモータで回転する搬送ローラ204によって搬送される。磁気カード202に貼付された磁気ストライプ(MS)が、磁気ヘッド201によって読み取られる。
【0020】
その結果、磁気ヘッド201に接続されているピーク検出回路205で磁気ストライプのピークが検出されると、ピーク検出回路205から磁気ヘッド制御部107内の割込み処理部208に対して、割込みが発生する(S1割込み)。
【0021】
磁気ヘッド制御部107内の割込み処理部208でピーク検出の割込みが発生すると、タイマ207のカウンタ値が読み出されるとともに、磁気レベル検出回路206の現在の磁気レベル(AD変換結果の電圧値)が読み出され(S2リード)、メモリ210の記憶領域として確保されているピーク検出バッファ211に格納されるとともに、磁気レベル検出回路206から、現在の磁気レベル(AD変換結果の電圧値)が、メモリ210の記憶領域として確保されている磁気出力レベルバッファ212に格納される(S2ライト)。
【0022】
続いて、磁気ヘッド制御部107内のMSリード処理部209が、メモリ210上のピーク検出バッファ211及び磁気出力レベルバッファ212の記憶値から、論理値0/1及び磁気情報への変換を行う(S3リード)。そして、MSリード処理部209は、算出した論理値0/1を、メモリ210の記憶領域として確保されるリードデータ214に格納すし、また、MSリード処理部209は、磁気情報の垂直パリティ、水平パリティをチェックし、処理結果を、メモリ210の記憶領域として確保されるリード結果213に格納する(S3ライト)。
【0023】
以上の構成を有する本実施形態の基本動作について、図3を用いて説明する。
本実施形態では、図2のピーク検出回路205及び磁気レベル検出回路206によって、図3(a)に示されるように、FM記録信号のピーク点の磁気レベル(電圧値)を取得する機能が実現される。そして、磁気レベルの状態が監視され、リトライ及び複数回の磁気ストライプのリード結果のコンペアを行うことで、誤読を防止する。
【0024】
次に、本実施形態では、図3(b)に示されるように、磁気レベルの0(中心電圧)からの各ピーク点の磁気レベル(電圧値)の変化量の絶対値が算出される。
更に、本実施形態では、図3(c)に示されるように、「前回の磁気レベルとの差」(隣接するピーク点の変化量)の「今回の磁気レベル」に対する百分率が絶対値で算出される。
【0025】
ここで、隣接するピーク点の変化量の百分率の絶対値が大きな値になる箇所は、磁気レベルに乱れが生じている箇所であり誤読の可能性がある。そこで例えば、隣接するピーク点の変化量の百分率の絶対値が一定量(例えば70%)を超える箇所が2箇所以上ある場合は、データ化けによる誤読の可能性があると判定される。ここで、2箇所以上とするのは、次の理由による。すなわち、磁気レベルの乱れ箇所が1箇所だけだと垂直パリティ/水平パリティによってデータ化けを検出することができる。これに対して、磁気レベルの乱れ箇所が2箇所以上あると、「発明が解決しようとする課題」の項で説明したように、垂直パリティ/水平パリティが偶然に一致してしまって正常な読取りデータとして扱われ、誤読となってしまう可能性がある。従って、磁気レベルの乱れ箇所が2箇所以上検出された場合には、データ化けによる誤読の可能性があると判定される。
【0026】
この場合には、磁気カード202の読出し方向が逆にされて再度読出し(リトライ)が行われる。そして、正方向から読み出された結果と逆方向から読み出した結果が比較(コンペア)され、一致する場合のみ磁気ストライプのリードデータは正常であると判定される。これにより、磁気レベル低下時であっても誤読が防止される。
【0027】
図4及び図5は、上記基本動作を実現するための本実施形態の全体処理を示す動作フローチャートである。このフローチャートは、図2の磁気ヘッド制御部107内のCPUが例えばメモリ210に記憶された制御プログラムを実行する動作として実現される。
【0028】
以下の各フローチャートの説明において使用されるデータの一覧を、図13に示す。これらのデータの各記憶領域は、図2のメモリ210上に確保される。図13中のサイズは、バイト数を示す。
【0029】
図4において、まず、[dir指定]データの値が正方向にされる。このデータは、図13に示されるように、磁気カード202を読み出しする方向の指定を行うためのデータである。また、[隣接bit差大カウンタ]データの値が0にリセットされる。このデータは、図13に示されるように、磁気カード202の隣り合うピークの磁気出力レベルの変化率が大きい部分の回数をカウントする記憶領域である。更に、[リトライ回数]データの値が0にリセットされる。このデータは、図13に示されるように、磁気ストライプ(MS)リード処理のリトライを実行した回数を示す記憶領域である(以上、図4のステップS401)。
【0030】
次に、前準備処理が実行される(図4のステップS402)。この処理の詳細は、図6のフローチャートで示される。即ち、図6のステップS601においてまず、[読出カウンタ]データの値が0にリセットされる。このデータは、図13に示されるように、ピーク検出バッファ211と磁気出力レベルバッファ212(共に図2参照)における次に読み出す位置を指すカウンタ領域である。
【0031】
また、[中心電圧]データ及び[中心電圧tmp]データの各値が127にセットされる。図13に示されるように、前者は、磁気出力レベルバッファ212から読み出した電圧値の現在の中心電圧(0V)を示す領域である。後者は、中心電圧を算出する際の作業領域である。図1の磁気レベル検出回路206におけるAD変換値が256階調のため、両方の初期値共に127としている。
【0032】
更に、[前回AD変換値]データの値が0にリセットされる。このデータは、図13に示されるように、磁気出力レベルのチェックをする際に前回使用した磁気出力レベル(AD変換値)を格納する領域である。最初は無いので0とされる。
【0033】
図4のフローチャートに戻って、ステップS402に続いて、MSリード処理が実行される(図4のステップS403)。この処理では、図2の磁気カード202の磁気ストライプ(MS)のリード処理が実行される。この場合に、前述した図3に示される基本動作に基づく磁気レベルの乱れを考慮した誤読防止の処理が実行される。このMSリード処理の詳細については、後述する。
【0034】
上記MSリード処理の結果、正常にリードが完了したか否かが判定される(図4のステップS404)。
正常にリードが完了せずステップS404の判定がNOならば、磁気カード202の読み取り方向が反対向きにされる。即ち、[dir指定]データの値は正方向であるか否かが判定され(図4のステップS405)、その値の逆方向が[dir指定]データにセットされる(図4のステップS406又はS407)。
【0035】
その後、[リトライ回数]データの値が+1される(図4のステップS408)。
そして、リトライを4回実行したか否か、即ち[リトライ回数]データの値が4を超えたか否かが判定される(図4のステップS409)。
【0036】
リトライがまだ4回実行されておらずステップS409の判定がNOならば、ステップS402の処理に戻り、磁気カード202の逆方向に対して再度、磁気ストライプのリード処理が実行される。
【0037】
リトライが4回実行されステップS409の判定がYESならば、磁気ストライプが正常に読みとれなかったとして、異常終了する(図4のステップS410)。
ステップS404において、正常にリードが完了したとしてその判定がYESならば、[隣接bit差大カウンタ]データの値が2以上であるか否かが判定される(ステップS411)。このデータ値が2以上であるということは、図3(c)で説明したように、隣接するピーク点の変化量の百分率の絶対値が一定量を超える箇所が2箇所以上あり、データ化けによる誤読の可能性があるということを示している。
【0038】
従って、ステップS411の判定がNOならば、磁気ストライプが正常に読みとれたとして、正常終了する(図4のステップS412)。
一方、ステップS411の判定がYESならば、以下のステップS413以降の処理で、磁気カード202の逆方向に対して再度磁気ストライプのリード処理が実行される。そして、そのリード結果が現在の方向のリード結果と比較(コンペア)され、両者が一致する場合のみ、磁気ストライプのリードデータは正常であると判定される。
【0039】
即ちまず、現在のリードデータ214([リードデータ]データ)の値が保存用の記憶領域[リードデータ(保存用)](図13参照)にコピーされる(図4のステップS413)。
【0040】
次に、逆方向のための[リトライ回数]データの値が0にリセットされる(図4のステップS414)。
更に、[dir指定]データの値は正方向であるか否かが判定され(図4のステップS415)、その値の逆方向が[dir指定]データにセットされる(図4のステップS4d16又はS417)。
【0041】
続いて図5のフローチャートにおいて、図4のステップS402と同様の前準備処理が実行され(図5のステップS418)、更に図4のステップS403と同様のMSリード処理が実行される(図5のステップS419)。
【0042】
その結果、磁気カード202の逆方向について、上記MSリード処理の結果、正常にリードが完了したか否かが判定される(図4のステップS420)。
正常にリードが完了せずステップS404の判定がNOならば、[リトライ回数]データの値が+1される(図4のステップS424)。
【0043】
そして、リトライを4回実行したか否か、即ち[リトライ回数]データの値が4を超えたか否かが判定される(図4のステップS425)。
リトライがまだ4回実行されておらずステップS425の判定がNOならば、ステップS418の処理に戻り、磁気カード202の逆方向に対して再度、磁気ストライプのリード処理が実行される。
【0044】
リトライが4回実行されステップS425の判定がYESならば、磁気ストライプが正常に読みとれなかったとして、異常終了する(図4のステップS426)。
ステップS420において、磁気カード202の逆方向について正常にリードが完了したとしてその判定がYESになると、次の処理が実行される。即ち、現在の逆方向のリードデータ214([リードデータ]データ)の値と、正方向の[リードデータ(保存用)]データの値とが比較される(図4のステップS421)。
【0045】
その結果、両者が一致しステップS421の判定がYESならば、磁気ストライプは正常に読みとれたとして正常終了する(図4のステップS423)。
一方、両者が一致しステップS421の判定がNOならば、リトライ回数が4を超えるまで逆方向のMSリード処理がリトライされる(図4のステップS422→S424)。
【0046】
以上説明した図4及び図5のフローチャートの処理によって、磁気レベルの乱れを考慮した誤読防止のMSリード処理(図4のステップS403又は図5のステップS419)を実行しながら、磁気カード202に対する適切なリトライ処理が実現される。
【0047】
図7は、図4のステップS403又は図5のステップS419のMSリード処理の詳細を示すフローチャートである。
まず、[dir指定]データの値が示す方向に磁気カード202を搬送して1枚分の磁気データ(ピーク検出時のマイクロ秒単位の時間、磁気出力レベルの電圧値)を取得する(図7のステップS701)。
【0048】
この搬送期間中、図2において、磁気ヘッド201に接続されているピーク検出回路205で磁気ストライプのピークが検出される毎に、ピーク検出回路205から磁気ヘッド制御部107内の割込み処理部208に対して、割込みが発生する(図2のS1割込み)。この割込みが発生する毎に、図8のフローチャートで示される割込み処理が実行される。
【0049】
即ちまず、図2のメモリ210上の磁気出力レベルバッファ212の空きが確認される(図8のステップS801)。
磁気出力レベルバッファ212が空いておりステップS801の判定がYESならば、図2において、磁気レベル検出回路206から、現在の磁気レベル(AD変換結果の電圧値)が、メモリ210上の磁気出力レベルバッファ212に格納される(図8のステップS802)。
【0050】
ステップS802の後、又は磁気出力レベルバッファ212が空いておらずステップS801の判定がNOとなった後に、図2において、タイマ207のカウンタ値が、メモリ210上のピーク検出バッファ211に格納される(図8のステップ803)。
【0051】
その後、ピーク検出による割込み処理を終了する。
以上の割込み処理に基づいて、図7のステップS701の処理により、例えば図9(a)→(b)に示されるようにして、磁気カード202の1枚分の検出ピークデータと磁気出力レベルデータが得られる。
【0052】
続いて、1bit読出し処理が実行される(図7のステップS702)。この処理の詳細については後述するが、図9(b)→(c)として示されるように、取得したピーク検出バッファ211の差分値に基づいて論理値0/1を検出し、[1bitデータバッファ]データ領域(図13参照)に格納する。その際に、図9に示されるように、磁気出力レベルバッファ212の電圧値から隣接する磁気出力レベルの変化率が大きい箇所の回数([隣接bit差大カウンタ]データ)をカウントする。ステップS702の1bit読出し処理は、ステップS701でピーク検出バッファ211と磁気出力レベルバッファ212に得られた全ての検出ピークデータ及び磁気出力レベルデータ(図9(b)参照)に対して繰り返し実行される。
【0053】
次に、[1bitデータバッファ]から、開始符号のSTX(FFh)を検索する。このSTX発見で、STX符号がメモリ210上のリードデータ214(図13参照)へ格納される(図7のステップS703)。
【0054】
次に、STXが発見されたか否かが判定される(図7のステップS704)。
STXが発見されずステップS704の判定がNOならば、磁気ストライプから正常な読出しが行えなかったとして異常終了する(ステップS705)。
【0055】
STXが発見されステップS704の判定がYESならば、図9(c)→(d)として例示されるように、[1bitデータバッファ]から8ビット単位にデータを取り出して垂直パリティチェックし、正常ならばリードデータ214へ格納する(図7のステップS706)。この処理は、終わり符号のETX(FFh)が発見されるまで、繰り返し実行される。
【0056】
次に、垂直パリティが正常であったか否かが判定される(図7のステップS707)。
垂直パリティが正常ではなくステップS707の判定がNOならば、垂直パリティ異常が検出され磁気ストライプから正常な読出しが行えなかったとして異常終了する(図7のステップS708)。
【0057】
垂直パリティが正常でステップS707の判定がYESならば、終了符号であるETXが発見されたか否かが判定される(図7のステップS709)。
ETXが発見されずステップS709の判定がNOならば、磁気ストライプから正常な読出しが行えなかったとして異常終了する(図7のステップS710)。
【0058】
ETXが発見されステップS709の判定がYESならば、[1bitデータバッファ]から8ビット単位にデータを取り出して水平パリティチェックをする(図7のステップS711)。
【0059】
次に、水平パリティが正常であるか否かが判定される(図7のステップS712)。
水平パリティが正常ではなくステップS712の判定がNOならば、水平パリティ異常が検出され磁気ストライプから正常な読出しが行えなかったとして異常終了する(図7のステップS713)。
水平パリティが正常でステップS712の判定がYESならば、磁気ストライプから正常な読出しが行えたとして正常終了する(図7のステップS714)。
【0060】
図10は、図7のステップS702の1bit読出し処理の詳細を示すフローチャートである。図9に例示される(b)→(c)の処理が実行される。
まず、ピーク検出バッファ211(図2、図13参照)中の[読出カウンタ]データが指すアドレスから、1個分の検出ピークデータが、[今回時刻]データ(図13参照)に読み出される(図10のステップS1001)。[読出カウンタ]データは、図13に示されるように、ピーク検出バッファ211と磁気出力レベルバッファ212における次に読み出す位置を指すカウンタ領域である。
【0061】
次に、[読出カウンタ]データが3よりも大きいか否かが判定される(図10のステップS1002)。
[読出カウンタ]データが3を超えておらずステップS1002の判定がNOならば、更に、[読出カウンタ]データが0であるか否か我判定される(図10のステップS1011)。
【0062】
[読出カウンタ]データが0でステップS1002の判定がYESならば、磁気出力レベルバッファ212から1個分の磁気出力レベルデータが[前回AD変換値]データに読み出される(図10のステップS1012)。[前回AD変換値]データは、図13に示されるように、磁気出力レベルのチェックをする際に前回使用した磁気出力レベル(AD変換値)を格納する領域であり、[読出カウンタ]データの値が0である初期状態においては、このステップS1012で、最初の磁気出力レベルデータが初期値としてセットされる。その後、後述するステップS1013に移行する。
【0063】
[読出カウンタ]データが1,2,又は3でステップS1002の判定がNOならば、論理値0/1の検出は行われずに、後述する磁気出力レベルのチェック処理のみが実行される(図10のステップS1010)。その後、後述するステップS1013に移行する。
【0064】
ステップS1002の判定において、[読出カウンタ]データが3を超えておりその判定がYESならば、まず、後述する磁気出力レベルのチェック処理が実行される(図10のステップS1003)。
【0065】
その後、[今回時刻]データの値から[前回時刻]データの値を差し引いて得られる値が、[間隔]データ(図13参照)に格納される(図10のステップS1004)。[前回時刻]データは、図13に示されるように、磁気出力レベルのチェックをする際に前回使用した磁気出力レベル(AD変換値)を格納する領域であり、後述するステップS1013によって更新される。
【0066】
次に、[間隔]データの値が[閾値1]データの値よりも大きいか否かが判定される(図10のステップS1005)。この[閾値1]データは、ピーク検出バッファのピークの間隔を0/1に変換する閾値を格納する領域である。
【0067】
[間隔]データの値が[閾値1]データの値よりも大きくステップS1005の判定がYESなら、読出しデータを“0”として[1bitデータバッファ]データ領域に格納する(図10のステップS1006)。図14で説明したように、[間隔]データの値である隣接ピーク間隔が、[閾値1]データの値よりも大きく、クロックビット間隔に近い値をとれば、“0”が認識される。
【0068】
[間隔]データの値が[閾値1]データの値よりも大きくはなくステップS1005の判定がYESなら、読出しデータを“1”として[1bitデータバッファ]データ領域に格納する(図10のステップS1007)。図14で説明したように、[間隔]データの値である隣接ピーク間隔が、[閾値1]データの値以下で、クロックビット間隔の半分程度の値をとれば、“1”が認識される。
【0069】
この場合、図14に示されるように、次の判定ピークまでの間にもう一つピークがあるため、これを読み飛ばす必要がある。
そこで、まず、[読出カウンタ]データの値が+1される(図10のステップS1008)。その後に、ピーク検出バッファ211中の[読出カウンタ]データが指すアドレスから、1個分の検出ピークデータが、[今回時刻]データに読み出される(図10のステップS1009)。そして、後述する磁気出力レベルのチェック処理のみが実行されて(図10のステップS1010)、[今回時刻]データに読み出された次のピークが読み飛ばされて、すぐに[前回時刻]データにセットされる(図10のステップS1013)。
【0070】
ステップS1006又はステップS1007〜S1010の処理の後、[今回時刻]データにセットされていた検出ピークデータが、[前回時刻]データにセットされる(図10のステップS1013)。
【0071】
最後に、[読出カウンタ]データの値が+1されて(図10のステップS1014)、1bit分の読出し処理を終了する。
以上の図10のフローチャートの処理により、論理値0/1の検出処理が実現される。
【0072】
図11は、図10のステップS1003又はS1010にて実行される磁気出力レベルのチェック処理の詳細を示すフローチャートである。この処理は、前述した図3(b)→(c)の機能を実現する。
【0073】
まず、磁気出力レベルバッファ212中の[読出カウンタ]データの値が示すアドレスから1個分が、[今回AD変換値]データに読み出される(図11のステップS1101)。[今回AD変換値]データは、図13に示されるように、磁気出力レベルのチェックをする際の今回対象となる磁気出力レベル(AD変換値)を格納する領域である。
【0074】
次に、[中心電圧]データの値が算出される。まず、[中心電圧tmp]と[今回AD変換値]の変化量にローパスフィルタをかけて[中心電圧tmp]が算出される。更に、[中心電圧tmp]と[中心電圧]の変化量にローパスフィルタをかけて[中心電圧]が算出される(以上、図11のステップS1102)。より具体的には、「[今回AD変換値]−[中心電圧tmp]」を1/8した値を[中心電圧tmp]に加算して得られる値が、新たな[中心電圧tmp]とされる。次に、「[中心電圧]−[中心電圧tmp]」を1/8した値を[中心電圧]に加算して得られる値が、新たな[中心電圧]とされる。このような一種の移動平均が2重に計算されることにより、AD変換値に追従してなめらかに変化する[中心電圧]の値を算出することができる。今、FM記録信号は、例えば図12(a)として示されるように、0Vを中心に変化する波形となる。これに対してAD変換が実行された場合、図12(b)に示されるように、256階調のデジタルデータとなる。このため取得されたAD変換値に基づいて、図12(b)に示される中心電圧(0V)が算出される。
【0075】
次に、[前回AD変換値]データの値から[今回AD変換値]データの値への[変化量(絶対値)]が、次式により算出される(図11のステップS1103)。

・[前回電圧]=[前回AD変換値]-[中心電圧]
・[今回電圧]=[今回AD変換値]-[中心電圧]
・[変化量]=[今回電圧]+[前回電圧]
・[変化量]の絶対値[変化量(絶対値)]が求められる

例えば、図12(c)のAとして示されるように、各AD変換値が、中心電圧を0Vとした電圧値に変換される。次に例えば、図12(c)のBとして示されるように、隣り合う電圧値を加算することで変化量が算出され、変化量が絶対値にされる。図12(c)のAで示される今回AD変換値と前回AD変換値は、符号が異なる。そして、これら隣接値の振幅の差が大きい場合、両者を加算した結果の絶対値Bは大きな値となる。今例えば、図12(c)の1201として示される位置でみた場合、電圧値Aにおける[今回電圧](横軸値が「3」の位置)のピーク値の振幅は+10である。また、[前回電圧](横軸値が「2」の位置)のピーク値の振幅は−30である。この結果、符号が異なる両者を加算した場合、加算結果である[変化量]は−20となって、その絶対値である[変化量(絶対値)]は、図12(c)のB(横軸値が「3」の位置)として示されるように、大きな値20となる。一方、例えば、図12(c)の1202として示される位置でみた場合、電圧値Aにおける[今回電圧](横軸値が「7」の位置)のピーク値の振幅は+25である。また、[前回電圧](横軸値が「6」の位置)のピーク値の振幅は−30である。従って、符号が異なる両者を加算した場合、加算結果である[変化量]は−5となって、その絶対値である[変化量(絶対値)]は、図12(c)のB(横軸値が「7」の位置)として示されるように、小さな値5となる。このようにして、ステップS1103の計算により、ピーク値の磁気出力レベルが急に変化した箇所を大きな値で表せるようになる。
【0076】
次に、図12(c)のAで示される[今回電圧]データの値が絶対値[今回電圧(絶対値)]にされる(図11のステップS1104)。例えば、図12(d)のCとして示される如くである。
【0077】
次に、次式により、[変化率(絶対値)]データの値が算出される(図11のステップS1105)。そして、この値が百分率に換算される。

・[変化率(絶対値)]=[変化量(絶対値)]÷[今回電圧(絶対値)]
・[変化率(絶対値)](百分率)=[変化率(絶対値)]×100

例えば、図12(d)において、Bは、図12(c)と同じ[変化量(絶対値)]である。また前述したように、Cは、[今回電圧(絶対値)]である。この結果、上述の計算式により、[変化率(絶対値)](百分率)が、例えばDとして示されるように算出される。今例えば、図12(d)の1203として示される位置(横軸値が「3」の位置)でみた場合、Bで示される[変化量(絶対値)]の値は20であり、Cで示される[今回電圧(絶対値)]の値は10である。この結果、[変化率(絶対値)](百分率)は、20÷10×100=200%となる。一方、図12(d)の1204として示される位置(横軸値が「5」の位置)でみた場合、Bで示される[変化量(絶対値)]の値は15と大きいが、Cで示される[今回電圧(絶対値)]の値も25と大きい。このため、[変化率(絶対値)](百分率)は、15÷25×100=60%となって、それほど大きい数値にはならない。すなわち、図12(d)の1203として例示される箇所のように、ピーク値の磁気出力レベルが急に変化した箇所であって、かつ、今回電圧の振幅が小さくなった箇所のみが、磁気レベルに乱れが生じている箇所であって誤読の可能性がある箇所として検出されることになる。図12(d)の1204として例示される箇所のように、ピーク値の磁気出力レベルが急に変化した箇所であっても、図12(c)に示されるように、今回電圧の振幅が大きくなった箇所については、磁気レベルの乱れから復帰したような正常な箇所であるということになる。
【0078】
そして、[変化率(絶対値)]データの値が[閾値2]データの値(例えば「70%」)以上であるか否かが判定される(図11のステップS1106)。[閾値2]データは、図13に示されるように、隣り合う磁気出力レベルの変化率が大きいことを判定するための閾値を格納する領域である。
【0079】
[変化率(絶対値)]データの値が[閾値2]データの値以上でステップS1106の判定がYESならば、[隣接bit差大カウンタ]データの値が+1される(図11のステップS1107)。[隣接bit差大カウンタ]データは、図13に示されるように、磁気カードの隣り合うピークの磁気出力レベルの変化率が大きい部分の回数をカウントする領域である。例えば、図12(d)のEとして例示される [変化率(絶対値)]データの絶対値が閾値2に対応するスライス値以上となる回数が、[隣接bit差大カウンタ]データにカウントされる。
【0080】
最後に、[今回AD変換値]データにセットされていたデータが、[前回AD変換値]データにセットされて(図11のステップS1108)、磁気出力レベルチェック処理を終了する。
【0081】
以上の図11のフローチャートの処理により、磁気出力レベルのチェックにより、隣接するピーク点の変化量の百分率の絶対値が大きな値になる箇所を、磁気レベルに乱れが生じている箇所であって誤読の可能性がある箇所として検出することができる。そして、その状態を図4のステップS411にて判定し、リトライ処理することが可能となる。
【0082】
従来の磁気間隔のみのデコードでは、部分的な磁気レベル低下により磁気間隔がずれてもそれを知る手段は無く、磁気間隔が仕様にあった位置にずれた場合は正常扱いでデコードしていた。
【0083】
これに対して本実施形態によれば、磁気レベルをチェックして磁気間隔が仕様にあった位置にずれた場合でも、異常を検出できる。
この場合、磁気レベルの検出に閾値を設けていないため、磁気レベル低下時もピーク点を取得することができ、磁気レベルの変化量を監視/リトライ/コンペアすることで磁気レベル低下による誤読を防止しつつ読み取り性能を上げることができる。
【0084】
更に、全体的に磁気レベルが低下して変化量が少ない場合でも磁気レベルに閾値がなくピーク点検出を行うことができるため読み取りが可能となる。
【符号の説明】
【0085】
101 制御部
102 カードリーダ、ライタユニット
103 通信制御部
104 モニタ/システム管理部
105 カードリーダライタ−メカ制御部
106 メカ部
107 磁気ヘッド制御部
108 磁気ヘッド周辺回路部
201 磁気ヘッド
202 磁気カード
203 搬送路
204 搬送ローラ
205 ピーク検出回路
206 磁気レベル検出回路
207 タイマ
208 割込み処理部
209 MSリード処理部
210 メモリ
211 ピーク検出バッファ
212 磁気出力レベルバッファ
213 リード結果
214 リードデータ

【特許請求の範囲】
【請求項1】
磁気カードに記録されている周波数変調された磁気ストライプを磁気ヘッドにて読み取る磁気カードリーダ装置であって、
前記磁気ヘッドを介して前記磁気ストライプの記録信号のピーク点を検出するピーク検出回路と、
前記ピーク点の検出時に、該ピーク点に対応する前記磁気ストライプの磁気出力レベルを前記磁気ヘッドを介して検出する磁気レベル検出回路と、
を備え、
前記磁気ストライプのリード時に、前記ピーク点及び前記磁気出力レベルの各情報に基づいて、前記磁気出力レベルの低下を検出することにより、誤読の可能性のある磁気レベルの変化を監視する、
ことを特徴とする磁気カードリーダ装置。
【請求項2】
前記磁気ストライプのリード時に、前記ピーク点及び前記磁気出力レベルの各情報に基づいて、隣接する記録信号のピーク点の磁気出力レベルの変化の度合いを算出することにより、誤読の可能性のある磁気レベルの変化を監視する、
ことを特徴とする請求項1に記載の磁気カードリーダ装置。
【請求項3】
前記磁気ストライプのリード時に、前記ピーク点及び前記磁気出力レベルの各情報に基づいて、隣接する記録信号のピーク点の磁気出力レベルの変化率を算出し、該変化率が所定の閾値以上となる回数を検出することにより、誤読の可能性のある磁気レベルの変化を監視する、
ことを特徴とする請求項2に記載の磁気カードリーダ装置。
【請求項4】
前記誤読の可能性のある磁気レベルの変化が検出されたときに、前記磁気ストライプのリード状態を変更し、該各リード状態毎の前記磁気ストライプのリード結果を比較することにより、前記磁気ストライプのリードの正否を判断する、
ことを特徴とする請求項1に記載の磁気カードリーダ装置。
【請求項5】
磁気カードに記録されている周波数変調された磁気ストライプを磁気ヘッドにて読み取る磁気カード読取り方法において、
前記磁気ヘッドを介して前記磁気ストライプの記録信号のピーク点を検出し、
前記ピーク点の検出時に、該ピーク点に対応する前記磁気ストライプの磁気出力レベルを前記磁気ヘッドを介して検出し、
前記磁気ストライプのリード時に、前記ピーク点及び前記磁気出力レベルの各情報に基づいて、前記磁気出力レベルの低下を検出することにより、誤読の可能性のある磁気レベルの変化を監視する、
ことを特徴とする磁気カード誤読防止制御方法。
【請求項6】
前記磁気ストライプのリード時に、前記ピーク点及び前記磁気出力レベルの各情報に基づいて、隣接する記録信号のピーク点の磁気出力レベルの変化の度合いを算出することにより、誤読の可能性のある磁気レベルの変化を監視する、
ことを特徴とする請求項5に記載の磁気カード誤読防止制御方法。
【請求項7】
前記磁気ストライプのリード時に、前記ピーク点及び前記磁気出力レベルの各情報に基づいて、隣接する記録信号のピーク点の磁気出力レベルの変化率を算出し、該変化率が所定の閾値以上となる回数を検出することにより、誤読の可能性のある磁気レベルの変化を監視する、
ことを特徴とする請求項2に記載の磁気カード誤読防止制御方法。
【請求項8】
前記誤読の可能性のある磁気レベルの変化が検出されたときに、前記磁気ストライプのリード状態を変更し、該各リード状態毎の前記磁気ストライプのリード結果を比較することにより、前記磁気ストライプのリードの正否を判断する、
ことを特徴とする請求項5に記載の磁気カード誤読防止制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図10】
image rotate

【図11】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図9】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2011−216137(P2011−216137A)
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願番号】特願2010−81174(P2010−81174)
【出願日】平成22年3月31日(2010.3.31)
【出願人】(000237639)富士通フロンテック株式会社 (667)
【Fターム(参考)】