一种应用于POS系统的扫描按键方法与流程

文档序号:11628570阅读:581来源:国知局
一种应用于POS系统的扫描按键方法与流程

本发明涉及pos机程序领域,尤其涉及一种应用于pos系统的扫描按键方法。



背景技术:

随着刷卡或二维码消费的增多,pos机应用也越来越广泛。进行刷卡或二维码消费时,需要键入支付密码,而诸如键盘侧录等方式会攻击pos机系统,盗取用户的支付密码和支付账户,造成在pos机系统上消费用户的财产损失。



技术实现要素:

本发明的目的在于提供一种应用于pos系统的扫描按键方法,从而解决现有技术中存在的前述问题。

为了实现上述目的,本发明所述应用于pos系统的扫描按键方法,所述方法:

s1,预先设置根据历史按键的行列电平输入状态数据获得的键盘按键表;

s2,当有按键按下时,调用按键扫描函数,随机选取预设扫描方法得到当前被扫描行或列的电平数据;

所述预设扫描方法包括:拉高扫描列方法、拉低扫描列方法、拉高扫描行方法、拉低扫描行方法;

s3,在预先设置的键盘按键表的基础上,结合当前被扫描行或列的电平数据,获得被按下的按键并存入缓存区,完成一次按键的扫描。

优选地,相邻两次按键扫描的时间间隔为10毫秒。

优选地,所述预设扫描方法为拉高扫描列方法,具体包括以下步骤:

a1,判断列当前计数是否小于预设列的最大计数,如果是,则进入a2;如果否,则记录当前按键的状态数据;

a2,设置所有列和所有行所对应针脚的电阻下拉,设置所有列和所有行所对应针脚为输入;

a3,设置被扫描列所对应针脚为输出,设置被扫描列所对应针脚为高电平;

a4,判断行的计数是否小于预设行的最大计数,如果是,则记录被扫描行对应针脚输出高电平时,当前被扫描列和被扫描行所对应的按键状态数据;如果否,则返回a1。

优选地,所述预设扫描方法为拉低扫描列方法,具体包括以下步骤:

b1,判断列当前计数是否小于预设列的最大计数,如果是,则进入b2;如果否,则记录当前按键的状态数据;

b2,设置所有列和所有行所对应针脚的电阻上拉,设置所有列和所有行所对应针脚为输入;

b3,设置被扫描列所对应针脚为输出,设置被扫描列所对应针脚为低电平;

b4,判断行的计数是否小于预设行的最大计数,如果是,则记录被扫描行对应针脚输出低电平时,当前被扫描列和被扫描行所对应的按键状态数据;如果否,则返回b1。

优选地,所述预设扫描方法为拉高扫描行方法,具体包括以下步骤:

c1,判断行当前计数是否小于预设行的最大计数,如果是,则进入c2;如果否,则记录当前按键的状态数据;

c2,设置所有列和所有行所对应针脚的电阻下拉,设置所有列和所有行所对应针脚为输入;

c3,设置被扫描行所对应针脚为输出,设置被扫描行所对应针脚为高电平;

c4,判断列的计数是否小于预设列的最大计数,如果是,则记录被扫描列对应针脚输出高电平时,当前被扫描列和被扫描行所对应的按键状态数据;如果否,则返回c1。

优选地,所述预设扫描方法为拉低扫描行方法,具体包括以下步骤:

d1,判断行当前计数是否小于预设行的最大计数,如果是,则进入d2;如果否,则记录当前按键的状态数据;

d2,设置所有列和所有行所对应针脚的电阻上拉,设置所有列和所有行所对应针脚为输入;

d3,设置被扫描行所对应针脚为输出,设置被扫描行所对应针脚为低电平;

d4,判断列的计数是否小于预设列的最大计数,如果是,则记录被扫描列对应针脚输出低电平时,当前被扫描列和被扫描行所对应的按键状态数据;如果否,则返回d1。

优选地,在步骤s3之后还包括以下步骤:

s4,检测缓存区中是否有新更新的按键,如果有,则检测是否需要播放按键音;如果是,则播放按键音;如果否,则不播放按键音;

在检测是否需要播放按键音的同时,唤醒读取按键的线程。

本发明的有益效果是:

使用本发明所述方法在按键扫描过程中随机使用不同预设扫描方法,避免键盘侧录等方式对按键扫描过程的攻击,保证了数据的安全性。

附图说明

图1是应用于pos系统的扫描按键方法的流程示意图;

图2是拉高扫描列方法的流程示意图;

图3是拉低扫描列方法的流程示意图;

图4是拉高扫描行方法的流程示意图;

图5是拉低扫描行方法的流程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。

实施例

本实施例所述应用于pos系统的扫描按键方法,所述方法:

s1,预先设置根据历史按键的行列电平输入状态数据获得的键盘按键表;

s2,当有按键按下时,调用按键扫描函数,随机选取预设扫描方法得到当前被扫描行或列的电平数据;

所述预设扫描方法包括:拉高扫描列方法、拉低扫描列方法、拉高扫描行方法、拉低扫描行方法;

s3,在预先设置的键盘按键表的基础上,结合当前被扫描行或列的电平数据,获得被按下的按键并存入缓存区,完成一次按键的扫描;

s4,检测缓存区中是否有新更新的按键,如果有,则检测是否需要播放按键音;如果是,则播放按键音;如果否,则不播放按键音;在检测是否需要播放按键音的同时,唤醒读取按键的线程。

更详细的解释说明为:

(一)相邻两次按键扫描的时间间隔为10毫秒。

(二)

1、所述预设扫描方法为拉高扫描列方法,具体包括以下步骤:

a1,判断列当前计数是否小于预设列的最大计数,如果是,则进入a2;如果否,则记录当前按键的状态数据;

a2,设置所有列和所有行所对应针脚的电阻下拉,设置所有列和所有行所对应针脚为输入;

a3,设置被扫描列所对应针脚为输出,设置被扫描列所对应针脚为高电平;

a4,判断行的计数是否小于预设行的最大计数,如果是,则记录被扫描行对应针脚输出高电平时,当前被扫描列和被扫描行所对应的按键状态数据;如果否,则返回a1。

2、所述预设扫描方法为拉低扫描列方法,具体包括以下步骤:

b1,判断列当前计数是否小于预设列的最大计数,如果是,则进入b2;如果否,则记录当前按键的状态数据;

b2,设置所有列和所有行所对应针脚的电阻上拉,设置所有列和所有行所对应针脚为输入;

b3,设置被扫描列所对应针脚为输出,设置被扫描列所对应针脚为低电平;

b4,判断行的计数是否小于预设行的最大计数,如果是,则记录被扫描行对应针脚输出低电平时,当前被扫描列和被扫描行所对应的按键状态数据;如果否,则返回b1。

3、所述预设扫描方法为拉高扫描行方法,具体包括以下步骤:

c1,判断行当前计数是否小于预设行的最大计数,如果是,则进入c2;如果否,则记录当前按键的状态数据;

c2,设置所有列和所有行所对应针脚的电阻下拉,设置所有列和所有行所对应针脚为输入;

c3,设置被扫描行所对应针脚为输出,设置被扫描行所对应针脚为高电平;

c4,判断列的计数是否小于预设列的最大计数,如果是,则记录被扫描列对应针脚输出高电平时,当前被扫描列和被扫描行所对应的按键状态数据;如果否,则返回c1。

4、所述预设扫描方法为拉低扫描行方法,具体包括以下步骤:

d1,判断行当前计数是否小于预设行的最大计数,如果是,则进入d2;如果否,则记录当前按键的状态数据;

d2,设置所有列和所有行所对应针脚的电阻上拉,设置所有列和所有行所对应针脚为输入;

d3,设置被扫描行所对应针脚为输出,设置被扫描行所对应针脚为低电平;

d4,判断列的计数是否小于预设列的最大计数,如果是,则记录被扫描列对应针脚输出低电平时,当前被扫描列和被扫描行所对应的按键状态数据;如果否,则返回d1。

本发明所述方法由中央处理器负责解码,需要用到针脚的上拉或下拉电阻、一个中断、一个硬件定时器。每次中断时扫描按键一次,同时激活定时器,定时器每十毫秒触发一次,每次也扫描按键一次,当按键解码完成不再需要继续扫描时,会自动关闭该定时器。

扫描按键时,按扫描行或扫描列对应的通用输入输出针脚的上拉或下拉电阻分类,共有四种扫描按键方法,分别为:拉高扫描列方法、拉低扫描列方法、拉高扫描行方法、拉低扫描行方法,在程序撰写时,赋予上述四种方法唯一的编码号。

每次扫描按键时,从四个编码号中随机选取编码号,保证了每个按键不会和某一特定的时序相对应,增加了攻击的难度。

通过采用本发明公开的上述技术方案,得到了如下有益的效果:

使用本发明所述方法在按键扫描过程中随机使用不同预设扫描方法,避免键盘侧录等方式对按键扫描过程的攻击,保证了数据的安全性。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1