一种磁卡的软解码方法

文档序号:6384930阅读:113来源:国知局
专利名称:一种磁卡的软解码方法
一种磁卡的软解码方法
技术领域
本发明涉及一种基于软件优化算法的磁卡解码方法。
背景技术
针对磁卡解码,目前行业内都普遍采用硬解码方案,即采购专用磁卡解码芯片或模组来实现刷卡功能。硬解码方案存在的缺点完全依赖于硬件电路将磁道上的磁信号转化为解析后的数字比特流。而由于国内所用银行卡发卡环境限制大都在发行时写卡存在较大人为因素影响、如银行卡用户保管不当引起的磁信息磨损、刷卡过程中人为因素的影响等,而这些因素的影响对于硬解码来说很难适应,会导致无法解码等现象。

发明内容本发明要解决的技术问题,在于提供一种磁卡的软解码方法,通过软件分析、优化的解码过程,部分消除各个环节引入的人为干扰,提高解码成功率。本发明是这样实现的一种磁卡的软解码方法,包括如下步骤步骤10、刷卡时记录磁道信号边沿变化的时刻值,通过减法运算将边沿变化的时刻值转换成脉宽序列;步骤20、对磁道的一段前导0值脉宽取平均值,计算得到初始基准脉宽,我们将基准脉宽称为参考T值;步骤30、依赖于当前的参考T值解码出下一个比特值;

步骤40、若脉宽还未全部解码为比特数据,则用所述比特值对应的脉宽值重新计算参考T值后回到步骤30 ;若全部解码完毕,进入步骤50 ;步骤50、校验解码出的比特流数据;步骤60、若校验正确,返回正确的磁道数据后结束流程;若校验出错,进入步骤70 ;步骤70、判断是否已经尝试过反向解码,若否,则启动反向解码;若是,则结束。进一步的,本发明所述步骤20中初始基准脉宽,即初始参考T值的获取方式是步骤21、取8个前导0对应的脉宽值;步骤22、计算平均值,并取平均值的3/4标记为al,取平均值的5/4标记为a2 ;步骤22、假设8个脉宽值中存在m(0彡m彡8)个大于a2或小于al的数据,如果m值为0,则此平均值被定义为初始基准脉宽,也就是初始参考T值,并进入步骤30 ;如果m值不为0,则丢弃这m个数据,并从缓冲区中再取m个数据补充,然后回到步骤22 ;进一步的,本发明所述步骤30中比特值的解码方法是假设在脉宽序列缓冲区中,当前待解码的脉宽值称之为脉宽1,当前值往后的第I个脉宽值称之为脉宽2,当前值往后的第2个脉宽值称之为脉宽3 ;将参考T的3/4标记为al,参考T的5/4标记为a2 ;将脉宽1、脉宽2、脉宽3分别标记为kl,k2,k3 ;步骤31、判断kl〈al,并且k2〈al是否成立,是,则进行步骤32,否,则将kl解码为比特O后进入步骤40 ;步骤32、判断kl+k2〈al,并且kl+k2+k3〈a2是否成立,是,则将kl、k2、k3合并解码为比特O ;否,则将kl、k2合并解码为比特I ;之后均进入步骤40,进行重新算参考T,之后进入步骤33 ;步骤33、判断缓冲区中的脉宽值是否都已经解码为比特数据?是,则结束,否,则回到步骤31。进一步的,本发明所述步骤40中计算参考T值是采用“跟随加窗”算法,所述“跟随加窗”算法为将用于计算参考T值的8个数据存在缓冲“窗口 ”内,此缓冲“窗口”在后续解码过程中始终保持为8个数据大小,并且每个数据对应磁卡的I个比特值;在整个解码过程中,使用先进先出的方式更新缓冲“窗口”内的值;在本次解码出的数据为比特O (或比特I)之后,则先丢弃最先进入“窗口”的那个数据,然后将比特O (或比特I)对应的脉宽值更新到“窗口”内,并重新计算平均值,此平均值即为最新的参考T值;判断解码是否结束?若是,则结束,并进入步骤50 ;若否,则回到步骤30。进一步的,本发明所述步骤70中反向解码算法为步骤71、将脉宽缓冲区的数据反向存储;即将缓冲区中的第I个数据与最后I个数据对换位置,第2个数据与倒数第2个数据对换位置,依此类推;步骤72、进入步骤20 ;第一次解码是从前导O开始,而本次解码是从尾随O开始,故称之为反向解码。

本发明具有如下优点通过硬件电路上对磁卡信息转化的电信号放大、整形、采集、存储,完成信号录入后,启动软件分析、优化的解码过程;因此具有两优点I)抗干扰能力强对存储下来的磁道信号数据进行软件分析,并应用多种补偿算法,部分消除各个环节引入的人为干扰,抗干扰能力强,提高解码成功率。2)适应性好可以在软件上对获取的磁道信号数据应用多种算法(如跟随加窗算法,反向解码算法,算术平均过滤算法),从而更好的适应不同人的刷卡习惯,以及因长期使用引起磁道损耗而引起的信号变形。

下面参照附图结合实施例对本发明作进一步的说明。图1为本发明方法涉及的磁卡的磁道信息的分布情况示意图。图2为本发明方法总的流程图。图3为本发明方法中比特值的解码方法的流程图。图4为本发明方法中采用“跟随加窗”算法计算参考T值的流程图。
具体实施方式首先我们先了解一下磁卡的磁道信息的分布情况,如图1所示,a)对应于磁道信息中的比特O值,b)对应于磁道信息中的比特I值。整个磁道的信息分布为“前导0+有效信息+尾随0”,在本发明中,我们会先根据前导或尾随0(在实际算法中,我们是取8个O算平均值)算出一个参考T值,参考T值可以认为就是a)中两个t之间的宽度值。然后,我们再根据参考T值来判断后续的数据。有效信息区的信号与c)图类似,如果在一个参考T的时间内,波形有发生翻转,则这个比特值被识别为I个比特I ;反之,在T时间内,没有翻转发生,则识别为比特O,直到解码结束。如图2所示,本发明是这样实现的一种磁卡的软解码方法,包括如下步骤步骤10、刷卡时记录磁道信号边沿变化的时刻值,通过减法运算将边沿变化的时刻值转换成脉宽序列;步骤20、对磁道的一段前导0值脉宽取平均值,计算得到初始基准脉宽,我们将基准脉宽称为参考T值;步骤30、依赖于当前的参考T值解码出下一个比特值;步骤40、若脉宽还未全部解码为比特数据,则用所述比特值对应的脉宽值重新计算参考T值后回到步骤30 ;若全部解码完毕,进入步骤50 ;步骤50、校验解码出的比特流数据;步骤60、若校验正确,返回正确的磁道数据后结束流程;若校验出错,进入步骤70 ;步骤70、判断是否已经尝试过反向解码,若否,则启动反向解码;若是,则结束。该步骤中反向解码算法为步骤71、将脉宽缓冲区的数据反向存储;即将缓冲区中的第I个数据与最后I个数据对换位置,第2个数据与倒数第2个数据对换位置,依此类推;步骤72、进入步骤20 ;第一次解码是从前导0开始,而本次解码是从尾随0开始,故称之为反向解码。本发明为双向解码方案,即当正向解码解不出来的时候,软件自动补充反向解码的方式进行重试(所谓正向,即按刷卡的方向对原始数据进行解码)。这个主要是为了解决数据在数学上的一个特点,举例来说,如采集到的数据为{ 2,2,3,3 },则从左到右看,值从2到3,数值变化了 50%,而从右到左看,数据从3到2,数值变化了 33%,这种方式可以对刷卡速率从慢到快发生突变的情况具有非常优良的适应能力。如图4所示,所述步骤20中计算初始参考T值是采用“算术平均过滤”算法,所述“算术平均过滤”算法为步骤21、取8个前导0对应的脉宽值;步骤22、计算脉宽的平均值,并取平均值的3/4标记为al,取平均值的5/4标记为a2 ;步骤22、假设8个脉宽值中存在m个大于a2或小于al的数据,如果m值为0,则此平均值被定义为初始基准脉宽,也就是初始参考T值,并进入步骤30 ;如果m值不为0,则丢弃这m个数据,并从缓冲区中再取m个数据补充,然后回到步骤22 ;如图3所示,所述步骤30中比特值的解码方法是在脉宽序列缓冲区中,当前待解码的脉宽值称之为脉宽1,当前值往后的第I个脉宽值称之为脉宽2,当前值往后的第2个脉宽值称之为脉宽3 ;如当前待解码的脉宽值为缓冲区中的第9个数据,则脉宽I为第9个数据,脉宽2为第10个数据,脉宽3为第11个数据;将参考T的3/4标记为al,参考T的5/4标记为a2 ;将脉宽1、脉宽2、脉宽3分别标记为 kl, k2, k3 ;步骤31、判断kl〈al,并且k2〈al是否成立,是,则进行步骤32,否,则将kl解码为比特O后进入步骤40 ;步骤32、判断kl+k2〈al,并且kl+k2+k3〈a2是否成立,是,则将kl、k2、k3合并解码为比特0 ;否,则将kl、k2合并解码为比特I ;之后均进入步骤40 ;步骤33、判断缓冲区中的脉宽值是否都已经解码为比特数据?是,则结束,并进入步骤40 ;否,则回到步骤31。如图4所示,所述步骤40中计算参考T值是采用“跟随加窗”算法,所述“跟随加窗”算法为步骤41、将用于计算参考T值的8个数据存在缓冲“窗口”内,此缓冲“窗口”在后续解码过程中始终保持为8个数据大小,并且每个数据对应磁卡的I个比特值;步骤42、计算8个数据的算术平均值;步骤43、过滤异常脉宽值;从8个脉宽数据中剔除大于平均值的5/4或小于平均值的3/4的数据;步骤44、判断是否有数据被剔除,是,则从脉宽缓冲区中再取N个数据以补齐“窗口”要求的8个值,回到步骤42 ;否,则进入步骤30,依赖参考T值解码出I个磁道比特值后进入步骤45 ;步骤45、使用先进先出的方式更新缓冲“窗口”内的值;如本次解码出的数据为比特0 (或比特1),则先丢弃最先进入“窗口”的那个数据,然后将比特0 (或比特I)对应的脉宽值更新到“窗口 ”内,并重新计算平均值,此平均值即为最新的参考T值;步骤46、判断解码是否结束?若是,则结束,并进入步骤50,若否,则回到步骤30。“跟随加窗”算法类似于软件滤波中用到的一种叫做“递推中位值平均”的算法,首先,利用磁道的前导或尾随0来计算最初的参考T值,并以这个T值来解码随后的数据。并且,在解码的过程中,软件会不断地去修正这个T值。本算法以8个比特对应的脉冲宽度值为基础数据,并将其约定为一个窗的大小,窗内的数据主要用于计算T值。在解码的过程中,新解码出的比特值对应的脉宽值会替换掉窗内的旧数据,并重新计算参考T值。就像是软件解码到哪里,这个窗便跟随到哪里,由此,以“跟随加窗”来命名。初始参考T值的算法举例表I的第一行为数据在缓冲区中的索引,第二行为脉宽的数值,模拟了前导0区域的数据。所列的脉宽值均十六进制表示。表I
索引 |1 [2 [3 U f5 [6 [7 [8 [9 [To......
脉宽 6666 4444 4444 4444 2222 4444 4444 4444 4444 4444 ......先取8个数据,即表2的中具下划线的区间,计算得到平均值为4444。表权利要求
1.一种磁卡的软解码方法,其特征在于包括如下步骤 步骤10、刷卡时记录磁道信号边沿变化的时刻值,通过减法运算将边沿变化的时刻值转换成脉宽序列; 步骤20、对磁道的一段前导O值脉宽取平均值,计算得到初始基准脉宽,我们将基准脉宽称之为参考T值; 步骤30、依赖于当前的参考T值解码出下一个比特值; 步骤40、若脉宽还未全部解码为比特数据,则用所述比特值对应的脉宽值重新计算参考T值后回到步骤30 ;若全部解码完毕,进入步骤50 ; 步骤50、校验解码出的比特流数据; 步骤60、若校验正确,返回正确的磁道数据后结束流程;若校验出错,进入步骤70 ; 步骤70、判断是否已经尝试过反向解码,若否,则启动反向解码;若是,则结束。
2.根据权利要求1所述的一种磁卡的软解码方法,其特征在于所述步骤20中初始基准脉宽,即初始参考T值的获取方式是 步骤21、取8个前导O对应的脉宽值; 步骤22、计算平均值,并取平均值的3/4标记为al,取平均值的5/4标记为a2 ; 步骤22、假设8个脉宽值中存在m个大于a2或小于al的数据,如果m值为0,则此平均值被定义为初始基准脉宽,也就是初始参考T值,并进入步骤30 ;如果m值不为0,则丢弃这m个数据,并从缓冲区中再取m个数据补充,然后回到步骤22。
3.根据权利要求1所述的一种磁卡的软解码方法,其特征在于所述步骤30中比特值的解码方法是 假设在脉宽序列缓冲区中,当前待解码的脉宽值称之为脉宽1,当前值往后的第I个脉宽值称之为脉宽2,当前值往后的第2个脉宽值称之为脉宽3 ;将参考T的3/4标记为al,参考T的5/4标记为a2 ;将脉宽1、脉宽2、脉宽3分别标记为kl,k2,k3 ; 步骤31、判断kl〈al,并且k2〈al是否成立,是,则进行步骤32,否,则将kl解码为比特O后进入步骤40 ; 步骤32、判断kl+k2〈al,并且kl+k2+k3〈a2是否成立,是,则将kl、k2、k3合并解码为比特O ;否,则将kl、k2合并解码为比特I ;之后均进入步骤40,进行重新算参考T,之后进入步骤33 ; 步骤33、判断缓冲区中的脉宽值是否都已经解码为比特数据?是,则结束,否,则回到步骤31。
4.根据权利要求1所述的一种磁卡的软解码方法,其特征在于所述步骤40中计算参考T值是采用“跟随加窗”算法,所述“跟随加窗”算法为将用于计算参考T值的8个数据存在缓冲“窗口 ”内,此缓冲“窗口”在后续解码过程中始终保持为8个数据大小,并且每个数据对应磁卡的I个比特值;在整个解码过程中,使用先进先出的方式更新缓冲“窗口”内的值;在本次解码出的数据为比特O或比特I之后,先丢弃最先进入“窗口”的那个数据,然后将比特O或比特I对应的脉宽值更新到“窗口”内,并重新计算平均值,此平均值即为最新的参考T值;判断解码是否结束?若是,则结束解码,进入步骤50,若否,则回到步骤30。
5.根据权利要求1所述的一种磁卡的软解码方法,其特征在于所述步骤70中反向解码算法是步骤71、将脉宽缓冲区的数据反向存储;即将缓冲区中的第I个数据与最后I个数据对换位置,第2个数据与倒数第2个数据对换位置,依此类推;· 步骤72、进入步骤20 ;第一次解码是从前导O开始,而本次解码是从尾随O开始,故称之为反向解码。
全文摘要
本发明提供一种磁卡的软解码方法,包括如下步骤刷卡时记录磁道信号边沿变化的时刻值,将边沿变化的时刻值转换成脉宽序列;对磁道前导的一段比特0所对应的脉宽值取平均值,计算得到初始基准脉宽,基准脉宽称为参考T值;依赖于参考T值对缓冲区中的脉宽序列进行解码,并且每解码出一个比特值,就用此比特值对应的脉宽值重新计算参考T值;依次解码,直至脉宽缓冲区中的数据全部解码为对应的比特值;最后将比特值解码为磁道数据。若解码失败,则则启动反向解码,以提高刷卡的成功率。本发明通过硬件电路上对磁卡信息转化的电信号采集并处理,完成信号录入后,启动软件分析、优化解码,抗干扰能力强且适应性好。
文档编号G06K7/00GK103034829SQ201210560710
公开日2013年4月10日 申请日期2012年12月19日 优先权日2012年12月19日
发明者陈成秋, 高刚强, 张登峰, 余杭军 申请人:福建升腾资讯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1