CN102722686B - 磁卡解码方法 - Google Patents
磁卡解码方法 Download PDFInfo
- Publication number
- CN102722686B CN102722686B CN201210165732.7A CN201210165732A CN102722686B CN 102722686 B CN102722686 B CN 102722686B CN 201210165732 A CN201210165732 A CN 201210165732A CN 102722686 B CN102722686 B CN 102722686B
- Authority
- CN
- China
- Prior art keywords
- pulsewidth
- current
- benchmark
- bit
- pulse width
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明公开一种磁卡解码方法,包括以下步骤:S1、采用极值法或阈值法将采样到的模拟波形转换成初始数字波形,并采用插值法对所述初始数字波形的脉宽进行修正,得到修正后数字波形;S2、取磁卡的前导比特0的脉宽的平均脉宽,将此平均脉宽作为初始基准脉宽,使用所述初始基准脉宽对修正后数字波形的第一个脉宽进行判别,并由初始基准脉宽根据EWMA公式得到第二基准脉宽,以第二基准脉宽为基准对修正后数字波形的第二个脉宽进行判别;重复执行调整基准脉宽及根据相应基准脉宽对修正后数字波形的脉宽进行判别的过程,直至修正后数字波形的脉宽全部被判别完;S3、根据S2的判别结果,将修正后数字波形转换为比特序列;S4、对所述比特序列解码。
Description
技术领域
本发明涉及解码领域,尤其涉及一种磁卡解码方法。
背景技术
传统的磁卡软解码方案是:在硬件上,将磁头接到放大整形电路,以得到数字信号,然后输入到处理器;在软件上,通过记录输入的数字信号每个电平的持续时间(即脉宽),根据脉宽的关系实现软解码。
但上述技术存在如下缺点,
缺点1:放大整形电路或专用磁卡解码芯片的硬件成本相对较高。
缺点2:灵活度较低,硬件输出的数字波形的质量取决于放大与整形电路的设计,当硬件设计不够好时,某些卡的输出波形不正常,通过软件方法能够解决的范围要比直接使用原始波形小得多。
发明内容
本发明主要解决的技术问题是提供一种磁卡解码方法,使用软件处理替代了硬件磁卡解码芯片,降低了设备的生产制造成本,并有更好的灵活性。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种磁卡解码方法,包括以下步骤:
S1、采用极值法或阈值法将采样到的模拟波形转换成初始数字波形,并采用插值法对所述初始数字波形的脉宽进行修正,得到修正后数字波形;
S2、取磁卡的前导比特0的脉宽的平均脉宽,将此平均脉宽作为初始基准脉宽,使用所述初始基准脉宽对修正后数字波形的第一个脉宽进行判别,并由初始基准脉宽根据EWMA公式得到第二基准脉宽;
以第二基准脉宽为基准对修正后数字波形的第二个脉宽进行判别,再由第二基准脉宽根据EWMA公式调整下一个基准脉宽;
以下一个基准脉宽为基准对修正后数字波形的下一个脉宽进行判别;以及,重复执行调整基准脉宽及根据相应基准脉宽对修正后数字波形的脉宽进行判别的过程,直至修正后数字波形的脉宽全部被判别完;
其中,上述判别过程是指以所述基准脉宽为基准,判别修正后数字波形的相应脉宽是对应比特1的半位还是比特0;其中,比特1由两个连续脉宽构成,比特0由一个脉宽构成;
S3、根据步骤S2的判别结果,将修正后数字波形转换为对应的0/1比特序列;
S4、根据磁卡标准对所述比特序列解码。
其中,所述步骤S1是通过将磁头接到音频输入口进行采样的。
其中,所述步骤S4之后还包括步骤S5:若解码失败,则将步骤S1中修正后得到的数字波形按采样方向的相反方向取出,并执行步骤S2。
其中,所述步骤S1之前还包括以下步骤:S0、判断是否开始进行采样;若否,则继续判断是否开始进行采样;若是,则进行步骤S1。
其中,当判断开始进行采样后:判断相邻两个采样点之间的电压值,并在连续几百个采样点中任意两个采样点之间的电压差值小于1mV时,结束采样。
其中,所述步骤S1采用极值法将采样到的模拟波形转换成初始数字波形具体为:
将极大值点归到高电平,从该点开始之后的点都归到高电平,直到遇到极小值点;将极小值点归到低电平,从该点开始之后的点都归到低电平,直到遇到极大值点;得到初始数字波形。
其中,所述步骤S1采用阈值法将采样到的模拟波形转换成初始数字波形具体为:
将高于上阈值的采样点归到高电平,并将从该点开始之后的点都归到高电平,直到遇到低于下阈值的采样点;将低于下阈值的采样点归到低电平,并将从该点开始之后的点都归到低电平,直到遇到高于上阈值的采样点;得到初始数字波形。
其中,所述步骤S1中:采用插值法对所述初始数字波形的脉宽进行修正具体为,
S1011、取极值点及其左右一最近相邻点,使用带限内插公式在相邻两点之间插值,并重新计算插值后这个短序列的新极值点;
S1012、根据新极值点与原极值点的位置对所述初始数字波形的脉宽进行修正。
其中,采用插值法对所述初始数字波形的脉宽进行修正具体为,
当电平反相时,利用线性插值法在当前电平最后一个采样点和下一个电平第一个采样点之间进行插值,将下一个电平第一个采样点到阈值的时间归到下一个电平,将阈值到当前电平最后一个采样点的时间归到当前电平。
其中,所述步骤S2中以所述基准脉宽对修正后数字波形的脉宽进行判别,及步骤S3中将修正后数字波形转换为对应的0/1比特序列,具体包括以下步骤:
S301、判断当前脉宽与当前基准脉宽的比例是否处于[k1,k2]内;若是,则将当前脉宽转换为比特0,并调整基准脉宽,继续进行对下一脉宽的判别;若否,则进行步骤S302;
S302、判断当前脉宽与当前基准脉宽的比例是处于[k3,+∞)内,是处于[k2,k3]内,还是处于(0,k1]内;
若当前脉宽与当前基准脉宽的比例处于[k3,+∞)内,则放弃当前脉宽,并终止此次解码过程或调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
若当前脉宽与当前基准脉宽的比例处于[k2,k3]内,则将当前脉宽转换为比特0,并在调整基准脉宽时增加调整系数,返回步骤S301,继续进行对下一脉宽的判别;
若当前脉宽与当前基准脉宽的比例处于(0,k1]内,则判断后一个脉宽与当前基准脉宽的比例是否处于(0,k1];若是,则将当前脉宽和后一个脉宽转换为比特1,并调整基准脉宽,返回步骤S301;若否,则进行步骤S303;
S303、判断后一个脉宽与当前基准脉宽的比例是处于[k3,+∞)内,还是处于[k1,k3]内;
若后一个脉宽与当前基准脉宽的比例处于[k3,+∞)内,则终止此次解码过程或放弃当前脉宽,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
若后一个脉宽与当前基准脉宽的比例处于[k1,k3]内,则判断前一个脉宽与前一个基准脉宽的比例是否处于[k1,k2]内;若否,则执行步骤S306;
若是,则判断前一个脉宽是否小于后一个脉宽;若是,则进行步骤S304;若否,则进行步骤S305;
S304、判断当前脉宽与前一个脉宽之和与当前基准脉宽的比例是否处于[k1,k2]内;若是,则将当前脉宽和后一个脉宽转换为比特1,将后一个脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
S305、判断当前脉宽与前一个脉宽之和与当前基准脉宽的比例是否处于[k1,k2]内;若是,则将当前脉宽和前一个脉宽转换为比特1,将后一个脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
S306、判断前第二个脉宽与前一个基准脉宽的比例是否处于(0,k1]内;若是,则进行步骤S307;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
S307、判断当前脉宽、前一个脉宽和前第二个脉宽的脉宽之和,与前一个基准脉宽的比例是否处于[k1,k2]内;若是,则将后一个脉宽和后第二个脉宽均转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
其中,0<k1<1<k2<k3。
本发明的有益效果是:区别于现有技术中硬件成本较高,灵活性较低等缺点,本发明提供一种磁卡解码方法,采用极值法或阈值法将得到原始模拟波形转换为初始数字波形,并采用插值法修正初始数字波形,使数字波形脉宽的计算更准确。如此可以看出,本发明能够灵活地选择将模拟波形转换成数字波形的方法,且由于是软件解码的方法,当出现磁卡标准不兼容的问题时,只需根据标准规定的映射表对逻辑01序列重新解码即可,灵活度非常高。
此外,由于本发明是将磁头直接接到音频输入口上,通过录音的方式获取磁卡的模拟波形,现在的终端设备(如手机、平板电脑等)都会有音频芯片,所以在很大程度上解决了硬件成本较高的问题,并且与现有技术相比,能够有效地抑制噪声。
附图说明
图1是本发明磁卡解码方法的一流程图;
图2是本发明提供的硬件连接图;
图3是本发明采样的部分磁卡数据;
图4是对图3中采用极值法将模拟波形转换成初始数字波形的结果;
图5是对图3中采用阈值法将模拟波形转换成初始数字波形的结果;
图6是本发明磁卡解码方法中脉宽转换为0/1比特序列的方法的部分流程图;
图7是本发明磁卡解码方法中脉宽转换为0/1比特序列的方法的部分流程图;
图8是本发明磁卡解码方法中脉宽转换为0/1比特序列的方法的部分流程图
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
请参阅图1,本发明提供一种磁卡解码方法,包括以下步骤:
S1、采用极值法或阈值法将采样到的模拟波形转换成初始数字波形,并采用插值法对所述初始数字波形的脉宽进行修正,得到修正后数字波形;
S2、取磁卡的前导比特0的脉宽的平均脉宽,将此平均脉宽作为初始基准脉宽,使用所述初始基准脉宽对修正后数字波形的第一个脉宽进行判别,并由初始基准脉宽根据EWMA公式得到第二基准脉宽;
以第二基准脉宽为基准对修正后数字波形的第二个脉宽进行判别,再由第二基准脉宽根据EWMA公式调整下一个基准脉宽;
以下一个基准脉宽为基准对修正后数字波形的下一个脉宽进行判别;以及,重复执行调整基准脉宽及根据相应基准脉宽对修正后数字波形的脉宽进行判别的过程,直至修正后数字波形的脉宽全部被判别完;
其中,上述判别过程是指以所述基准脉宽为基准,判别修正后数字波形的相应脉宽是对应比特1的半位还是比特0;其中,比特1由两个连续脉宽构成,比特0由一个脉宽构成;
S3、根据步骤S2的判别结果,将修正后数字波形转换为对应的0/1比特序列;
S4、根据磁卡标准对所述比特序列解码,得到ASCII码数据。
在一具体的实施例中,步骤S4是根据ISO7811/1-7811/5标准对所述比特序列解码,得到ASCII码数据的。在另外的实施例中,磁卡标准的选择可根据实际情况选择,其类型不仅有ISO7811,还有JIS II,还有IBM等等,或是其他国家还有自己的本地标准。
本发明采集的是离散时间的磁卡模拟波形,采用极值法或阈值法将得到原始模拟波形转换为初始数字波形,并采用插值法修正初始数字波形,使数字波形脉宽的计算更准确。如此可以看出,本发明能够灵活地选择将模拟波形转换成数字波形的方法。且本发明采用动态的当前基准脉宽作为判别所述数字波形当前脉宽对应比特1的半位或比特0的基准,有效地解决了由于硬件设备的不完善、磁卡移动速度不均匀而导致的读取数据错误的概率。
而在另一具体的实施例中,步骤S2初始基准脉宽的得到方式可以为:取出磁卡的前几个脉宽,去掉最大值及最小值(根据实际测试,卡的边缘比较容易受损,因此获取的前几个脉宽里经常发现1、2个过短或过长的脉宽),然后求出脉宽平均值作为初始基准脉宽。
在这里,EWMA公式为:Tnew=fac*Told+(1-fac)*Pulse。其中,fac为0到1的系数,Told为当前参考脉宽,Pulse为转换成比特0/1的当前脉宽,Tnew为新的参考脉宽。在这里,系数fac是个经验权值,它设得大,基准脉宽的改变速度就比较慢,它主要由实际测试所得,故在本发明中,系数fac的具体值主要由实际情况决定。
在本发明中,所述步骤S1是通过将磁头接到音频输入口进行采样的。请参阅图2,磁头用于产生刷卡的模拟信号,音频芯片以录音的方式接收磁头的模拟信号,按音频的采样率(44.1KHz或48KHz)对磁头产生的模拟信号采样,CPU接收音频芯片传输过来的数据,使用本发明描述的法分析数据并解码。磁头直接连接到音频芯片,现在的终端设备(如手机、平板电脑等)都会有音频芯片,与现有技术相比,节省了硬件成本。
本发明需要将模拟波形转换成数字波形,根据数字波形每个电平的持续时间将电平转换成01序列,而每个电平的持续时间则指的是脉宽。采样间隔指的是采样的时间间隔,比如:采样速度为100KSPS/S,表示1秒采样100K次,那么采样间隔就是10us。
在本发明中,步骤S1是通过极值法或阈值法将采样到的模拟波形转换成初始数字波形的,并且针对每种方法均有修正措施。下面就结合实施例,具体阐述这个过程。请参阅图3至图5。
(1)极值法。
①所述步骤S1中:采用极值法将采样到的模拟波形转换成初始数字波形具体为,将极大值点归到高电平,从该点开始之后的点都归到高电平,直到遇到极小值点;将极小值点归到低电平,从该点开始之后的点都归到低电平,直到遇到极大值点;得到初始数字波形。然后记录每个电平的点数,将其乘以采样间隔,便可以得到初始数字波形的脉宽。
请参阅图2至图5,本发明采用的是极值法把采样到的模拟波形转换成初始数字波形,具体实施过程如下:设y[i]为第i个采样点,那么,
当y[i]大于一定幅值,y[i]>y[i-1]并且y[i]>y[i+1]时,y[i]为极大值,表示高电平的开始;
当y[i]小于一定幅值,y[i]<y[i-1]并且y[i]<y[i+1]时,y[i]为极小值,表示低电平的电始。
将极大值点归到高电平,从该点开始之后的点都归到高电平,直到遇到极小值点;将极小值点归到低电平,从该点开始之后的点都归到低电平,直到遇到极大值点;得到初始数字波形,然后记录每个电平的点数,将其乘以采样间隔,得到初始数字波形的脉宽。由于上述初始数字波形是直接通过采样点得到的,所以上述利用极值法能够得到更多的原始模拟波形的信息。
②上述过程后,再采用插值法对所述初始数字波形的脉宽进行修正具体为,
S1011、取极值点及其左右一最近相邻点,使用带限内插公式在相邻两点之间插值,并重新计算插值后这个短序列的新极值点;
S1012、根据新极值点与原极值点的位置对所述初始数字波形的脉宽进行修正。在本发明,所使用的带限内插公式如下所示:
在一具体的实施例中,取极值点及其左右一最近相邻点(共3个点),使用带限内插公式在相邻两点之间插值,并重新计算插值后这个短序列(5个点)的新极值点。比较这个新极值与原来的极值的位置偏移,假设采样间隔为T,新极值在M1+1/2处,原来的极值在M2处。如果M1<M2,即M1处于M2的位置之前,说明原极值点处于当前电平上,为使原极值处于下一电平上,则当前电平减少(M2-M1-1/2)T的时间长度,下一个电平相应地补充(M2-M1-1/2)T的时间长度。同理,M1>M2的情况依上述过程类推。如果新极值还是在M2处,就不用做调整。
(2)阈值法。
在这里,上阈值应该设成高于噪声范围(1mV以内),比如1.5mV,但也不能太大,因为有些卡的信号较弱。下阈值与上阈值相对于零点对称。
①所述步骤S1采用阈值法将采样到的模拟波形转换成初始数字波形具体为:
将高于上阈值的采样点归到高电平,并将从该点开始之后的点都归到高电平,直到遇到低于下阈值的采样点;将低于下阈值的采样点归到低电平,并将从该点开始之后的点都归到低电平,直到遇到高于上阈值的采样点;得到初始数字波形。然后记录每个电平的点数,将其乘以采样间隔,便可以得到初始数字波形的脉宽。
②经上述过程后,采用插值法对所述初始数字波形的脉宽进行修正具体为,
当电平反相时,利用线性插值法在当前电平最后一个采样点和下一个电平第一个采样点之间进行插值,将下一个电平第一个采样点到阈值的时间归到下一个电平,将阈值到当前电平最后一个采样点的时间归到当前电平。
在一具体的实施例中,假设采样间隔为T,电平反相时,在下一个电平的第一个采样点(记为P1)与当前电平最后一个采样点(记为P2)之间用线性插值法,将P1到阈值的时间T-t归到下一个电平,将阈值到P2的时间t=T*(THRES-P2)/(P1-P2)归到当前电平,其中THRES表示上阈值或下阈值。
进行上述将模拟波形转换为数字波形的过程后,就进行将数字波形转换为对应的0/1比特序列了。本发明采用的磁卡编码规则为:前导0+磁卡数据+后导0,其中前、后导0的个数由制卡设备决定。请参阅图6至图8,具体的编码过程中0<k1<1<k2<k3,所述步骤S2中以所述基准脉宽对修正后数字波形的脉宽进行判别,及步骤S3中将修正后数字波形转换为对应的0/1比特序列,具体包括以下步骤:
S301、判断当前脉宽与当前基准脉宽的比例是否处于[k1,k2]内;若是,则将当前脉宽转换为比特0,并调整基准脉宽,继续进行对下一脉宽的判别;若否,则进行步骤S302;
S302、判断当前脉宽与当前基准脉宽的比例是处于[k3,+∞)内,是处于[k2,k3]内,还是处于(0,k1]内;
若当前脉宽与当前基准脉宽的比例处于[k3,+∞)内,则放弃当前脉宽,并终止此次解码过程或调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
若当前脉宽与当前基准脉宽的比例处于[k2,k3]内,则将当前脉宽转换为比特0,并在调整基准脉宽时增加调整系数,返回步骤S301,继续进行对下一脉宽的判别;
若当前脉宽与当前基准脉宽的比例处于(0,k1]内,则判断后一个脉宽与当前基准脉宽的比例是否处于(0,k1];若是,则将当前脉宽和后一个脉宽转换为比特1,并调整基准脉宽,返回步骤S301;若否,则进行步骤S303;
S303、判断后一个脉宽与当前基准脉宽的比例是处于[k3,+∞)内,还是处于[k1,k3]内;
若后一个脉宽与当前基准脉宽的比例处于[k3,+∞)内,则终止此次解码过程或放弃当前脉宽,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
若后一个脉宽与当前基准脉宽的比例处于[k1,k3]内,则判断前一个脉宽与前一个基准脉宽的比例是否处于[k1,k2]内;若否,则执行步骤S306;
若是,则判断前一个脉宽是否小于后一个脉宽;若是,则进行步骤S304;若否,则进行步骤S305;
S304、判断当前脉宽与前一个脉宽之和与当前基准脉宽的比例是否处于[k1,k2]内;若是,则将当前脉宽和后一个脉宽转换为比特1,将后一个脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
S305、判断当前脉宽与前一个脉宽之和与当前基准脉宽的比例是否处于[k1,k2]内;若是,则将当前脉宽和前一个脉宽转换为比特1,将后一个脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
S306、判断前第二个脉宽与前一个基准脉宽的比例是否处于(0,k1]内;若是,则进行步骤S307;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
S307、判断当前脉宽、前一个脉宽和前第二个脉宽的脉宽之和,与前一个基准脉宽的比例是否处于[k1,k2]内;若是,则将后一个脉宽和后第二个脉宽均转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别。
在某些的实施例中,60%<k1<80%,110%<k2<130%,160%<k3<180%。k1就固定设成(60%,80%)的某个数值,k2,k3同理,然后就不再改变了。其k1,k2,k3的具体选值由实际测试所得,故在本发明中,k1,k2,k3的具体值主要由实际情况决定。
在一具体的实施例中,k1为75%,k2为125%,k3为175%。根据EWMA公式“Tnew=fac*Told+(1-fac)*Pulse”调整下一个参考脉宽。其中,fac为0到1的系数,在本实施例中,举例为0.5,Told为当前参考脉宽,Pulse为转换成逻辑01的脉宽,Tnew为新的参考脉宽。本发明中,最初始的脉宽认定为前导0,将其作为初始基准脉宽,然后取得第一个脉宽,将其与初始基准脉宽比较,如果比例在75%~125%之间,将该脉宽转换成逻辑0;如果比例低于75%,再判断后一个脉宽与后一个基准脉宽的比例,如果低于75%,则这2个脉宽转换成逻辑1。
在转换过程中有时会出现异常情况,比如当前脉宽与当前基准脉宽的比例处于125%~175%,此时该当时脉宽仍转换成逻辑0,但是调整下一个基准脉宽时增大系数fac(比如将原来的0.5调成0.7);若比例超过175%时,则放弃当前脉宽的编码并继续进行下一个脉宽的编码,或终止此次解码过程,返回提示出错。
还有一种情况是出现单个短脉宽,后面出现了长脉宽,导致这个短脉宽被孤立。在这里,当前脉宽与当前基准脉宽的比例在75%~125%之间的脉宽称为长脉宽,比例在0%~75%之间的脉宽称为短脉宽。这种情况比较复杂,分成以下几种情况处理(以下将长脉宽用l表示,短脉宽用s表示):
(1)将llsl转成lssl:
比如449 364 107 447(此时449参考脉宽为451),这里364与107应该转换成逻辑1,但是364被转成逻辑0,导致107被孤立。修正过程为:如果前第2个脉宽(364)小于当前脉宽(447),并且前2个脉宽之和比例在长脉宽范围内就将逻辑0(由364转换的)修正为逻辑1,然后将当前脉宽也转成逻辑0。
(2)将llsl转成llss:
比如449 447 107 364(此时449参考脉宽为451),这里364与107应该转换成逻辑1,但是364被判定为长脉宽,107会被孤立。修正过程为,如果前第2个脉宽为长脉宽,当前脉宽小于前第2个脉宽,并且最后这2个脉宽之和比例在长脉宽范围内,就将这2个脉宽转换成逻辑1。
(3)将lsssl->lssll:
比如2782 1306 1251 1953 2972(此时2782参考脉宽为2693),这里1953应该是个长脉宽,但是却被判定为短脉宽。修正过程为:如果最后一个逻辑为1(由1306和1251转换的),如果前1个脉宽(1953)与转换成该逻辑的这2个脉宽之和的比在长脉宽范围内,就将前1个脉宽转换成逻辑0,当前脉宽也转换成逻辑0。
(4)其他情况,一律将孤立的短脉宽转成为逻辑0。
在某些实施例中,磁卡的刷卡方向可能为反向刷卡,那么按上述过程则会解码失败,此时则将步骤S1中修正后得到的数字波形按采样方向的相反方向取出,并执行步骤S2及步骤S2后面的步骤进行磁卡解码。为了更好地理解上述过程,在此举例说明:假如磁卡的刷卡方向为从左到右,那么采集到的采样点的方向也是从左到右,解码的顺序也是从左到右,而此种解码顺序是正确的解码顺序。如果磁卡的刷卡方向变为从右到左,那么按从左到右的解码顺序必然会失败,此时将采集到的采样点波形从右到左取出,再进行解码,这样就可以顺得解码了。
在某些实施例中,所述步骤S1之前还包括以下步骤:S0、判断是否开始进行采样;若否,则继续判断是否开始进行采样;若是,则进行步骤S1。在未进行采样时,采样电压总在0左右,因此当检测到采样电压高过阈值时,认为是刷卡的开始,此时开始记录采样数据。在这里,阈值应该设成高于噪声范围(1mV以内),比如1.5mV,但也不能太大,因为有些卡的信号较弱。
在某些实施例中,当判断开始进行采样后:判断相邻两个采样点之间的电压值,并在连续几百个采样点中任意两个采样点之间的电压差值小于1mV时,结束采样。
综上所述,区别于现有技术中硬件成本较高,灵活性较低等缺点,本发明提供一种磁卡解码方法,采用极值法或阈值法将得到原始模拟波形转换为初始数字波形,并采用插值法修正初始数字波形,使数字波形脉宽的计算更准确。如此可以看出,本发明能够灵活地选择将模拟波形转换成数字波形的方法,且由于是软件解码的方法,当磁卡标准不兼容的问题时,只需根据实际情况修改K1,K2,K3,初始基准脉宽,fac等参数的值即可,灵活度非常高。
此外,由于本发明是将磁头直接接到音频输入口上,通过录音的方式获取磁卡的模拟波形,现在的终端设备(如手机、平板电脑等)都会有音频芯片,所以在很大程度上解决了硬件成本较高的问题,并且与现有技术相比,能够有效地抑制噪声。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种磁卡解码方法,其特征在于,包括以下步骤:
S1、采用极值法或阈值法将采样到的模拟波形转换成初始数字波形,并采用插值法对所述初始数字波形的脉宽进行修正,得到修正后数字波形;
S2、取磁卡的前导比特0的脉宽的平均脉宽,将此平均脉宽作为初始基准脉宽,使用所述初始基准脉宽对修正后数字波形的第一个脉宽进行判别,并由初始基准脉宽根据EWMA公式得到第二基准脉宽;所述EWMA公式为:Tnew=fac*Told+(1-fac)*Pulse,其中,fac为0到1的系数,Told为当前参考脉宽,Pulse为转换成比特0/1的当前脉宽,Tnew为新的参考脉宽;
以第二基准脉宽为基准对修正后数字波形的第二个脉宽进行判别,再由第二基准脉宽根据EWMA公式调整下一个基准脉宽;
以下一个基准脉宽为基准对修正后数字波形的下一个脉宽进行判别;以及,重复执行调整基准脉宽及根据相应基准脉宽对修正后数字波形的脉宽进行判别的过程,直至修正后数字波形的脉宽全部被判别完;
其中,上述判别过程是指以所述基准脉宽为基准,判别修正后数字波形的相应脉宽是对应比特1的半位还是比特0;其中,比特1由两个连续脉宽构成,比特0由一个脉宽构成;
S3、根据步骤S2的判别结果,将修正后数字波形转换为对应的0/1比特序列;
S4、根据磁卡标准对所述比特序列解码。
2.根据权利要求1所述的磁卡解码方法,其特征在于:所述步骤S1是通过将磁头接到音频输入口进行采样的。
3.根据权利要求1所述的磁卡解码方法,其特征在于,所述步骤S4之后还包括步骤S5:若解码失败,则将步骤S1中修正后得到的数字波形按采样方向的相反方向取出,并执行步骤S2。
4.根据权利要求1至3任一项所述的磁卡解码方法,其特征在于,所述步骤S1之前还包括以下步骤:S0、判断是否开始进行采样;若否,则继续判断是否开始进行采样;若是,则进行步骤S1。
5.根据权利要求4所述的磁卡解码方法,其特征在于,当判断开始进行采样后:判断相邻两个采样点之间的电压值,并在连续几百个采样点中任意两个采样点之间的电压差值小于1mV时,结束采样。
6.根据权利要求2所述的磁卡解码方法,其特征在于,所述步骤S1采用极值法将采样到的模拟波形转换成初始数字波形具体为:
将极大值点归到高电平,从该点开始之后的点都归到高电平,直到遇到极小值点;将极小值点归到低电平,从该点开始之后的点都归到低电平,直到遇到极大值点;得到初始数字波形。
7.根据权利要求2所述的磁卡解码方法,其特征在于,所述步骤S1采用阈值法将采样到的模拟波形转换成初始数字波形具体为:
将高于上阈值的采样点归到高电平,并将从该点开始之后的点都归到高电平,直到遇到低于下阈值的采样点;将低于下阈值的采样点归到低电平,并将从该点开始之后的点都归到低电平,直到遇到高于上阈值的采样点;得到初始数字波形。
8.根据权利要求6所述的磁卡解码方法,其特征在于,所述步骤S1中:采用插值法对所述初始数字波形的脉宽进行修正具体为,
S1011、取极值点及其左右一最近相邻点,使用带限内插公式在相邻两点之间插值,并重新计算插值后这个短序列的新极值点;
S1012、根据新极值点与原极值点的位置对所述初始数字波形的脉宽进行修正。
9.根据权利要求7所述的磁卡解码方法,其特征在于,所述步骤S1中:采用插值法对所述初始数字波形的脉宽进行修正具体为,
当电平反相时,利用线性插值法在当前电平最后一个采样点和下一个电平第一个采样点之间进行插值,将下一个电平第一个采样点到阈值的时间归到下一个电平,将阈值到当前电平最后一个采样点的时间归到当前电平。
10.根据权利要求1所述的磁卡解码方法,其特征在于,所述步骤S2中以所述基准脉宽对修正后数字波形的脉宽进行判别,及步骤S3中将修正后数字波 形转换为对应的0/1比特序列,具体包括以下步骤:
S301、判断当前脉宽与当前基准脉宽的比例是否处于[k1,k2]内;若是,则将当前脉宽转换为比特0,并调整基准脉宽,继续进行对下一脉宽的判别;若否,则进行步骤S302;
S302、判断当前脉宽与当前基准脉宽的比例是处于[k3,+∞)内,是处于[k2,k3]内,还是处于(0,k1]内;
若当前脉宽与当前基准脉宽的比例处于[k3,+∞)内,则放弃当前脉宽,并终止此次解码过程或调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
若当前脉宽与当前基准脉宽的比例处于[k2,k3]内,则将当前脉宽转换为比特0,并在调整基准脉宽时增加调整系数,返回步骤S301,继续进行对下一脉宽的判别;
若当前脉宽与当前基准脉宽的比例处于(0,k1]内,则判断后一个脉宽与当前基准脉宽的比例是否处于(0,k1];若是,则将当前脉宽和后一个脉宽转换为比特1,并调整基准脉宽,返回步骤S301;若否,则进行步骤S303;
S303、判断后一个脉宽与当前基准脉宽的比例是处于[k3,+∞)内,还是处于[k1,k3]内;
若后一个脉宽与当前基准脉宽的比例处于[k3,+∞)内,则终止此次解码过程或放弃当前脉宽,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
若后一个脉宽与当前基准脉宽的比例处于[k1,k3]内,则判断前一个脉宽与前一个基准脉宽的比例是否处于[k1,k2]内;若否,则执行步骤S306;
若是,则判断前一个脉宽是否小于后一个脉宽;若是,则进行步骤S304;若否,则进行步骤S305;
S304、判断当前脉宽与前一个脉宽之和与当前基准脉宽的比例是否处于[k1,k2]内;若是,则将当前脉宽和后一个脉宽转换为比特1,将后一个脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若 否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
S305、判断当前脉宽与前一个脉宽之和与当前基准脉宽的比例是否处于[k1,k2]内;若是,则将当前脉宽和前一个脉宽转换为比特1,将后一个脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
S306、判断前第二个脉宽与前一个基准脉宽的比例是否处于(0,k1]内;若是,则进行步骤S307;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
S307、判断当前脉宽、前一个脉宽和前第二个脉宽的脉宽之和,与前一个基准脉宽的比例是否处于[k1,k2]内;若是,则将后一个脉宽和后第二个脉宽均转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;若否,则将当前脉宽转换为比特0,并调整基准脉宽,返回步骤S301,继续进行对下一脉宽的判别;
其中,0<k1<1<k2<k3。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210165732.7A CN102722686B (zh) | 2012-05-25 | 2012-05-25 | 磁卡解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210165732.7A CN102722686B (zh) | 2012-05-25 | 2012-05-25 | 磁卡解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102722686A CN102722686A (zh) | 2012-10-10 |
CN102722686B true CN102722686B (zh) | 2014-10-08 |
Family
ID=46948439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210165732.7A Active CN102722686B (zh) | 2012-05-25 | 2012-05-25 | 磁卡解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102722686B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034829A (zh) * | 2012-12-19 | 2013-04-10 | 福建升腾资讯有限公司 | 一种磁卡的软解码方法 |
CN104969294B (zh) * | 2013-02-06 | 2018-08-07 | 环汇系统有限公司 | 具有刷卡信息反馈的磁条读取器 |
CN103264532B (zh) * | 2013-06-07 | 2015-10-28 | 苏州市世嘉科技股份有限公司 | 一种具有高剥离强度的复合板及其生产工艺 |
CN107517072B (zh) * | 2016-06-16 | 2021-07-23 | 上海华虹集成电路有限责任公司 | 用于iso7811协议中磁介质信号接收的解码电路 |
CN107066906B (zh) * | 2017-01-09 | 2020-01-10 | 北京信息职业技术学院 | 磁条卡解码方法及装置 |
CN106997443B (zh) * | 2017-01-09 | 2019-08-23 | 北京信息职业技术学院 | 磁条卡解码方法及装置 |
CN112395895B (zh) * | 2019-08-16 | 2023-08-25 | 深圳市复恒自控技术有限公司 | 磁条软件解码方法、装置及计算机可读存储介质 |
CN111698133B (zh) * | 2020-06-23 | 2021-12-24 | 上海仁童电子科技有限公司 | 一种波形修正仪和波形修正方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222211A (zh) * | 2011-07-06 | 2011-10-19 | 深圳市铭特科技有限公司 | 一种磁卡解码方法及磁卡读取装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3510496B2 (ja) * | 1998-09-28 | 2004-03-29 | 富士通株式会社 | バー幅補正装置,バー幅補正方法,バーコード読取装置及びそのバーコード復調方法 |
US6749117B2 (en) * | 2001-11-20 | 2004-06-15 | Matsushita Electric Industrial Co., Ltd. | Contactless IC card, responding method, and program therefor |
-
2012
- 2012-05-25 CN CN201210165732.7A patent/CN102722686B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222211A (zh) * | 2011-07-06 | 2011-10-19 | 深圳市铭特科技有限公司 | 一种磁卡解码方法及磁卡读取装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102722686A (zh) | 2012-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102722686B (zh) | 磁卡解码方法 | |
CN102722690B (zh) | 磁卡解码方法 | |
CN105229964B (zh) | 信号处理装置 | |
CN101644983A (zh) | 触摸屏检测方法及装置 | |
CN110672981A (zh) | 一种基于mmc的直流配电网故障测距方法 | |
CN110749763A (zh) | 一种基于i2s信号的触发方法及示波器 | |
CN104463057A (zh) | 一种磁卡解码方法及装置 | |
CN109446673B (zh) | 一种通过部分映射时钟使能信号来改善布局完成率的方法 | |
CN104461035B (zh) | 可处理多按键同时按下的mcu键盘电路及其实现方法 | |
CN107621562B (zh) | 一种用于分析窃电的单相表分流准确判断方法 | |
CN110674623B (zh) | 模型化埋件定位信息的读取系统及其方法 | |
CN102200565A (zh) | 一种芯片测试装置 | |
CN109543316B (zh) | 提取版图不同模块连接关系的方法 | |
CN105786444B (zh) | 一种浮点数尾数前导零检测方法及装置 | |
CN114253879A (zh) | 一种基于软件模拟的多通道串口通信方法及系统 | |
CN101521500B (zh) | 应用相位选择器的数据锁存电路 | |
CN102053601A (zh) | Can控制器中实现多消息机制的方法 | |
CN101901355A (zh) | 一种基于最大熵的文字识别方法和识别装置 | |
CN108089468A (zh) | 一种医疗检验设备控制时序可视化生成方法 | |
CN115238617A (zh) | 芯片后仿验证中信号采样延迟时间的自动计算方法及系统 | |
CN104021246A (zh) | 一种应用于低功耗容错电路的自适应长度预测器 | |
CN101038320A (zh) | 一种生成测试向量的方法 | |
CN111160285B (zh) | 一种获取板书信息的方法、装置、介质和电子设备 | |
CN112966460A (zh) | 铁路信号工程接线端子配线的数字化方法 | |
CN112329108A (zh) | 一种地铁车站优化抗浮验算方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |