專利名稱:一種磁卡解碼方法及磁卡讀取裝置的制作方法
技術領域:
本發(fā)明涉及一種磁卡解碼方法及磁卡讀取裝置。
背景技術:
磁記錄技術是一種傳統(tǒng)的信息技術,磁卡是磁記錄應用的一個重要方面,已經廣泛應用于人類生活各個方面。普通磁條卡讀卡機具的磁信號解碼一般采用硬件解碼。磁卡編碼規(guī)則定義,在每一條磁道上的數據是由基準位和數據位組成,開始連續(xù)幾十位前導“ 0,,是基準位,之后是數據位。
發(fā)明內容
本發(fā)明提供了一種磁卡解碼方法,能夠有效地提高讀取磁卡數據的準確度。一種磁卡解碼方法,
Al、將磁信號脈沖對應的電平信號的脈寬值依次存儲起來;
A2、將磁卡的前導比特0對應的脈寬值作為初始基準脈寬,用當前基準脈寬作為判別存儲的脈寬值對應比特0或比特1的半位的基準;
A3、用當前基準脈寬依次對存儲的脈寬值進行判別,若被判別的當前脈寬值對應比特 0,則當前基準脈寬更新為前一個基準脈寬與當前脈寬值的加權,并對下一個脈寬值進行判別;
其中,比特1由兩個連續(xù)的脈沖構成,比特0由一個脈沖構成。采用動態(tài)的當前基準脈寬作為判別比特0和比特1的基準,有效地降低了由于磁卡移動速度不均勻而導致的讀取數據錯誤的概率,采用比特0對應的脈寬是比特1對應的脈寬的兩倍左右,將比特0對應的脈寬作為當前基準脈寬的其中一權項可以使當前基準脈寬更加準確。優(yōu)選地,在步驟A2中,對至少兩個的前導比特0對應的脈寬值取平均值后作為所述初始基準脈寬。采用對前導比特0進行平均后作為初始基準脈寬,降低了由于某個比特0對應脈寬出現異常而使數據判別出錯的概率,使得初始基準脈寬更加準確。優(yōu)選地,在步驟A3中,若當前脈寬值大于kl倍當前基準脈寬,小于k2倍當前基準脈寬,其中,0<kl<k2<l,則執(zhí)行以下步驟
Bi、若前一個脈寬值和后一個脈寬值都對應比特0,則將當前脈寬值判別為對應比特
0 ;
B2、若后一個脈寬值對應比特0,且前兩個脈寬值合起來對應比特1,則將當前脈寬值判別為對應比特0 ;
B3、若前一個脈寬值對應比特0,且后兩個脈寬值對應比特1,則將當前脈寬值判別為對應比特0 ;
B4、若前一個脈寬值對應比特1的半位,且后一個脈寬值對應比特0,則將當前脈寬值和前一個脈寬值合起來判別為對應比特1 ;
B5、若前一個脈寬值對應比特0,且后一個脈寬值對應比特1的半位,則將當前脈寬值和后一個脈寬值合起來判別為對應比特1。當出現偏磁造成的數據位丟失的情況,采用上述技術方案,可以有效地將丟失的數據位進行恢復,進而提高了磁卡識別的準確率。優(yōu)選地,若當前脈寬值不屬于步驟Bl至步驟B5中的任一情形,則判斷已經判別出的比特位數是否構成一個字節(jié),若是則將所述字節(jié)的各個數據位的比特值進行異或和的結果與所述字節(jié)的異或校驗位進行比較,進而判別當前脈寬值對應的比特值。優(yōu)選地,在步驟A3中,當前基準脈寬更新為前一個基準脈寬的二分之一加上當前脈寬值的二分之一。優(yōu)選地,若當前脈寬值>80%X當前基準脈寬,則將當前脈寬值判別為對應比特0, 若20%X當前基準脈寬〈當前脈寬值<60%X當前基準脈寬,則將當前脈寬值判別為對應比特1的半位。本發(fā)明還提供了一種磁卡讀取裝置,包括解碼模塊,
所述解碼模塊根據權利要求1-6任一所述的磁卡解碼方法進行磁脈沖信號解碼處理。優(yōu)選地,還包括感應放大電路、帶通濾波電路和閾值整形電路; 所述感應放大電路用于將磁信號轉換為電信號并進行放大; 所述帶通濾波電路對感應放大電路輸出的電信號進行帶通濾波;
所述閾值整形電路對帶通濾波濾波電路輸出的電信號進行整形后提供給所述解碼模塊。優(yōu)選地,所述感應放大電路包括線圈、第一電阻、第二電阻、第三電阻、第一電容、 第二電容、第一放大器,所述線圈的一端通過第一電阻與所述第一放大器的負輸入端連接, 另一端通過所述第二電阻與第一放大器的正輸入端連接,所述第一電容一端與所述第一放大器的正輸入端連接,另一端與所述第一電阻和線圈的公共端連接,所述線圈與第二電阻的公共端與基準電壓連接,所述第三電阻和第二電容并聯后跨接在所述第一放大器的負輸入端和輸出端。優(yōu)選地,所述帶通濾波電路包括第三電容、第四電容、第四電阻、第五電阻、第六電阻、第七電阻、第二放大器、第一二極管和第二二極管;所述第二放大器的負輸入端分別通過第四電阻和第三電容與所述第一放大器的輸出端連接,所述放大器的正輸入端通過第五電阻與基準電壓連接,所述第四電容與第六電阻并聯后跨接在第二放大器的負輸入端和輸出端,第一二極管的陰極通過第七電阻與所述第二放大器的負輸入端連接,陽極與所述第二放大器的輸出端連接,所述第二二極管的陽極和陰極分別與所述第一二極管的陰極和陽極連接。優(yōu)選地,所述整形電路包括第八電阻、第九電阻、第十電阻和第三放大器,所述第三放大器的負輸入端通過第八電阻與所述第二放大器的輸出端連接,所述第三放大器的正輸入端分別通過第九電阻和第十電阻與基準電壓和所述第三放大器的輸出端連接,所述第三放大器的輸出端與所述解碼模塊連接。本發(fā)明采用動態(tài)的當前基準脈寬和模糊糾錯的算法,大大提高了讀取磁卡數據的準確率。
圖1是比特0或1對應的磁信號和電平信號的波形圖; 圖2是磁卡解碼方法的一種實施例的流程圖3是一種實施例的磁卡讀取裝置的結構框圖4是圖3中感應放大電路的一種具體實施的電路圖5是圖3中帶通濾波電路和整形電路的一種具體實施的電路圖6是磁卡解碼方法的另一種實施例的主流程圖7是磁卡解碼方法的一種實施例中的當前基準脈寬的算法流程圖8是磁卡解碼方法的一種實施例中的模糊糾錯算法流程圖。圖9是圖6中接收起始字節(jié)的接收起始位“1”的一種實施例的流程圖; 圖10是圖6中接收起始字節(jié)的一種實施例的流程圖11是圖6中接收數據及結束字節(jié)的一種實施例的流程圖; 圖12是圖6中接收校驗字節(jié)的一種實施例的流程圖。
具體實施例方式以下將結合附圖,對本發(fā)明的較佳實施例作進一步詳細說明。如圖2至圖5所示,一種磁卡讀取裝置,包括感應放大電路、帶通濾波電路、閾值整形電路和解碼模塊;
所述感應放大電路用于將磁信號轉換為電信號并進行放大;
所述帶通濾波電路對感應放大電路輸出的電信號進行帶通濾波;
所述閾值整形電路對帶通濾波濾波電路輸出的電信號進行整形;
所述解碼模塊與所述閾值整形電路連接,用于實施如下磁卡解碼方法,如圖2所示
5001、將磁信號脈沖對應的電平信號的脈寬值依次存儲起來;
5002、將磁卡的前導比特0對應的脈寬值作為初始基準脈寬,用當前基準脈寬作為判別存儲的脈寬值對應比特0或比特1的半位的基準;
5003、用當前基準脈寬依次對存儲的脈寬值進行判別,若被判別的當前脈寬值對應比特0,則當前基準脈寬更新為前一個基準脈寬與當前脈寬值的加權,并對下一個脈寬值進行判別;
其中,比特1由兩個連續(xù)的脈沖構成,比特0由一個脈沖構成。優(yōu)選地,如圖4所示,所述感應放大電路包括線圈L、第一電阻R1、第二電阻R2、第三電阻R3、第一電容Cl、第二電容C2、第一放大器U1,所述線圈L的一端通過第一電阻Rl與所述第一放大器Ul的負輸入端連接,另一端通過所述第二電阻R2與第一放大器Ul的正輸入端連接,所述第一電容Cl 一端與所述第一放大器Ul的正輸入端連接,另一端與所述第一電阻Rl和線圈L的公共端連接,所述線圈L與第二電阻R2的公共端與基準電壓VREF連接, 所述第三電阻R3和第二電容C2并聯后跨接在所述第一放大器Ul的負輸入端和輸出端。磁卡讀取裝置的磁頭可以將磁卡記錄的磁信號轉換成電信號,當磁卡以一定的速度通過磁頭時,在磁頭線圈中會感應出相應的電信號,在阻抗匹配的情況下,磁頭感應出的信號,電壓通常在IOmV以下,有的卡甚至低于lmV,本感應放大電路還具有低通(20dB)、矯相等功能。優(yōu)選地,如圖5所示,所述帶通濾波電路包括第三電容C3、第四電容C4、第四電阻 R4、第五電阻R5、第六電阻R6、第七電阻R7、第二放大器U2、第一二極管Dl和第二二極管 D2 ;所述第三電容C3通過第四電阻R4與第二放大器U2的負輸入端連接,所述第三電容C3 通過接口 TP2與第一放大器Ul的輸出端連接;所述第二放大器U2的正輸入端通過第五電阻R5與基準電壓VREF連接,所述第四電容C4與第六電阻R6并聯后跨接在第二放大器U2 的負輸入端和輸出端,第一二極管Dl的陰極通過第七電阻R7與所述第二放大器U2的負輸入端連接,陽極與所述第二放大器U2的輸出端連接,所述第二二極管D2的陽極和陰極分別與所述第一二極管Dl的陰極和陽極連接。T5、T8為信號測試端口。優(yōu)選地,所述整形電路包括第八電阻R8、第九電阻R9、第十電阻RlO和第三放大器 U3,所述第三放大器U3的負輸入端通過第八電阻R8與所述第二放大器U2的輸出端連接, 所述第三放大器U3的正輸入端分別通過第九電阻R9和第十電阻RlO與基準電壓和所述第三放大器U3的輸出端連接,所述第三放大器U3的輸出端與通過接口 MIG2所述解碼模塊連接。磁卡讀取裝置的磁頭是個敏感元件,在工作中會有各種干擾信號,因而需對噪聲等干擾進行抑制,本帶通濾波電路具有對信號進行線性放大、整形的功能,并且可以濾除干擾和雜波。本閾值整形電路的閾值時可調的,信號被恢復到易識別的狀態(tài)后,MIG2接口的信號進入微處理器定時器計數器控制口,由微處理器(單片機)進行軟件解碼。以下是磁卡解碼方法的另一個更為具體的實施例
通過單片機的定時器的計數來測量磁信號脈沖對應的電平信號的脈寬值,計數過程中每個脈寬值直接存儲在定時器計數寄存器中,然后讀取定時器計數寄存器中的脈寬值并依次存儲在磁信號脈沖寬度計數緩沖區(qū)TKlTimeBuf[1024](簡稱脈寬緩沖區(qū))。在較佳實施例中,由于磁信號帶寬為5K,設置定時器計數脈沖頻率F。應大于100K,也就是說一個信號周期最少計數20次,脈寬緩沖區(qū)的大小為1Kbyte,每個字節(jié)存儲一個脈沖寬度,即脈寬值。 例如單片機的時鐘頻率為11. 0592M,做64分頻可得F。=172. 8K的計數頻率,定時器計數寄存器TCNT為16位的計數寄存器。如圖6所示,在脈寬緩沖區(qū)中,讀取磁卡磁道開始一段均勻的磁記錄信號前導比特0 (也就是初始基準位)對應的開始一組脈寬,進行算術平均得倒初始基準脈寬,將初始基準脈寬賦值給當前基準脈寬TK1CLK,作為初始判別脈寬對應比特0或1的標準尺度。優(yōu)選地,選取20個前導比特0對應的脈寬值進行算術平均得到初始基準脈寬;接著進行接收起始字節(jié)、接收數據及結束字節(jié)、接收校驗字節(jié);在上述步驟中,需要判斷連續(xù)讀取的脈寬 TKlTime是否對應一個完整的字節(jié),若否,則繼續(xù)從脈寬緩沖區(qū)TKlTimeBuf [1024]讀取脈寬。判斷獲取的完整的字節(jié)是否是數據字節(jié)開始標志(起始字節(jié)),若是,則進行字節(jié)計數, 以后每接收一個完整的字節(jié),則將接收到的字節(jié)數加1 ;并判斷該字節(jié)是否是數據字節(jié)結束標志(結束字節(jié)),若是,則再獲取一個校驗字節(jié),然后對所有獲取到的數據字節(jié)(包括起始字節(jié),數據字節(jié)和結束字節(jié)。不包括校驗字節(jié))進行LRC校驗計算,若計算結果與校驗字節(jié)不一致,則對接收到的數據進行錯誤標記,否則,將數據存儲到緩沖區(qū)ByteBUfT[]中。當前基準脈寬TKlCLK是一個動態(tài)基準脈寬,當前基準脈寬TK1 CLK=TK 1 CLK*50%+TK 1Time*50%,即,如果當前脈寬值TKlTime對應的是比特0,當前基準脈寬TKlCLK則更新為前一個當前基準脈寬的50%加上當前比特0對應的當前脈寬值的 50%,如圖7所示。磁信號對應的脈寬值隨磁卡行進速度變化,磁卡移動的速度不均勻會使磁信號頻率在一定范圍內波動,如果采用固定基準脈寬來鑒別信號,會造成磁卡讀取裝置判別數據錯誤。由于磁卡移動速度不會突變,速度變化具有連續(xù)性,即當前的移動速度與前一時刻的速度相關,當前基準脈寬(動態(tài)基準脈寬)即與在數據信號的脈寬相關聯。因而,當前基準脈寬的大小隨著磁卡行進的速度變化而變化,是一個動態(tài)的、變化的數據,可以有效地降低因磁卡移動速度的不均勻而導致數據判別出錯的概率。優(yōu)選地,對從脈寬緩沖區(qū)TKlTimeBuf [1024]讀取出來的脈寬TKlTime,進行如下操作
計算脈寬比 RB=TKlTime/TKlCLK*100% ;
將脈寬比RB大于80%的脈寬對應的數據位視為比特“0”。將脈寬比RB介于20%到 60%的數據位視為比特“1”的“半個位”或“半位”,連續(xù)兩個“半個位”構成為一個完整的比特“1”。把脈寬比RB介于60%到80%的數據位視為不確定位。在另一具體實施例中,對于不確定位,采用模糊糾錯算法進行進一步的確定,如圖 8所示
Bi、若前一個脈寬值和后一個脈寬值都對應比特0,則將當前脈寬值判別為對應比特
0 ;
B2、若后一個脈寬值對應比特0,且前兩個脈寬值合起來對應比特1,則將當前脈寬值判別為對應比特0 ;
B3、若前一個脈寬值對應比特0,且后兩個脈寬值對應比特1,則將當前脈寬值判別為對應比特0 ;
B4、若前一個脈寬值對應比特1的半位,且后一個脈寬值對應比特0,則將當前脈寬值和前一個脈寬值合起來判別為對應比特1 ;
B5、若前一個脈寬值對應比特0,且后一個脈寬值對應比特1的半位,則將當前脈寬值和后一個脈寬值合起來判別為對應比特1。若當前脈寬值不屬于步驟Bl至步驟B5中的任一情形,則判斷已經判別出的比特位數是否構成一個字節(jié),若是,則將所述字節(jié)的各個數據位的比特值進行異或和的結果與所述字節(jié)的異或校驗位進行比較,進而判別當前脈寬值對應的比特值。由于偏磁造成數據位的丟失,可以通過模糊算法進行恢復丟失的數據,提高磁卡信號識別率。由于前導比特0后的起始字節(jié)的起始位即第一位是比特1,所以需要檢測前導比特O后的第一個比特1,以判斷起始字節(jié)的開始。起始位1的判別方法如圖9所示
1、從脈寬緩沖區(qū)讀取脈寬數據TKlTime;
2、計算該脈寬數據TKlTime對應的脈寬比RB;
3、判斷該脈寬數據TKlTime是對應比特0、比特1或是不確定位;
4、若是不確定位則通過模糊糾錯算法對該脈寬數據TKlTime對應的比特位進行判別, 若不是不確定位則判別該脈寬數據TKlTime對應的是否是比特1的前半位,若不是比特1的前半位則從1重新從1步驟開始執(zhí)行,若是比特1的前半位則繼續(xù)執(zhí)行步驟5 ;
5、繼續(xù)讀取下一個脈寬數據TKlTime;
6、并計算相應的脈寬比RB;
7、確定對應的是比特0或比特1的半位或是不確定位,若是不確定位則再次通過模糊糾錯算法進行判別對應的比特位;
8、若是比特1的半位,即整個起始位1的接收完畢,若否則從步驟1重新執(zhí)行。
如圖10、11和12所示,分別是起始字節(jié)、數據結束字節(jié)、校驗字節(jié)的接收流程圖, 其中需要對構成字節(jié)的各個比特對應的脈寬數據TKlTime進行判別,其判別方式前面已經進行了詳細的描述,本領域技術人員在結合圖10、11和12能夠清楚地理解相應的過程,在此不再贅述。
權利要求
1.一種磁卡解碼方法,其特征是,包括如下步驟Al、將磁信號脈沖對應的電平信號的脈寬值依次存儲起來;A2、將磁卡的前導比特0對應的脈寬值作為初始基準脈寬,用當前基準脈寬作為判別存儲的脈寬值對應比特0或比特1的半位的基準;A3、用當前基準脈寬依次對存儲的脈寬值進行判別,若被判別的當前脈寬值對應比特 0,則當前基準脈寬更新為前一個基準脈寬與當前脈寬值的加權,并對下一個脈寬值進行判別;其中,比特1由兩個連續(xù)的脈沖構成,比特0由一個脈沖構成。
2.如權利要求1所述的磁卡解碼方法,其特征是在步驟A2中,對至少兩個的前導比特0對應的脈寬值取平均值后作為所述初始基準脈寬。
3.如權利要求2所述的磁卡解碼方法,其特征是在步驟A3中,若當前脈寬值大于kl 倍當前基準脈寬,小于k2倍當前基準脈寬,其中,0<kl<k2<l,則執(zhí)行以下步驟Bi、若前一個脈寬值和后一個脈寬值都對應比特0,則將當前脈寬值判別為對應比特0 ;B2、若后一個脈寬值對應比特0,且前兩個脈寬值合起來對應比特1,則將當前脈寬值判別為對應比特0 ;B3、若前一個脈寬值對應比特0,且后兩個脈寬值對應比特1,則將當前脈寬值判別為對應比特0 ;B4、若前一個脈寬值對應比特1的半位,且后一個脈寬值對應比特0,則將當前脈寬值和前一個脈寬值合起來判別為對應比特1 ;B5、若前一個脈寬值對應比特0,且后一個脈寬值對應比特1的半位,則將當前脈寬值和后一個脈寬值合起來判別為對應比特1。
4.如權利要求3所述的磁卡解碼方法,其特征是若當前脈寬值不屬于步驟Bl至步驟 B5中的任一情形,則判斷已經判別出的比特位數是否構成一個字節(jié),若是則將所述字節(jié)的各個數據位的比特值進行異或和的結果與所述字節(jié)的異或校驗位進行比較,進而判別當前脈寬值對應的比特值。
5.如權利要求1所述的磁卡解碼方法,其特征是在步驟A3中,當前基準脈寬更新為前一個基準脈寬的二分之一加上當前脈寬值的二分之一。
6.如權利要求1所述的磁卡解碼方法,其特征是若當前脈寬值>80%X當前基準脈寬,則將當前脈寬值判別為對應比特0,若20%X當前基準脈寬〈當前脈寬值<60%X當前基準脈寬,則將當前脈寬值判別為對應比特1的半位。
7.—種磁卡讀取裝置,其特征是包括解碼模塊,所述解碼模塊根據權利要求1-6任一所述的磁卡解碼方法進行磁脈沖信號解碼處理。
8.如權利要求7所述的磁卡讀取裝置,其特征是還包括感應放大電路、帶通濾波電路和閾值整形電路;所述感應放大電路用于將磁信號轉換為電信號并進行放大;所述帶通濾波電路對感應放大電路輸出的電信號進行帶通濾波;所述閾值整形電路對帶通濾波濾波電路輸出的電信號進行整形后提供給所述解碼模塊。
9.如權利要求7或8所述的磁卡讀取裝置,其特征是所述感應放大電路包括線圈、第一電阻、第二電阻、第三電阻、第一電容、第二電容、第一放大器,所述線圈的一端通過第一電阻與所述第一放大器的負輸入端連接,另一端通過所述第二電阻與第一放大器的正輸入端連接,所述第一電容一端與所述第一放大器的正輸入端連接,另一端與所述第一電阻和線圈的公共端連接,所述線圈與第二電阻的公共端與基準電壓連接,所述第三電阻和第二電容并聯后跨接在所述第一放大器的負輸入端和輸出端。
10.如權利要求9所述的磁卡讀取裝置,其特征是所述帶通濾波電路包括第三電容、 第四電容、第四電阻、第五電阻、第六電阻、第七電阻、第二放大器、第一二極管和第二二極管;所述第二放大器的負輸入端分別通過第四電阻和第三電容與所述第一放大器的輸出端連接,所述第二放大器的正輸入端通過第五電阻與基準電壓連接,所述第四電容與第六電阻并聯后跨接在第二放大器的負輸入端和輸出端,第一二極管的陰極通過第七電阻與所述第二放大器的負輸入端連接,陽極與所述第二放大器的輸出端連接,所述第二二極管的陽極和陰極分別與所述第一二極管的陰極和陽極連接;所述整形電路包括第八電阻、第九電阻、第十電阻和第三放大器,所述第三放大器的負輸入端通過第八電阻與所述第二放大器的輸出端連接,所述第三放大器的正輸入端分別通過第九電阻和第十電阻與基準電壓和所述第三放大器的輸出端連接,所述第三放大器的輸出端與所述解碼模塊連接。
全文摘要
本發(fā)明公開了一種磁卡解碼方法和磁卡讀取裝置。其方法包括A1、將磁信號脈沖對應的電平信號的脈寬值依次存儲起來;A2、將磁卡的前導比特0對應的脈寬值作為初始基準脈寬,用當前基準脈寬作為判別存儲的脈寬值對應比特0或比特1的半位的基準;A3、用當前基準脈寬依次對存儲的脈寬值進行判別,若被判別的當前脈寬值對應比特0,則當前基準脈寬更新為前一個基準脈寬與當前脈寬值的加權,并對下一個脈寬值進行判別;其中,比特1由兩個連續(xù)的脈沖構成,比特0由一個脈沖構成。本發(fā)明采用動態(tài)的當前基準脈寬和模糊糾錯的算法,大大提高了讀取磁卡數據的準確率。
文檔編號G06K7/08GK102222211SQ201110188299
公開日2011年10月19日 申請日期2011年7月6日 優(yōu)先權日2011年7月6日
發(fā)明者張杰明, 李建設, 魏峰 申請人:深圳市銘特科技有限公司