一種基于adc引腳采樣的磁卡解碼方法
【專利摘要】本發(fā)明提供一種基于ADC引腳采樣的磁卡解碼方法,其硬件上僅采用一級(jí)放大電路,同時(shí)軟件上采用ADC進(jìn)行一級(jí)放大電路之后的信號(hào)(這種信號(hào)為模擬信號(hào))進(jìn)行采集,在ADC信號(hào)采集時(shí),考慮了強(qiáng)、弱信號(hào)磁卡兼容的問題,為適當(dāng)調(diào)整一級(jí)放大電路的參數(shù),使弱信號(hào)磁卡能達(dá)到ADC信號(hào)采集精度要求,即能夠正常識(shí)別弱磁卡信號(hào),而此時(shí)強(qiáng)磁卡信號(hào)可能出現(xiàn)截止失真問題,利用波峰檢測(cè)模塊對(duì)截止失真進(jìn)行了判斷,即使用了失真閾值線取失真部分的中點(diǎn)作為信號(hào)峰值,這樣失真的信號(hào)與實(shí)際信號(hào)峰值誤差較?。徊杉降拇诺罃?shù)據(jù)比較精確,最后通過信號(hào)數(shù)據(jù)解碼模塊完成磁道數(shù)據(jù)解碼,本發(fā)明降低了硬件成本,同時(shí)提高了對(duì)強(qiáng)、弱磁卡信號(hào)進(jìn)行處理的兼容性,實(shí)用范圍更廣。
【專利說明】 —種基于ADC引腳采樣的磁卡解碼方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種通訊設(shè)備【技術(shù)領(lǐng)域】,尤其涉及一種基于ADC引腳采樣的磁卡解碼方法。
【背景技術(shù)】
[0002]在磁卡解碼領(lǐng)域中目前常見的兩種方法為:第一是使用磁卡解碼芯片的硬件解碼方法,該方法的不足在于硬件解碼芯片昂貴,即成本很高;第二是硬件上的磁卡微弱信號(hào)通過兩級(jí)放大電路并經(jīng)過整波電路得到易被CPU的10 口識(shí)別的強(qiáng)信號(hào)(這種信號(hào)為數(shù)字信號(hào)),再經(jīng)過軟件采集數(shù)據(jù)同時(shí)進(jìn)行軟件算法解碼方法,該方法在成本上比硬件解碼方法有大幅度的降低,但成本仍然比較高;本專利申請(qǐng)文件提出新的軟件解碼方法,成本得到進(jìn)一步降低。同時(shí),不同磁卡的信號(hào)可能存在強(qiáng)弱之分,目前常見的兩種方法中,對(duì)強(qiáng)弱磁卡很難做到兼容,即要么弱信號(hào)很可能被誤解碼或者不解碼,要么放大倍數(shù)得更大,使得成本更聞。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問題,在于提供一種基于ADC引腳采樣的磁卡解碼方法,降低了硬件成本,同時(shí)提高了對(duì)強(qiáng)、弱磁卡信號(hào)進(jìn)行處理的兼容性,實(shí)用范圍更廣。
[0004]本發(fā)明是這樣實(shí)現(xiàn)的:一種基于ADC引腳采樣的磁卡解碼方法,所述方法需提供一級(jí)放大電路和CPU,所述CPU上建立有一讀取靜音線模塊、磁卡刷卡判斷模塊、波峰檢測(cè)模塊、判斷刷卡信號(hào)是否結(jié)束模塊、信號(hào)數(shù)據(jù)解碼模塊以及解碼結(jié)果輸出模塊;
[0005]所述方法包括如下步驟:
[0006]步驟10、將刷卡器通過一級(jí)放大電路與CPU的ADC引腳連接,在磁卡未刷卡的狀態(tài)下,通過讀取靜音線模塊連續(xù)讀取多個(gè)磁卡磁道信號(hào)對(duì)應(yīng)的ADC值,所述ADC值為在CPU的ADC引腳下所處的信號(hào)值;獲取多個(gè)ADC值的平均值,此平均值對(duì)應(yīng)的電壓作為靜音線;
[0007]步驟20、執(zhí)行磁卡刷卡判斷模塊,磁卡刷卡判斷模塊讀取CPU的ADC引腳的ADC值,若ADC值處于靜音線的電壓閾值帶之外,則表示有刷卡,進(jìn)入步驟30,若ADC值處于靜音線的電壓閾值帶之內(nèi),則表示沒刷卡,繼續(xù)讀取磁道的ADC引腳;所述靜音線的電壓閾值帶為正信號(hào)閾值線與負(fù)信號(hào)閾值線之間的范圍;所述正信號(hào)閾值線為磁道信號(hào)未刷卡時(shí)的噪聲電壓最大值+lmv的電壓,所述負(fù)信號(hào)閾值線為磁道信號(hào)未刷卡時(shí)的噪聲電壓最小值-lmv的電壓;
[0008]步驟30、執(zhí)行波峰檢測(cè)模塊,所述波峰檢測(cè)模塊定義有一定時(shí)器,在讀取磁道各信號(hào)對(duì)應(yīng)的ADC值時(shí),該定時(shí)器均對(duì)應(yīng)存有一定時(shí)器計(jì)數(shù)值;波峰檢測(cè)模塊判斷ADC弓|腳的信號(hào)為正信號(hào)還是負(fù)信號(hào),為正信號(hào)時(shí),在正信號(hào)中獲取波峰,若信號(hào)存在截止失真時(shí),取截止失真部分的中點(diǎn)作為波峰,并獲得波峰的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值;為負(fù)信號(hào)時(shí),在負(fù)信號(hào)中獲取波谷,若信號(hào)存在截止失真時(shí),取截止失真部分的中點(diǎn)作為波谷,并獲得波谷的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值;所述正信號(hào)為:位于所述靜音線之上的任意一電平對(duì)應(yīng)的ADC值;負(fù)信號(hào)為:位于所述靜音線之下的任意一電平對(duì)應(yīng)的ADC值;
[0009]步驟40、執(zhí)行判斷刷卡信號(hào)是否結(jié)束模塊,通過判斷刷卡獲取信號(hào)的時(shí)間段是否大于預(yù)先設(shè)定的時(shí)間閾值,是,則刷卡信號(hào)結(jié)束,進(jìn)入步驟50;否,則繼續(xù)執(zhí)行波峰檢測(cè)模塊,即回到步驟30;
[0010]步驟50、執(zhí)行信號(hào)數(shù)據(jù)解碼模塊,信號(hào)數(shù)據(jù)解碼模塊根據(jù)步驟30中獲取到的定時(shí)器計(jì)數(shù)值,通過磁道解碼算法對(duì)采集的磁道信號(hào)數(shù)據(jù)進(jìn)行解碼;
[0011]步驟60、執(zhí)行解碼結(jié)果輸出模塊,將解碼后的結(jié)果進(jìn)行輸出顯示。
[0012]本發(fā)明具有如下優(yōu)點(diǎn):本發(fā)明通過精簡(jiǎn)硬件電路,并通過ADC采樣獲取更精確的弱磁卡信號(hào),以設(shè)計(jì)的波峰檢測(cè)算法及信號(hào)失真誤差處理方法進(jìn)行數(shù)據(jù)采集,得到可進(jìn)行磁道數(shù)據(jù)解碼的原始數(shù)據(jù),本發(fā)明降低了硬件成本,同時(shí)提高了對(duì)強(qiáng)、弱磁卡信號(hào)進(jìn)行處理的兼容性,使實(shí)用范圍更廣。
【專利附圖】
【附圖說明】
[0013]圖1為本發(fā)明方法流程示意圖。
[0014]圖2為本發(fā)明磁道信號(hào)中信號(hào)的波動(dòng)示意圖。
【具體實(shí)施方式】
[0015]請(qǐng)參閱圖1和圖2所示,本發(fā)明為一種基于ADC引腳采樣的磁卡解碼方法,所述方法需提供一級(jí)放大電路和CPU,所述CPU上建立有一讀取靜音線模塊、磁卡刷卡判斷模塊、波峰檢測(cè)模塊、判斷刷卡信號(hào)是否結(jié)束模塊、信號(hào)數(shù)據(jù)解碼模塊以及解碼結(jié)果輸出模塊;
[0016]所述方法包括如下步驟:
[0017]步驟10、將刷卡器通過一級(jí)放大電路與CPU的ADC引腳連接,在磁卡未刷卡的狀態(tài)下,通過讀取靜音線模塊連續(xù)讀取多個(gè)磁卡磁道信號(hào)對(duì)應(yīng)的ADC值,所述ADC值為在CPU的ADC引腳下所處的信號(hào)值;獲取多個(gè)ADC值的平均值,此平均值對(duì)應(yīng)的電壓作為靜音線;
[0018]步驟20、執(zhí)行磁卡刷卡判斷模塊,磁卡刷卡判斷模塊讀取CPU的ADC引腳的ADC值,若ADC值處于靜音線的電壓閾值帶之外,則表示有刷卡,進(jìn)入步驟30,若ADC值處于靜音線的電壓閾值帶之內(nèi),則表示沒刷卡,繼續(xù)讀取磁道的ADC引腳;所述靜音線的電壓閾值帶為正信號(hào)閾值線與負(fù)信號(hào)閾值線之間的范圍;所述正信號(hào)閾值線為磁道信號(hào)未刷卡時(shí)的噪聲電壓最大值+lmv的電壓,所述負(fù)信號(hào)閾值線為磁道信號(hào)未刷卡時(shí)的噪聲電壓最小值-lmv的電壓;
[0019]步驟30、執(zhí)行波峰檢測(cè)模塊,該波峰檢測(cè)模塊檢測(cè)包含波頂?shù)牟ǚ搴筒ü鹊牟ǚ?;所述波峰檢測(cè)模塊定義有一定時(shí)器,在讀取磁道各信號(hào)對(duì)應(yīng)的ADC值時(shí),該定時(shí)器均對(duì)應(yīng)存有一定時(shí)器計(jì)數(shù)值;波峰檢測(cè)模塊判斷ADC引腳的信號(hào)為正信號(hào)還是負(fù)信號(hào),為正信號(hào)時(shí),在正信號(hào)中獲取波峰,若信號(hào)存在截止失真時(shí),取截止失真部分的中點(diǎn)作為波峰,并獲得波峰的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值;為負(fù)信號(hào)時(shí),在負(fù)信號(hào)中獲取波谷,若信號(hào)存在截止失真時(shí),取截止失真部分的中點(diǎn)作為波谷,并獲得波谷的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值;所述正信號(hào)為:位于所述靜音線之上的任意一電平對(duì)應(yīng)的ADC值;負(fù)信號(hào)為:位于所述靜音線之下的任意一電平對(duì)應(yīng)的ADC值;
[0020]步驟40、執(zhí)行判斷刷卡信號(hào)是否結(jié)束模塊,通過判斷刷卡獲取信號(hào)的時(shí)間段是否大于預(yù)先設(shè)定的時(shí)間閾值,是,則刷卡信號(hào)結(jié)束,進(jìn)入步驟50 ;否,否,則繼續(xù)執(zhí)行波峰檢測(cè)模塊,即回到步驟30 ;該預(yù)先設(shè)定的時(shí)間閾值為:根據(jù)采樣率的不同,該值不同,可根據(jù)5ms的時(shí)間進(jìn)行換算成多少次采樣,將換算的次數(shù)作為時(shí)間閾值;
[0021]步驟50、執(zhí)行信號(hào)數(shù)據(jù)解碼模塊,信號(hào)數(shù)據(jù)解碼模塊根據(jù)步驟30中獲取到的定時(shí)器計(jì)數(shù)值(即得到波峰檢測(cè)結(jié)果的波峰ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值和波谷的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值),通過磁道解碼算法(該磁道解碼算法為現(xiàn)有的磁道解碼算法在此就不做詳細(xì)描述)對(duì)采集的磁道信號(hào)數(shù)據(jù)進(jìn)行解碼;
[0022]步驟60、執(zhí)行解碼結(jié)果輸出模塊,將解碼后的結(jié)果進(jìn)行輸出顯示;進(jìn)一步地:解碼后的結(jié)果進(jìn)行輸出,解碼失敗時(shí),則輸出失敗信息,解碼成功時(shí),則輸出磁道數(shù)據(jù)以及磁道數(shù)據(jù)長(zhǎng)度。
[0023]在本發(fā)明中,一次刷卡操作有若干個(gè)峰值;所述步驟30中,為正信號(hào)時(shí),在正信號(hào)中獲取波峰,若信號(hào)存在截止失真時(shí),取截止失真部分的中點(diǎn)作為波峰,并獲得波峰的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值;具體為:在讀取到的磁道信號(hào)的ADC值小于負(fù)信號(hào)閾值線或者刷卡獲取信號(hào)的時(shí)間段大于所述預(yù)先設(shè)定的時(shí)間閾值時(shí)停止讀取ADC值;若讀取到的ADC值存在其中一個(gè)大于或等于正失真閾值線時(shí),取該ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值更新至一峰值計(jì)數(shù)值變量中;所述步驟50中要獲取的定時(shí)器計(jì)數(shù)值即從峰值計(jì)數(shù)值變量得到;或者若讀取到的ADC值存在其中兩個(gè)或兩個(gè)以上大于或等于正失真閾值線時(shí),取第一個(gè)與最后一個(gè)大于或等于正失真閾值線的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值,并將兩定時(shí)器計(jì)數(shù)值進(jìn)行平均值后更新至所述峰值計(jì)數(shù)值變量中;否則其他情況下,取最大的ADC值(若存在多個(gè)最大值,則取第一個(gè))對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值更新至所述峰值計(jì)數(shù)值變量中。
[0024]所示步驟30中,為負(fù)信號(hào)時(shí),在負(fù)信號(hào)中獲取波谷,若信號(hào)存在截止失真時(shí),取截止失真部分的中點(diǎn)作為波谷,并獲得波谷的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值;具體為:在讀取到的磁道信號(hào)的ADC值大于正信號(hào)閾值線或者刷卡獲取信號(hào)的時(shí)間段大于所述預(yù)先設(shè)定的時(shí)間閾值時(shí)停止讀取ADC值;若讀取到的ADC值存在其中一個(gè)小于或等于負(fù)失真閾值線時(shí),取該ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值更新至一峰值計(jì)數(shù)值變量中;所述步驟50中要獲取的定時(shí)器計(jì)數(shù)值即從峰值計(jì)數(shù)值變量得到;或者若讀取到的ADC值存在其中兩個(gè)或兩個(gè)以上小于或等于正失真閾值線時(shí),取第一個(gè)與最后一個(gè)小于或等于正失真閾值線的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值,并將兩定時(shí)器計(jì)數(shù)值進(jìn)行平均值后更新至所述峰值計(jì)數(shù)值變量中;否則其他情況下,取最小的ADC值(若存在多個(gè)最大值,則取第一個(gè))對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值更新至所述峰值計(jì)數(shù)值變量中。
[0025]總之,本發(fā)明降低了硬件成本,同時(shí)提高了對(duì)強(qiáng)、弱磁卡信號(hào)進(jìn)行處理的兼容性,使實(shí)用范圍更廣。
[0026]以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請(qǐng)專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。
【權(quán)利要求】
1.一種基于ADC引腳采樣的磁卡解碼方法,其特征在于:所述方法需提供一級(jí)放大電路和CPU,所述CPU上建立有一讀取靜音線模塊、磁卡刷卡判斷模塊、波峰檢測(cè)模塊、判斷刷卡信號(hào)是否結(jié)束模塊、信號(hào)數(shù)據(jù)解碼模塊以及解碼結(jié)果輸出模塊; 所述方法包括如下步驟: 步驟10、將刷卡器通過一級(jí)放大電路與CPU的ADC引腳連接,在磁卡未刷卡的狀態(tài)下,通過讀取靜音線模塊連續(xù)讀取多個(gè)磁卡磁道信號(hào)對(duì)應(yīng)的ADC值,所述ADC值為在CPU的ADC引腳下所處的信號(hào)值;獲取多個(gè)ADC值的平均值,此平均值對(duì)應(yīng)的電壓作為靜音線; 步驟20、執(zhí)行磁卡刷卡判斷模塊,磁卡刷卡判斷模塊讀取CPU的ADC引腳的ADC值,若ADC值處于靜音線的電壓閾值帶之外,則表示有刷卡,進(jìn)入步驟30,若ADC值處于靜音線的電壓閾值帶之內(nèi),則表示沒刷卡,繼續(xù)讀取磁道的ADC引腳;所述靜音線的電壓閾值帶為正信號(hào)閾值線與負(fù)信號(hào)閾值線之間的范圍;所述正信號(hào)閾值線為磁道信號(hào)未刷卡時(shí)的噪聲電壓最大值+Imv的電壓,所述負(fù)信號(hào)閾值線為磁道信號(hào)未刷卡時(shí)的噪聲電壓最小值-1mv的電壓; 步驟30、執(zhí)行波峰檢測(cè)模塊,所述波峰檢測(cè)模塊定義有一定時(shí)器,在讀取磁道各信號(hào)對(duì)應(yīng)的ADC值時(shí),該定時(shí)器均對(duì)應(yīng)存有一定時(shí)器計(jì)數(shù)值;波峰檢測(cè)模塊判斷ADC引腳的信號(hào)為正信號(hào)還是負(fù)信號(hào),為正信號(hào)時(shí),在正信號(hào)中獲取波峰,若信號(hào)存在截止失真時(shí),取截止失真部分的中點(diǎn)作為波峰,并獲得波峰的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值;為負(fù)信號(hào)時(shí),在負(fù)信號(hào)中獲取波谷,若信號(hào)存在截止失真時(shí),取截止失真部分的中點(diǎn)作為波谷,并獲得波谷的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值;所述正信號(hào)為:位于所述靜音線之上的任意一電平對(duì)應(yīng)的ADC值;負(fù)信號(hào)為:位于所述靜音線之下的任意一電平對(duì)應(yīng)的ADC值; 步驟40、執(zhí)行判斷刷卡信號(hào)是否結(jié)束模塊,通過判斷刷卡獲取信號(hào)的時(shí)間段是否大于預(yù)先設(shè)定的時(shí)間閾值,是,則刷卡信號(hào)結(jié)束,進(jìn)入步驟50 ;否,則繼續(xù)執(zhí)行波峰檢測(cè)模塊,SP回到步驟30 ; 步驟50、執(zhí)行信號(hào)數(shù)據(jù)解碼模塊,信號(hào)數(shù)據(jù)解碼模塊根據(jù)步驟30中獲取到的定時(shí)器計(jì)數(shù)值,通過磁道解碼算法對(duì)采集的磁道信號(hào)數(shù)據(jù)進(jìn)行解碼; 步驟60、執(zhí)行解碼結(jié)果輸出模塊,將解碼后的結(jié)果進(jìn)行輸出顯示。
2.根據(jù)權(quán)利要求1所述的一種基于ADC引腳采樣的磁卡解碼方法,其特征在于:所述步驟60進(jìn)一步包括:解碼后的結(jié)果進(jìn)行輸出,解碼失敗時(shí),則輸出失敗信息,解碼成功時(shí),則輸出磁道數(shù)據(jù)以及磁道數(shù)據(jù)長(zhǎng)度。
3.根據(jù)權(quán)利要求1所述的一種基于ADC引腳采樣的磁卡解碼方法,其特征在于:所示步驟30中,為正信號(hào)時(shí),在正信號(hào)中獲取波峰,若存在截止失真則取截止失真部分的中點(diǎn)作為波峰,并獲得波峰的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值;具體為:在讀取到的磁道信號(hào)的ADC值小于負(fù)信號(hào)閾值線或者刷卡獲取信號(hào)的時(shí)間段大于所述預(yù)先設(shè)定的時(shí)間閾值時(shí)停止讀取ADC值;若讀取到的ADC值存在其中一個(gè)大于或等于正失真閾值線時(shí),取該ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值更新至一峰值計(jì)數(shù)值變量中;所述步驟50中要獲取的定時(shí)器計(jì)數(shù)值即從峰值計(jì)數(shù)值變量得到;或者若讀取到的ADC值存在其中兩個(gè)或兩個(gè)以上大于或等于正失真閾值線時(shí),取第一個(gè)與最后一個(gè)大于或等于正失真閾值線的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值,并將兩定時(shí)器計(jì)數(shù)值進(jìn)行平均值后更新至所述峰值計(jì)數(shù)值變量中;否則其他情況下,取最大的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值更新至所述峰值計(jì)數(shù)值變量中。
4.根據(jù)權(quán)利要求1所述的一種基于ADC引腳采樣的磁卡解碼方法,其特征在于:所示步驟30中,為負(fù)信號(hào)時(shí),在負(fù)信號(hào)中獲取波谷,并獲得波谷的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值;具體為:在讀取到的磁道信號(hào)的ADC值大于正信號(hào)閾值線或者刷卡獲取信號(hào)的時(shí)間段大于所述預(yù)先設(shè)定的時(shí)間閾值時(shí)停止讀取ADC值;若讀取到的ADC值存在其中一個(gè)小于或等于負(fù)失真閾值線時(shí),取該ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值更新至一峰值計(jì)數(shù)值變量中;所述步驟50中要獲取的定時(shí)器計(jì)數(shù)值即從峰值計(jì)數(shù)值變量得到;或者若讀取到的ADC值存在其中兩個(gè)或兩個(gè)以上小于或等于正失真閾值線時(shí),取第一個(gè)與最后一個(gè)小于或等于正失真閾值線的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值,并將兩定時(shí)器計(jì)數(shù)值進(jìn)行平均值后更新至所述峰值計(jì)數(shù)值變量中;否則其他情況下,取最小的ADC值對(duì)應(yīng)的定時(shí)器計(jì)數(shù)值更新至所述峰值計(jì)數(shù)值變量中。
【文檔編號(hào)】G06K7/00GK104424450SQ201310364120
【公開日】2015年3月18日 申請(qǐng)日期:2013年8月19日 優(yōu)先權(quán)日:2013年8月19日
【發(fā)明者】蔣聲障, 林志偉, 周潮, 陳成秋 申請(qǐng)人:福建升騰資訊有限公司