磁卡解码方法

文档序号:6370310阅读:732来源:国知局
专利名称:磁卡解码方法
技术领域
本发明涉及解码领域,尤其涉及一种磁卡解码方法。
背景技术
传统的磁卡软解码方案是在硬件上,将磁头接到放大整形电路,以得到数字信号,然后输入到处理器;在软件上,通过记录输入的数字信号每个电平的持续时间(即脉宽),根据脉宽的关系实现软解码。还有一种方案是使用专用磁卡解码芯片,将刷卡产生的模拟信号,直接识别并存储成CPU能够处理的0/1序列,然后根据磁卡解码芯片反馈的成功信号,启动软件读取磁卡解码芯片内存储的0/1序列数据。但上述技术存在如下缺点,缺点I :放大整形电路或专用磁卡解码芯片的硬件成本相对较高。缺点2 :灵活度较低,硬件输出的数字波形的质量取决于放大与整形电路的设计, 当硬件设计不够好时,某些卡的输出波形不正常,通过软件方法能够解决的范围要比直接使用原始波形小得多。·缺点3 :采用专用磁卡解码芯片的磁卡阅读设备,对于磁卡的标准兼容性有一定限制,如果某个非标准磁卡无法被解码芯片识别时,并不能通过简单升级软件的方式解决。

发明内容
本发明主要解决的技术问题是提供一种磁卡解码方法,使用软件处理替代了硬件磁卡解码芯片,降低了设备的生产制造成本,并有更好的灵活性。为解决上述技术问题,本发明采用的一个技术方案是提供一种磁卡解码方法,包括以下步骤SI、采用极值法将采样到的模拟波形转换成初始数字波形,并采用曲线拟合的方法对所述初始数字波形的脉宽进行修正,得到修正后数字波形;S2、将磁卡的前导比特O的脉宽作为初始基准脉宽,使用所述初始基准脉宽对修正后数字波形的第一个脉宽进行判别,并由初始基准脉宽根据EWMA公式得到第二基准脉宽;以第二基准脉宽为基准对修正后数字波形的第二个脉宽进行判别,再由第二基准脉宽根据EWMA公式调整下一个基准脉宽;以下一个基准脉宽为基准对修正后数字波形的下一个脉宽进行判别;以及,重复执行调整基准脉宽及根据相应基准脉宽对修正后数字波形的脉宽进行判别的过程,直至修正后数字波形的脉宽全部被判别完;其中,上述判别过程是指以所述基准脉宽为基准,判别修正后数字波形的相应脉宽是对应比特I的半位还是比特O ;其中,比特I由两个连续脉宽构成,比特O由一个脉宽构成;
S3、根据步骤S2的判别结果,将修正后数字波形转换为对应的0/1比特序列;S4、根据磁卡标准对所述比特序列解码。其中,所述步骤SI是通过将磁头接到MCU的差分ADC上进行采样的。其中,所述步骤S4之后还包括步骤S5 :若解码失败,则将步骤SI中修正后得到的数字波形按采样方向的相反方向取出,并执行步骤S2。
其中,所述步骤SI之前还包括以下步骤S0、判断是否开始进行采样;若否,则继续判断是否开始进行采样;若是,则进行步骤Si。其中,当判断开始进行采样后判断相邻两个采样点之间的电压值,并在连续几百个米样点中任意两个米样点之间的电压差值小于ImV时,结束米样。其中,所述步骤SI中采用极值法将采样到的模拟波形转换成初始数字波形具体为,将极大值点归到高电平,从该点开始之后的点都归到高电平,直到遇到极小值点; 将极小值点归到低电平,从该点开始之后的点都归到低电平,直到遇到极大值点;得到初始数字波形。其中,所述步骤SI中采用曲线拟合的方法对所述初始数字波形的脉宽进行修正包括以下步骤,S1021、计算出曲线多项式极值点的位置χ ;S1022、根据χ与采样点极值点的位置关系修正初始数字波形的脉宽。其中,所述步骤S2中以所述基准脉宽对修正后数字波形的脉宽进行判别,及步骤 S3中将修正后数字波形转换为对应的0/1比特序列,具体包括以下步骤S301、判断当前脉宽与当前基准脉宽的比例是否处于[kl,k2]内;若是,则将当前脉宽转换为比特0,并调整基准脉宽,继续进行对下一脉宽的判别;若否,则进行步骤S302 ;S302、判断当前脉宽与当前基准脉宽的比例是处于[k3,+内,是处于[k2,k3] 内,还是处于(0,kl]内;若当前脉宽与当前基准脉宽的比例处于[k3,+ °ο)内,则放弃当前脉宽,并终止此次解码过程或调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若当前脉宽与当前基准脉宽的比例处于[k2,k3]内,则将当前脉宽转换为比特0, 并在调整基准脉宽时增加调整系数,返回步骤S301,继续进行对下一脉宽的判别;若当前脉宽与当前基准脉宽的比例处于(0,kl]内,则判断后一个脉宽与当前基准脉宽的比例是否处于(0,kl];若是,则将当前脉宽和后一个脉宽转换为比特1,并调整基准脉宽,返回步骤S301 ;若否,则进行步骤S303 ;S303、判断后一个脉宽与当前基准脉宽的比例是处于[k3,+ m)内,还是处于 [kl, k3]内;若后一个脉宽与当前基准脉宽的比例处于[k3,+ m)内,则终止此次解码过程或放弃当前脉宽,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若后一个脉宽与当前基准脉宽的比例处于[kl,k3]内,则判断前一个脉宽与前一个基准脉宽的比例是否处于[kl,k2]内;若否,则执行步骤S306 ;若是,则判断前一个脉宽是否小于后一个脉宽;若是,则进行步骤S304 ;若否,则进行步骤S305 ;
S304、判断当前脉宽与前一个脉宽之和与当前基准脉宽的比例是否处于[kl,k2] 内;若是,则将当前脉宽和后一个脉宽转换为比特1,将后一个脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;S305、判断当前脉宽与前一个脉宽之和与当前基准脉宽的比例是否处于[kl,k2] 内;若是,则将当前脉宽和前一个脉宽转换为比特1,将后一个脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;S306、判断前第二个脉宽与前一个基准脉宽的比例是否处于(0,kl]内;若是,则进行步骤S307 ;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;S307、判断当前脉宽、前一个脉宽和前第二个脉宽的脉宽之和,与前一个基准脉宽的比例是否处于[kl,k2]内;若是,则将后一个脉宽和后第二个脉宽均转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特 0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;其中,0〈kl〈l〈k2〈k3。 本发明的有益效果是区别于现有技术中硬件成本较高,灵活性较低,对磁卡的标准兼容性有一定的限制等缺点,本发明提供一种磁卡解码方法,采集的是离散时间的磁卡模拟波形,利用极值法得到原始模拟波形的信息,并采用曲线拟合的方法修正初始数字波形,从而精确计算峰值,使数字波形脉宽的计算更准确。如此可以看出,本发明能够灵活地选择将模拟波形转换成数字波形的方法。且本发明采用动态的当前基准脉宽作为判别所述数字波形当前脉宽对应比特I的半位或比特O的基准,有效地解决了由于硬件设备的不完善、磁卡移动速度不均匀而导致的读取数据错误的概率。此外,由于本发明是将磁头接到MCU的差分ADC上进行采样的,而差分ADC是MCU 自带的一个模块,所以在很大程度上解决了硬件成本较高的问题。


图I是本发明磁卡解码方法的一流程图;图2是本发明采样的部分磁卡数据;图3是从图2截取出的部分波形的放大图,其中,圆点表示实际的采样点;图4是对图3中A处五个采样点使用曲线拟合方法后的结果;图5是使用极值法和曲线拟合方法后,对图2中部分数据转换的结果;图6是本发明磁卡解码方法中脉宽转换为0/1比特序列的方法的部分流程图;图7是本发明磁卡解码方法中脉宽转换为0/1比特序列的方法的部分流程图;图8是本发明磁卡解码方法中脉宽转换为0/1比特序列的方法的部分流程图。
具体实施例方式为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
请参阅图1,本发明提供一种磁卡解码方法,包括以下步骤SI、采用极值法将采样到的模拟波形转换成初始数字波形,并采用曲线拟合的方法对所述初始数字波形的脉宽进行修正,得到修正后数字波形;S2、将磁卡的前导比特O的脉宽作为初始基准脉宽,使用所述初始基准脉宽对修正后数字波形的第一个脉宽进行判别,并由初始基准脉宽根据EWMA公式得到第二基准脉宽;以第二基准脉宽为基准对修正后数字波形的第二个脉宽进行判别,再由第二基准脉宽根据EWMA公式调整下一个基准脉宽;以下一个基准脉宽为基准对修正后数字波形的下一个脉宽进行判别;以及,重复执行调整基准脉宽及根据相应基准脉宽对修正后数字波形的脉宽进行判别的过程,直至修正后数字波形的脉宽全部被判别完;其中,上述判别过程是指以所述基准脉宽为基准,判别修正后数字波形的相应脉宽是对应比特I的半位还是比特O ;其中,比特I由两个连续脉宽构成,比特O由一个脉宽构成;S3、根据步骤S2的判别结果,将修正后数字波形转换为对应的0/1比特序列;S4、根据磁卡标准对所述比特序列解码,得到ASCII码数据。在一具体的实施例中,步骤S4是根据IS07811/1-7811/5标准对所述比特序列解码,得到ASCII码数据的。在另外的实施例中,磁卡标准的选择可根据实际情况选择,其类型不仅有IS07811,还有JIS II,还有IBM等等,或是其他国家还有自己的本地标准。本发明采集的是离散时间的磁卡模拟波形,利用极值法得到原始模拟波形的信息,并采用曲线拟合的方法修正初始数字波形,从而精确计算峰值,使数字波形脉宽的计算更准确。如此可以看出,本发明能够灵活地选择将模拟波形转换成数字波形的方法。且本发明采用动态的当前基准脉宽作为判别所述数字波形当前脉宽对应比特I的半位或比特O 的基准,有效地解决了由于硬件设备的不完善、磁卡移动速度不均匀而导致的读取数据错误的概率。在这里,EWMA公式为Tnew=fac*Told+(1-fac)*Pulse。其中,fac 为 O 到 I 的系数,Told为当前参考脉宽,Pulse为转换成比特0/1的当前脉宽,Tnew为新的参考脉宽。在这里,系数fac是个经验权值,它设得大,基准脉宽的改变速度就比较慢,它主要由实际测试所得,故在本发明中,系数fac的具体值主要由实际情况决定。在本发明中,所述步骤SI是通过将磁头接到MCU的差分ADC上进行采样的。在本领域中,MCU指的是微处理器单元,差分ADC指的是支持差分输入的模数转换器。由于差分 ADC是MCU自带的一个模块,所以在很大程度上解决了硬件成本较高的问题。本发明需要将模拟波形转换成数字波形,根据数字波形每个电平的持续时间将电平转换成01序列,而每个电平的持续时间则指的是脉宽。采样间隔指的是采样的时间间隔,比如采样速度为100KSPS/S,表示I秒采样100K次,那么采样间隔就是10us。其中,所述步骤SI中采用极值法将采样到的模拟波形转换成初始数字波形具体为,
将极大值点归到高电平,从该点开始之后的点都归到高电平,直到遇到极小值点; 将极小值点归到低电平,从该点开始之后的点都归到低电平,直到遇到极大值点;得到初始数字波形。然后记录每个电平的点数,将其乘以采样间隔,便可以得到初始数字波形的脉宽。 请参阅图2至图5,在上述的某些实施例中,本发明先采用的是极值法把采样到的模拟波形转换成初始数字波形,过程如下设y[i]为第i个采样点,那么,当y[i]大于一定幅值,y[i]>y[i _ I]并且y[i]>y[i+1]时,y[i]为极大值,表示高电平的开始;当y[i]小于一定幅值,y[i]〈y[i - I]并且y[i]〈y[i+l]时,y[i]为极小值,表示低电平的电始。将极大值点归到高电平,从该点开始之后的点都归到高电平,直到遇到极小值点; 将极小值点归到低电平,从该点开始之后的点都归到低电平,直到遇到极大值点;得到初始数字波形,然后记录每个电平的点数,将其乘以采样间隔,得到初始数字波形的脉宽。由于上述初始数字波形是直接通过采样点得到的,所以上述利用极值法能够得到更多的原始模拟波形的信息。正如图2和图3中所示的通过极值法得到的波形图,极值附近的波形并不平滑由于数字波形的脉宽是转换成0/1序列的唯一依据,它的准确性直接影响到结果的正确性, 所以,只根据采样点的数量确定脉宽太过粗糙。因此在优选的实施例中,本发明采用曲线拟合的方法来修正初始数字波形的脉宽,从而精确计算峰值,使数字波形脉宽的计算更准确。 即所述步骤SI中采用曲线拟合的方法对所述初始数字波形的脉宽进行修正包括以下步骤,·S1021、计算出曲线多项式极值点的位置χ ;S1022、根据χ与采样点极值点的位置关系修正初始数字波形的脉宽。在一具体的实施例中,本发明采用二次多项式y=ax2+bx+C来对采样点进行曲线拟合,首先通过图3中的五个采样点求出a,b,c的值,并计算出该二次多项式实际极值位置 x=-b/2a,然后根据实际极值位置修正初始数字波形的脉宽。修正过程如下由于采样间隔是固定的,设为T。而二次多项式的实际极值位置χ 总是位于连续的两个采样点c,c+l之间,设为[\,\+1],如果χ小于极值点位置,即χ处于初始数字波形中极值点之前,则说明此时\+1为初始数字波形中极值点,同时也表明了模拟后的当前脉宽的极值实际上不在\+1点上,而在χ上,为了保证模拟后当前脉宽的极值点χ 能够处于当前脉宽上,则需将从X到初始数字波形极值点Xm的时间间隔补充到当前脉宽, 前面一个脉宽自然得减去对应的间隔(此时C+1为极值点),即将T*(Xc;+1 - χ)补充到当前脉宽,前一个脉宽相应地减去Τ* (xc+1-x)。同理,如果χ大于等于极值点位置,此时c为极值点,则将T* (x - xc)补充到前一个脉宽,当前脉宽相应地减去Τ* (x-xc)。通过上述曲线拟合修正初始数字波形的脉宽的过程,使数字波形脉宽的计算更准确,请参阅图4和图5,图4中的曲线是使用二次曲线对图3中5个采样点拟合的结果,求出的实际极值位置x=_b/2a在图4中用竖线表示。图5使用极值法和曲线拟合方法后,对图 2中部分数据转换的结果。通过极值法与曲线按拟合方法的结合使用,能够精确计算峰值, 使数字波形脉宽的计算更准确。在本发明中,采用的曲线的多项式不仅仅只包括二次多项式,还包括三次多项式 y=ax3+bx2+cx+d 等。
本发明采用的磁卡编码规则为前导0+磁卡数据+后导0,其中前、后导O的个数由制卡设备决定。请参阅图6至图8,具体的编码过程中0〈kl〈l〈k2〈k3,所述步骤S2中以所述基准脉宽对修正后数字波形的脉宽进行判别,及步骤S3中将修正后数字波形转换为对应的0/1比特序列,具体包括以下步骤S301、判断当前脉宽与当前基准脉宽的比例是否处于[kl,k2]内;若是,则将当前脉宽转换为比特0,并调整基准脉宽,继续进行对下一脉宽的判别;若否,则进行步骤S302 ;S302、判断当前脉宽与当前基准脉宽的比例是处于[k3,+内,是处于[k2,k3] 内,还是处于(0,kl]内;若当前脉宽与当前基准脉宽的比例处于[k3,+ °ο)内,则放弃当前脉宽,并终止此次解码过程或调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若当前脉宽与当前基准脉宽的比例处于[k2,k3]内,则将当前脉宽转换为比特0, 并在调整基准脉宽时增加调整系数,返回步骤S301,继续进行对下一脉宽的判别;若当前脉宽与当前基准脉宽的比例处于(0,kl]内,则判断后一个脉宽与当前基准脉宽的比例是否处于(0,kl];若是,则将当前脉宽和后一个脉宽转换为比特1,并调整基准脉宽,返回步骤S301 ;若否,则进行步骤S303 ;S303、判断后一个脉宽与当前基准脉宽的比例是处于[k3,+ m)内,还是处于 [kl, k3]内;
·
若后一个脉宽与当前基准脉宽的比例处于[k3,+ m)内,则终止此次解码过程或放弃当前脉宽,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若后一个脉宽与当前基准脉宽的比例处于[kl,k3]内,则判断前一个脉宽与前一个基准脉宽的比例是否处于[kl,k2]内;若否,则执行步骤S306 ;若是,则判断前一个脉宽是否小于后一个脉宽;若是,则进行步骤S304 ;若否,则进行步骤S305 ;S304、判断当前脉宽与前一个脉宽之和与当前基准脉宽的比例是否处于[kl,k2] 内;若是,则将当前脉宽和后一个脉宽转换为比特1,将后一个脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;S305、判断当前脉宽与前一个脉宽之和与当前基准脉宽的比例是否处于[kl,k2] 内;若是,则将当前脉宽和前一个脉宽转换为比特1,将后一个脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;S306、判断前第二个脉宽与前一个基准脉宽的比例是否处于(0,kl]内;若是,则进行步骤S307 ;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;S307、判断当前脉宽、前一个脉宽和前第二个脉宽的脉宽之和,与前一个基准脉宽的比例是否处于[kl,k2]内;若是,则将后一个脉宽和后第二个脉宽均转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特 0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别。在某些的实施例中,60%〈1^1〈80%,110%〈1^2〈130%,160%〈1^3〈180%。kl就固定设成(60%, 80%)的某个数值,k2,k3同理,然后就不再改变了。其kl,k2,k3的具体选值由实际测试所得,故在本发明中,kl, k2,k3的具体值主要由实际情况决定。在一具体的实施例中,kl为75%,k2为125%,k3为175%。根据EWMA公式 “Tnew=fac*Told+(l-fac)*Pulse”调整下一个参考脉宽。其中,fac为O到I的系数,在本实施例中,举例为O. 5, Told为当前参考脉宽,Pulse为转换成逻辑01的脉宽,Tnew为新的参考脉宽。本发明中,最初始的脉宽认定为前导0,将其作为初始基准脉宽,然后取得第一个脉宽,将其与初始基准脉宽比较,如果比例在75°/Γ 25%之间,将该脉宽转换成逻辑O ;如果比例低于75%,再判断后一个脉宽与后一个基准脉宽的比例,如果低于75%,则这2个脉宽转换成逻辑I。在转换过程中有时会出现异常情况,比如当前脉宽与当前基准脉宽的比例处于125% 175%,此时该当时脉宽仍转换成逻辑0,但是调整下一个基准脉宽时增大系数 fac (比如将原来的O. 5调成O. 7);若比例超过175%时,则放弃当前脉宽的编码并继续进行下一个脉宽的编码,或终止此次解码过程,返回提示出错。还有一种情况是出现单个短脉宽,后面出现了长脉宽,导致这个短脉宽被孤立。在这里,当前脉宽与当前基准脉宽的比例在75°/Γ 25%之间的脉宽称为长脉宽,比例在0% 75%之间的脉宽称为短脉宽。这种情况比较复杂,分成以下几种情况处理(以下将长脉宽用 I表不,短脉宽用s表不)(I)将 Ilsl 转成 Issl : 比如449 364 107 447(此时449参考脉宽为451),这里364与107应该转换成逻辑1,但是364被转成逻辑0,导致107被孤立。修正过程为如果前第2个脉宽(364)小于当前脉宽(447),并且前2个脉宽之和比例在长脉宽范围内就将逻辑O (由364转换的)修正为逻辑1,然后将当前脉宽也转成逻辑O。(2)将 Ilsl 转成 Ilss:比如449 447 107 364 (此时449参考脉宽为451),这里364与107应该转换成逻辑1,但是364被判定为长脉宽,107会被孤立。修正过程为,如果前第2个脉宽为长脉宽, 当前脉宽小于前第2个脉宽,并且最后这2个脉宽之和比例在长脉宽范围内,就将这2个脉宽转换成逻辑I。(3)将 lsssl_>lssll:比如2782 1306 1251 1953 2972(此时2782参考脉宽为2693),这里1953应该是个长脉宽,但是却被判定为短脉宽。修正过程为如果最后一个逻辑为I (由1306和1251 转换的),如果前I个脉宽(1953)与转换成该逻辑的这2个脉宽之和的比在长脉宽范围内, 就将前I个脉宽转换成逻辑0,当前脉宽也转换成逻辑O。(4)其他情况,一律将孤立的短脉宽转成为逻辑O。在某些实施例中,磁卡的刷卡方向可能为反向刷卡,那么按上述过程则会解码失败,此时则将步骤SI中修正后得到的数字波形按采样方向的相反方向取出,并执行步骤S2 及步骤S2后面的步骤进行磁卡解码。为了更好地理解上述过程,在此举例说明假如磁卡的刷卡方向为从左到右,那么采集到的采样点的方向也是从左到右,解码的顺序也是从左到右,而此种解码顺序是正确的解码顺序。如果磁卡的刷卡方向变为从右到左,那么按从左到右的解码顺序必然会失败,此时将采集到的采样点波形从右到左取出,再进行解码,这样就可以顺得解码了。在某些实施例中 ,所述步骤SI之前还包括以下步骤S0、判断是否开始进行采样; 若否,则继续判断是否开始进行采样;若是,则进行步骤Si。在未进行采样时,采样电压总在O左右,因此当检测到采样电压高过阈值时,认为是刷卡的开始,此时开始记录采样数据。在这里,阈值应该设成高于噪声范围(ImV以内),比如I. 5mV,但也不能太大,因为有些卡的信号较弱。在某些实施例中,当判断开始进行采样后判断相邻两个采样点之间的电压值,并在连续几百个采样点中任意两个采样点之间的电压差值小于ImV时,结束采样。综上所述,区别于现有技术中硬件成本较高,灵活性较低,对磁卡的标准兼容性有一定的限制等缺点,本发明提供一种磁卡解码方法,采集的是离散时间的磁卡模拟波形,利用极值法得到原始模拟波形的信息,并采用曲线拟合的方法修正初始数字波形,从而精确计算峰值,使数字波形脉宽的计算更准确。如此可以看出,本发明能够灵活地选择将模拟波形转换成数字波形的方法。且本发明采用动态的当前基准脉宽作为判别所述数字波形当前脉宽对应比特I的半位或比特O的基准,有效地解决了由于硬件设备的不完善、磁卡移动速度不均匀而导致的读取数据错误的概率。此外,由于本发明是将磁头接到MCU的差分ADC 上进行采样的,而差分ADC是MCU自带的一个模块,所以在很大程度上解决了硬件成本较高的问题。以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种磁卡解码方法,其特征在于,包括以下步骤51、采用极值法将采样到的模拟波形转换成初始数字波形,并采用曲线拟合的方法对所述初始数字波形的脉宽进行修正,得到修正后数字波形;52、将磁卡的前导比特O的脉宽作为初始基准脉宽,使用所述初始基准脉宽对修正后数字波形的第一个脉宽进行判别,并由初始基准脉宽根据EWMA公式得到第二基准脉宽;以第二基准脉宽为基准对修正后数字波形的第二个脉宽进行判别,再由第二基准脉宽根据EWMA公式调整下一个基准脉宽;以下一个基准脉宽为基准对修正后数字波形的下一个脉宽进行判别;以及,重复执行调整基准脉宽及根据相应基准脉宽对修正后数字波形的脉宽进行判别的过程,直至修正后数字波形的脉宽全部被判别完;其中,上述判别过程是指以所述基准脉宽为基准,判别修正后数字波形的相应脉宽是对应比特I的半位还是比特O ;其中,比特I由两个连续脉宽构成,比特O由一个脉宽构成;53、根据步骤S2的判别结果,将修正后数字波形转换为对应的0/1比特序列;54、根据磁卡标准对所述比特序列解码。
2.根据权利要求I所述的磁卡解码方法,其特征在于,所述步骤SI是通过将磁头接到 MCU的差分ADC上进行采样的。
3.根据权利要求I所述的磁卡解码方法,其特征在于,所述步骤S4之后还包括步骤 S5 :若解码失败,则将步骤SI中修正后得到的数字波形按采样方向的相反方向取出,并执行步骤S2。
4.根据权利要求I至3任一项所述的磁卡解码方法,其特征在于,所述步骤SI之前还包括以下步骤S0、判断是否开始进行采样;若否,则继续判断是否开始进行采样;若是,则进行步骤SI。
5.根据权利要求4所述的磁卡解码方法,其特征在于,当判断开始进行采样后判断相邻两个采样点之间的电压值,并在连续几百个采样点中任意两个采样点之间的电压差值小于ImV时,结束米样。
6.根据权利要求I所述的磁卡解码方法,其特征在于,所述步骤SI中采用极值法将采样到的模拟波形转换成初始数字波形具体为,将极大值点归到高电平,从该点开始之后的点都归到高电平,直到遇到极小值点;将极小值点归到低电平,从该点开始之后的点都归到低电平,直到遇到极大值点;得到初始数字波形。
7.根据权利要求I所述的磁卡解码方法,其特征在于,所述步骤SI中采用曲线拟合的方法对所述初始数字波形的脉宽进行修正包括以下步骤,51021、计算出曲线多项式极值点的位置χ;51022、根据χ与采样点极值点的位置关系修正初始数字波形的脉宽。
8.根据权利要求I所述的磁卡解码方法,其特征在于,所述步骤S2中以所述基准脉宽对修正后数字波形的脉宽进行判别,及步骤S3中将修正后数字波形转换为对应的0/1比特序列,具体包括以下步骤S301、判断当前脉宽与当前基准脉宽的比例是否处于[kl,k2]内;若是,则将当前脉宽转换为比特0,并调整基准脉宽,继续进行对下一脉宽的判别;若否,则进行步骤S302 ;S302、判断当前脉宽与当前基准脉宽的比例是处于[k3,+m)内,是处于[k2,k3]内,还是处于(O, kl]内;若当前脉宽与当前基准脉宽的比例处于[k3,+ °o)内,则放弃当前脉宽,并终止此次解码过程或调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若当前脉宽与当前基准脉宽的比例处于[k2,k3]内,则将当前脉宽转换为比特O,并在调整基准脉宽时增加调整系数,返回步骤S301,继续进行对下一脉宽的判别;若当前脉宽与当前基准脉宽的比例处于(O,kl]内,则判断后一个脉宽与当前基准脉宽的比例是否处于(O,kl];若是,则将当前脉宽和后一个脉宽转换为比特1,并调整基准脉宽,返回步骤S301 ;若否,则进行步骤S303 ;S303、判断后一个脉宽与当前基准脉宽的比例是处于[k3,+m)内,还是处于[kl,k3] 内;若后一个脉宽与当前基准脉宽的比例处于[k3,+ m)内,则终止此次解码过程或放弃当前脉宽,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若后一个脉宽与当前基准脉宽的比例处于[kl,k3]内,则判断前一个脉宽与前一个基准脉宽的比例是否处于[kl,k2]内;若否,则执行步骤S306 ;若是,则判断前一个脉宽是否小于后一个脉宽;若是,则进行步骤S304 ;若否,则进行步骤S305 ;S304、判断当前脉宽与前一个脉宽之和与当前基准脉宽的比例是否处于[kl,k2]内; 若是,则将当前脉宽和后一个脉宽转换为比特1,将后一个脉宽转换为比特O,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特O,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;S305、判断当前脉宽与前一个脉宽之和与当前基准脉宽的比例是否处于[kl,k2]内; 若是,则将当前脉宽和前一个脉宽转换为比特1,将后一个脉宽转换为比特O,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特O,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;S306、判断前第二个脉宽与前一个基准脉宽的比例是否处于(0,kl]内;若是,则进行步骤S307 ;若否,则将当前脉宽转换为比特O,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;S307、判断当前脉宽、前一个脉宽和前第二个脉宽的脉宽之和,与前一个基准脉宽的比例是否处于[kl,k2]内;若是,则将后一个脉宽和后第二个脉宽均转换为比特O,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特O,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;其中,0〈kl〈l〈k2〈k3。
全文摘要
本发明公开一种磁卡解码方法,包括以下步骤S1、采用极值法将采样到的模拟波形转换成初始数字波形,并采用曲线拟合的方法对所述初始数字波形的脉宽进行修正;S2、将磁卡的前导比特0的脉宽作为初始基准脉宽,使用所述初始基准脉宽对修正后数字波形的第一个脉宽进行判别,并由初始基准脉宽根据EWMA公式得到第二基准脉宽,以第二基准脉宽为基准对修正后数字波形的第二个脉宽进行判别;重复执行调整基准脉宽及根据相应基准脉宽对修正后数字波形的脉宽进行判别的过程,直至修正后数字波形的脉宽全部被判别完;S3、根据步骤S2的判别结果,将修正后数字波形转换为对应的0/1比特序列;S4、根据磁卡标准对所述比特序列解码。
文档编号G06K7/08GK102722690SQ20121016769
公开日2012年10月10日 申请日期2012年5月25日 优先权日2012年5月25日
发明者刘文灿 申请人:福建联迪商用设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1