專利名稱:一種磁卡的軟解碼方法
一種磁卡的軟解碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于軟件優(yōu)化算法的磁卡解碼方法。
背景技術(shù):
針對磁卡解碼,目前行業(yè)內(nèi)都普遍采用硬解碼方案,即采購專用磁卡解碼芯片或模組來實現(xiàn)刷卡功能。硬解碼方案存在的缺點完全依賴于硬件電路將磁道上的磁信號轉(zhuǎn)化為解析后的數(shù)字比特流。而由于國內(nèi)所用銀行卡發(fā)卡環(huán)境限制大都在發(fā)行時寫卡存在較大人為因素影響、如銀行卡用戶保管不當(dāng)引起的磁信息磨損、刷卡過程中人為因素的影響等,而這些因素的影響對于硬解碼來說很難適應(yīng),會導(dǎo)致無法解碼等現(xiàn)象。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題,在于提供一種磁卡的軟解碼方法,通過軟件分析、優(yōu)化的解碼過程,部分消除各個環(huán)節(jié)引入的人為干擾,提高解碼成功率。本發(fā)明是這樣實現(xiàn)的一種磁卡的軟解碼方法,包括如下步驟步驟10、刷卡時記錄磁道信號邊沿變化的時刻值,通過減法運算將邊沿變化的時刻值轉(zhuǎn)換成脈寬序列;步驟20、對磁道的一段前導(dǎo)0值脈寬取平均值,計算得到初始基準(zhǔn)脈寬,我們將基準(zhǔn)脈寬稱為參考T值;步驟30、依賴于當(dāng)前的參考T值解碼出下一個比特值;
步驟40、若脈寬還未全部解碼為比特數(shù)據(jù),則用所述比特值對應(yīng)的脈寬值重新計算參考T值后回到步驟30 ;若全部解碼完畢,進(jìn)入步驟50 ;步驟50、校驗解碼出的比特流數(shù)據(jù);步驟60、若校驗正確,返回正確的磁道數(shù)據(jù)后結(jié)束流程;若校驗出錯,進(jìn)入步驟70 ;步驟70、判斷是否已經(jīng)嘗試過反向解碼,若否,則啟動反向解碼;若是,則結(jié)束。進(jìn)一步的,本發(fā)明所述步驟20中初始基準(zhǔn)脈寬,即初始參考T值的獲取方式是步驟21、取8個前導(dǎo)0對應(yīng)的脈寬值;步驟22、計算平均值,并取平均值的3/4標(biāo)記為al,取平均值的5/4標(biāo)記為a2 ;步驟22、假設(shè)8個脈寬值中存在m(0彡m彡8)個大于a2或小于al的數(shù)據(jù),如果m值為0,則此平均值被定義為初始基準(zhǔn)脈寬,也就是初始參考T值,并進(jìn)入步驟30 ;如果m值不為0,則丟棄這m個數(shù)據(jù),并從緩沖區(qū)中再取m個數(shù)據(jù)補充,然后回到步驟22 ;進(jìn)一步的,本發(fā)明所述步驟30中比特值的解碼方法是假設(shè)在脈寬序列緩沖區(qū)中,當(dāng)前待解碼的脈寬值稱之為脈寬1,當(dāng)前值往后的第I個脈寬值稱之為脈寬2,當(dāng)前值往后的第2個脈寬值稱之為脈寬3 ;將參考T的3/4標(biāo)記為al,參考T的5/4標(biāo)記為a2 ;將脈寬1、脈寬2、脈寬3分別標(biāo)記為kl,k2,k3 ;步驟31、判斷kl〈al,并且k2〈al是否成立,是,則進(jìn)行步驟32,否,則將kl解碼為比特O后進(jìn)入步驟40 ;步驟32、判斷kl+k2〈al,并且kl+k2+k3〈a2是否成立,是,則將kl、k2、k3合并解碼為比特O ;否,則將kl、k2合并解碼為比特I ;之后均進(jìn)入步驟40,進(jìn)行重新算參考T,之后進(jìn)入步驟33 ;步驟33、判斷緩沖區(qū)中的脈寬值是否都已經(jīng)解碼為比特數(shù)據(jù)?是,則結(jié)束,否,則回到步驟31。進(jìn)一步的,本發(fā)明所述步驟40中計算參考T值是采用“跟隨加窗”算法,所述“跟隨加窗”算法為將用于計算參考T值的8個數(shù)據(jù)存在緩沖“窗口 ”內(nèi),此緩沖“窗口”在后續(xù)解碼過程中始終保持為8個數(shù)據(jù)大小,并且每個數(shù)據(jù)對應(yīng)磁卡的I個比特值;在整個解碼過程中,使用先進(jìn)先出的方式更新緩沖“窗口”內(nèi)的值;在本次解碼出的數(shù)據(jù)為比特O (或比特I)之后,則先丟棄最先進(jìn)入“窗口”的那個數(shù)據(jù),然后將比特O (或比特I)對應(yīng)的脈寬值更新到“窗口”內(nèi),并重新計算平均值,此平均值即為最新的參考T值;判斷解碼是否結(jié)束?若是,則結(jié)束,并進(jìn)入步驟50 ;若否,則回到步驟30。進(jìn)一步的,本發(fā)明所述步驟70中反向解碼算法為步驟71、將脈寬緩沖區(qū)的數(shù)據(jù)反向存儲;即將緩沖區(qū)中的第I個數(shù)據(jù)與最后I個數(shù)據(jù)對換位置,第2個數(shù)據(jù)與倒數(shù)第2個數(shù)據(jù)對換位置,依此類推;步驟72、進(jìn)入步驟20 ;第一次解碼是從前導(dǎo)O開始,而本次解碼是從尾隨O開始,故稱之為反向解碼。
本發(fā)明具有如下優(yōu)點通過硬件電路上對磁卡信息轉(zhuǎn)化的電信號放大、整形、采集、存儲,完成信號錄入后,啟動軟件分析、優(yōu)化的解碼過程;因此具有兩優(yōu)點I)抗干擾能力強對存儲下來的磁道信號數(shù)據(jù)進(jìn)行軟件分析,并應(yīng)用多種補償算法,部分消除各個環(huán)節(jié)引入的人為干擾,抗干擾能力強,提高解碼成功率。2)適應(yīng)性好可以在軟件上對獲取的磁道信號數(shù)據(jù)應(yīng)用多種算法(如跟隨加窗算法,反向解碼算法,算術(shù)平均過濾算法),從而更好的適應(yīng)不同人的刷卡習(xí)慣,以及因長期使用引起磁道損耗而引起的信號變形。
下面參照附圖結(jié)合實施例對本發(fā)明作進(jìn)一步的說明。圖1為本發(fā)明方法涉及的磁卡的磁道信息的分布情況示意圖。圖2為本發(fā)明方法總的流程圖。圖3為本發(fā)明方法中比特值的解碼方法的流程圖。圖4為本發(fā)明方法中采用“跟隨加窗”算法計算參考T值的流程圖。
具體實施方式首先我們先了解一下磁卡的磁道信息的分布情況,如圖1所示,a)對應(yīng)于磁道信息中的比特O值,b)對應(yīng)于磁道信息中的比特I值。整個磁道的信息分布為“前導(dǎo)0+有效信息+尾隨0”,在本發(fā)明中,我們會先根據(jù)前導(dǎo)或尾隨0(在實際算法中,我們是取8個O算平均值)算出一個參考T值,參考T值可以認(rèn)為就是a)中兩個t之間的寬度值。然后,我們再根據(jù)參考T值來判斷后續(xù)的數(shù)據(jù)。有效信息區(qū)的信號與c)圖類似,如果在一個參考T的時間內(nèi),波形有發(fā)生翻轉(zhuǎn),則這個比特值被識別為I個比特I ;反之,在T時間內(nèi),沒有翻轉(zhuǎn)發(fā)生,則識別為比特O,直到解碼結(jié)束。如圖2所示,本發(fā)明是這樣實現(xiàn)的一種磁卡的軟解碼方法,包括如下步驟步驟10、刷卡時記錄磁道信號邊沿變化的時刻值,通過減法運算將邊沿變化的時刻值轉(zhuǎn)換成脈寬序列;步驟20、對磁道的一段前導(dǎo)0值脈寬取平均值,計算得到初始基準(zhǔn)脈寬,我們將基準(zhǔn)脈寬稱為參考T值;步驟30、依賴于當(dāng)前的參考T值解碼出下一個比特值;步驟40、若脈寬還未全部解碼為比特數(shù)據(jù),則用所述比特值對應(yīng)的脈寬值重新計算參考T值后回到步驟30 ;若全部解碼完畢,進(jìn)入步驟50 ;步驟50、校驗解碼出的比特流數(shù)據(jù);步驟60、若校驗正確,返回正確的磁道數(shù)據(jù)后結(jié)束流程;若校驗出錯,進(jìn)入步驟70 ;步驟70、判斷是否已經(jīng)嘗試過反向解碼,若否,則啟動反向解碼;若是,則結(jié)束。該步驟中反向解碼算法為步驟71、將脈寬緩沖區(qū)的數(shù)據(jù)反向存儲;即將緩沖區(qū)中的第I個數(shù)據(jù)與最后I個數(shù)據(jù)對換位置,第2個數(shù)據(jù)與倒數(shù)第2個數(shù)據(jù)對換位置,依此類推;步驟72、進(jìn)入步驟20 ;第一次解碼是從前導(dǎo)0開始,而本次解碼是從尾隨0開始,故稱之為反向解碼。本發(fā)明為雙向解碼方案,即當(dāng)正向解碼解不出來的時候,軟件自動補充反向解碼的方式進(jìn)行重試(所謂正向,即按刷卡的方向?qū)υ紨?shù)據(jù)進(jìn)行解碼)。這個主要是為了解決數(shù)據(jù)在數(shù)學(xué)上的一個特點,舉例來說,如采集到的數(shù)據(jù)為{ 2,2,3,3 },則從左到右看,值從2到3,數(shù)值變化了 50%,而從右到左看,數(shù)據(jù)從3到2,數(shù)值變化了 33%,這種方式可以對刷卡速率從慢到快發(fā)生突變的情況具有非常優(yōu)良的適應(yīng)能力。如圖4所示,所述步驟20中計算初始參考T值是采用“算術(shù)平均過濾”算法,所述“算術(shù)平均過濾”算法為步驟21、取8個前導(dǎo)0對應(yīng)的脈寬值;步驟22、計算脈寬的平均值,并取平均值的3/4標(biāo)記為al,取平均值的5/4標(biāo)記為a2 ;步驟22、假設(shè)8個脈寬值中存在m個大于a2或小于al的數(shù)據(jù),如果m值為0,則此平均值被定義為初始基準(zhǔn)脈寬,也就是初始參考T值,并進(jìn)入步驟30 ;如果m值不為0,則丟棄這m個數(shù)據(jù),并從緩沖區(qū)中再取m個數(shù)據(jù)補充,然后回到步驟22 ;如圖3所示,所述步驟30中比特值的解碼方法是在脈寬序列緩沖區(qū)中,當(dāng)前待解碼的脈寬值稱之為脈寬1,當(dāng)前值往后的第I個脈寬值稱之為脈寬2,當(dāng)前值往后的第2個脈寬值稱之為脈寬3 ;如當(dāng)前待解碼的脈寬值為緩沖區(qū)中的第9個數(shù)據(jù),則脈寬I為第9個數(shù)據(jù),脈寬2為第10個數(shù)據(jù),脈寬3為第11個數(shù)據(jù);將參考T的3/4標(biāo)記為al,參考T的5/4標(biāo)記為a2 ;將脈寬1、脈寬2、脈寬3分別標(biāo)記為 kl, k2, k3 ;步驟31、判斷kl〈al,并且k2〈al是否成立,是,則進(jìn)行步驟32,否,則將kl解碼為比特O后進(jìn)入步驟40 ;步驟32、判斷kl+k2〈al,并且kl+k2+k3〈a2是否成立,是,則將kl、k2、k3合并解碼為比特0 ;否,則將kl、k2合并解碼為比特I ;之后均進(jìn)入步驟40 ;步驟33、判斷緩沖區(qū)中的脈寬值是否都已經(jīng)解碼為比特數(shù)據(jù)?是,則結(jié)束,并進(jìn)入步驟40 ;否,則回到步驟31。如圖4所示,所述步驟40中計算參考T值是采用“跟隨加窗”算法,所述“跟隨加窗”算法為步驟41、將用于計算參考T值的8個數(shù)據(jù)存在緩沖“窗口”內(nèi),此緩沖“窗口”在后續(xù)解碼過程中始終保持為8個數(shù)據(jù)大小,并且每個數(shù)據(jù)對應(yīng)磁卡的I個比特值;步驟42、計算8個數(shù)據(jù)的算術(shù)平均值;步驟43、過濾異常脈寬值;從8個脈寬數(shù)據(jù)中剔除大于平均值的5/4或小于平均值的3/4的數(shù)據(jù);步驟44、判斷是否有數(shù)據(jù)被剔除,是,則從脈寬緩沖區(qū)中再取N個數(shù)據(jù)以補齊“窗口”要求的8個值,回到步驟42 ;否,則進(jìn)入步驟30,依賴參考T值解碼出I個磁道比特值后進(jìn)入步驟45 ;步驟45、使用先進(jìn)先出的方式更新緩沖“窗口”內(nèi)的值;如本次解碼出的數(shù)據(jù)為比特0 (或比特1),則先丟棄最先進(jìn)入“窗口”的那個數(shù)據(jù),然后將比特0 (或比特I)對應(yīng)的脈寬值更新到“窗口 ”內(nèi),并重新計算平均值,此平均值即為最新的參考T值;步驟46、判斷解碼是否結(jié)束?若是,則結(jié)束,并進(jìn)入步驟50,若否,則回到步驟30。“跟隨加窗”算法類似于軟件濾波中用到的一種叫做“遞推中位值平均”的算法,首先,利用磁道的前導(dǎo)或尾隨0來計算最初的參考T值,并以這個T值來解碼隨后的數(shù)據(jù)。并且,在解碼的過程中,軟件會不斷地去修正這個T值。本算法以8個比特對應(yīng)的脈沖寬度值為基礎(chǔ)數(shù)據(jù),并將其約定為一個窗的大小,窗內(nèi)的數(shù)據(jù)主要用于計算T值。在解碼的過程中,新解碼出的比特值對應(yīng)的脈寬值會替換掉窗內(nèi)的舊數(shù)據(jù),并重新計算參考T值。就像是軟件解碼到哪里,這個窗便跟隨到哪里,由此,以“跟隨加窗”來命名。初始參考T值的算法舉例表I的第一行為數(shù)據(jù)在緩沖區(qū)中的索引,第二行為脈寬的數(shù)值,模擬了前導(dǎo)0區(qū)域的數(shù)據(jù)。所列的脈寬值均十六進(jìn)制表示。表I
索引 |1 [2 [3 U f5 [6 [7 [8 [9 [To......
脈寬 6666 4444 4444 4444 2222 4444 4444 4444 4444 4444 ......先取8個數(shù)據(jù),即表2的中具下劃線的區(qū)間,計算得到平均值為4444。表權(quán)利要求
1.一種磁卡的軟解碼方法,其特征在于包括如下步驟 步驟10、刷卡時記錄磁道信號邊沿變化的時刻值,通過減法運算將邊沿變化的時刻值轉(zhuǎn)換成脈寬序列; 步驟20、對磁道的一段前導(dǎo)O值脈寬取平均值,計算得到初始基準(zhǔn)脈寬,我們將基準(zhǔn)脈寬稱之為參考T值; 步驟30、依賴于當(dāng)前的參考T值解碼出下一個比特值; 步驟40、若脈寬還未全部解碼為比特數(shù)據(jù),則用所述比特值對應(yīng)的脈寬值重新計算參考T值后回到步驟30 ;若全部解碼完畢,進(jìn)入步驟50 ; 步驟50、校驗解碼出的比特流數(shù)據(jù); 步驟60、若校驗正確,返回正確的磁道數(shù)據(jù)后結(jié)束流程;若校驗出錯,進(jìn)入步驟70 ; 步驟70、判斷是否已經(jīng)嘗試過反向解碼,若否,則啟動反向解碼;若是,則結(jié)束。
2.根據(jù)權(quán)利要求1所述的一種磁卡的軟解碼方法,其特征在于所述步驟20中初始基準(zhǔn)脈寬,即初始參考T值的獲取方式是 步驟21、取8個前導(dǎo)O對應(yīng)的脈寬值; 步驟22、計算平均值,并取平均值的3/4標(biāo)記為al,取平均值的5/4標(biāo)記為a2 ; 步驟22、假設(shè)8個脈寬值中存在m個大于a2或小于al的數(shù)據(jù),如果m值為0,則此平均值被定義為初始基準(zhǔn)脈寬,也就是初始參考T值,并進(jìn)入步驟30 ;如果m值不為0,則丟棄這m個數(shù)據(jù),并從緩沖區(qū)中再取m個數(shù)據(jù)補充,然后回到步驟22。
3.根據(jù)權(quán)利要求1所述的一種磁卡的軟解碼方法,其特征在于所述步驟30中比特值的解碼方法是 假設(shè)在脈寬序列緩沖區(qū)中,當(dāng)前待解碼的脈寬值稱之為脈寬1,當(dāng)前值往后的第I個脈寬值稱之為脈寬2,當(dāng)前值往后的第2個脈寬值稱之為脈寬3 ;將參考T的3/4標(biāo)記為al,參考T的5/4標(biāo)記為a2 ;將脈寬1、脈寬2、脈寬3分別標(biāo)記為kl,k2,k3 ; 步驟31、判斷kl〈al,并且k2〈al是否成立,是,則進(jìn)行步驟32,否,則將kl解碼為比特O后進(jìn)入步驟40 ; 步驟32、判斷kl+k2〈al,并且kl+k2+k3〈a2是否成立,是,則將kl、k2、k3合并解碼為比特O ;否,則將kl、k2合并解碼為比特I ;之后均進(jìn)入步驟40,進(jìn)行重新算參考T,之后進(jìn)入步驟33 ; 步驟33、判斷緩沖區(qū)中的脈寬值是否都已經(jīng)解碼為比特數(shù)據(jù)?是,則結(jié)束,否,則回到步驟31。
4.根據(jù)權(quán)利要求1所述的一種磁卡的軟解碼方法,其特征在于所述步驟40中計算參考T值是采用“跟隨加窗”算法,所述“跟隨加窗”算法為將用于計算參考T值的8個數(shù)據(jù)存在緩沖“窗口 ”內(nèi),此緩沖“窗口”在后續(xù)解碼過程中始終保持為8個數(shù)據(jù)大小,并且每個數(shù)據(jù)對應(yīng)磁卡的I個比特值;在整個解碼過程中,使用先進(jìn)先出的方式更新緩沖“窗口”內(nèi)的值;在本次解碼出的數(shù)據(jù)為比特O或比特I之后,先丟棄最先進(jìn)入“窗口”的那個數(shù)據(jù),然后將比特O或比特I對應(yīng)的脈寬值更新到“窗口”內(nèi),并重新計算平均值,此平均值即為最新的參考T值;判斷解碼是否結(jié)束?若是,則結(jié)束解碼,進(jìn)入步驟50,若否,則回到步驟30。
5.根據(jù)權(quán)利要求1所述的一種磁卡的軟解碼方法,其特征在于所述步驟70中反向解碼算法是步驟71、將脈寬緩沖區(qū)的數(shù)據(jù)反向存儲;即將緩沖區(qū)中的第I個數(shù)據(jù)與最后I個數(shù)據(jù)對換位置,第2個數(shù)據(jù)與倒數(shù)第2個數(shù)據(jù)對換位置,依此類推;· 步驟72、進(jìn)入步驟20 ;第一次解碼是從前導(dǎo)O開始,而本次解碼是從尾隨O開始,故稱之為反向解碼。
全文摘要
本發(fā)明提供一種磁卡的軟解碼方法,包括如下步驟刷卡時記錄磁道信號邊沿變化的時刻值,將邊沿變化的時刻值轉(zhuǎn)換成脈寬序列;對磁道前導(dǎo)的一段比特0所對應(yīng)的脈寬值取平均值,計算得到初始基準(zhǔn)脈寬,基準(zhǔn)脈寬稱為參考T值;依賴于參考T值對緩沖區(qū)中的脈寬序列進(jìn)行解碼,并且每解碼出一個比特值,就用此比特值對應(yīng)的脈寬值重新計算參考T值;依次解碼,直至脈寬緩沖區(qū)中的數(shù)據(jù)全部解碼為對應(yīng)的比特值;最后將比特值解碼為磁道數(shù)據(jù)。若解碼失敗,則則啟動反向解碼,以提高刷卡的成功率。本發(fā)明通過硬件電路上對磁卡信息轉(zhuǎn)化的電信號采集并處理,完成信號錄入后,啟動軟件分析、優(yōu)化解碼,抗干擾能力強且適應(yīng)性好。
文檔編號G06K7/00GK103034829SQ201210560710
公開日2013年4月10日 申請日期2012年12月19日 優(yōu)先權(quán)日2012年12月19日
發(fā)明者陳成秋, 高剛強, 張登峰, 余杭軍 申請人:福建升騰資訊有限公司