在线签名识别系统的数据采集和USB通信
时间:06-22
来源:互联网
点击:
3.2 采集数据的传输格式
采集的签名信息一般包括书写时的横坐标值、纵坐标值和压力坐标值,当其通过触摸控制器芯片后,这些模拟量将被转化为12位数字量。其坐标值的范围为0~095。每次采集时,要保存这样的三个坐标值需要6个字节的空间。设计时可以在程序中用一个静态数组来存放坐标值,图4所示是所采集数据的存储格式。
在本签名系统中,每秒钟采集的点数对后续的签名识别过程十分重要。点数少了会漏掉许多重要信息(如断点信息,峰值信息等),而点采集过多又会增加传输的时间,从而影响实时显示并增加匹配算法的运算量。通过对国内外采集系统的分析认为:每秒采集200个点最为适合,即每过5 ms就采集一次坐标值。
由于本系统含有签名信息的采集过程,所以在程序设计时,应在USB主程序中枚举完后就采集数据并将其传送到USB的端点缓冲器子程序,且这一过程应该在5ms内完成。当主机发来接收数据的命令后,PDIUSBD12应把数据从缓冲器中发到PC机。当然,启动和停止采集命令也可以通过PC机上的实时显示应用程序来控制,这一控制所需的通信也可通过USB来实现。
3.3 上位机应用程序编写
USB应用程序可采用VB编写,设计时把对USB的访问做成动态链接库,这样可以节省程序、提高程序运行效率。实际上,只需要告诉VB系统动态链接库文件(DLL)的定位信息和声明读写USB端口的接口函数,就可以对USB端口进行操作。而在VB中若要访问动态链接库函数则必须把定位信息和函数声明放在一个后缀为bas的模块中。模块中的声明代码如下:
Public Declare Function ReadData Lib " C:\WINDOWS\system32\EasyUSB.dll " - (ByVal pipenum As Integer,recbuffer As Byte,ByVal ilen AsInteger,ByVal waittime As Integer)As Integer
在VB中可以用定时器控件来同步接收数据,也可以设置定时器的Interval属性,即触发定时器的间隔时间。当每次触发时间到达时,就可从USB接口接收数据。
签名的实时显示分为采集坐标的实时显示和签名笔迹的实时显示,其中采集坐标显示包含横纵坐标和压力坐标的显示。
签名坐标的实时显示可以用TextBox文本框控件来实现,但要用一个转换函数Str ()负责把采集到的整型数据转换为字符串类型,这样就可以直接在文本框显示了。
签名笔迹的实时显示稍微复杂一点,其实现方法是采用画线函数法,即当知道了两个点时就可以根据这两个点画线。每采集并接收到一个点时,就执行一次画线函数,以把当前的点和前一个点相连。这样,当你签名的时候,画线函数就会把你的书写笔迹呈现出来。
在进行画线时还要考虑干扰问题。由于液晶显示对签名采集芯片有一定的影响,因而可能造成采集数据的抖动,有时候还会出现非点(即本次采集到的值与前次和后一次的采集值相差较大),本设计虽然在系统硬件上做了一些抗干扰措施(比如加装滤波电容等),但效果不是很明显。
后经实验发现,通过软件去抖方法可以实现笔迹的平滑显示。具体去抖可从以下两个方面实现:第一是把两点之间的连线改为每四个点连一次,并把采集到的四个点的坐标值取平均值,从而缓解坐标值的抖动;第二是设定一个域值,当两个点之间的坐标绝对值之差不在该域值范围内时,即判定该点为非点,而不对该坐标值进行任何操作,直接舍弃。通过以上两个方面的措施可以去掉大多数的非点和抖动点,使曲线变得更加平滑。
图5所显示的是抗干扰处理前后所采集到的签名,图中箭头处即为受干扰的笔划。
签名笔迹实时显示的算法流程图如图6所示。
图7给出了VB应用程序下的实时显示界面。
4 结束语
本在线签名系统使用ADS7846实现了高速和高精度的数据采集,该芯片不仅能采集签名的横纵坐标,还能采集压力坐标,从而丰富了在线签名系统的动态签名信息,为以后的签名识别提供了更多的判断依据。本在线签名识别系统中采用USB接口来解决动态信息的采集设备和计算机之间的数据通信具有一定的现实意义。该方案可以准确实时地将采集到的签名数据传送到计算机。经测试,本系统传输信息的速度大于1Mbps,能够很好的满足系统的要求;同时由VB编写的人机界面还可实现签名的再现。
采集的签名信息一般包括书写时的横坐标值、纵坐标值和压力坐标值,当其通过触摸控制器芯片后,这些模拟量将被转化为12位数字量。其坐标值的范围为0~095。每次采集时,要保存这样的三个坐标值需要6个字节的空间。设计时可以在程序中用一个静态数组来存放坐标值,图4所示是所采集数据的存储格式。
|
在本签名系统中,每秒钟采集的点数对后续的签名识别过程十分重要。点数少了会漏掉许多重要信息(如断点信息,峰值信息等),而点采集过多又会增加传输的时间,从而影响实时显示并增加匹配算法的运算量。通过对国内外采集系统的分析认为:每秒采集200个点最为适合,即每过5 ms就采集一次坐标值。
由于本系统含有签名信息的采集过程,所以在程序设计时,应在USB主程序中枚举完后就采集数据并将其传送到USB的端点缓冲器子程序,且这一过程应该在5ms内完成。当主机发来接收数据的命令后,PDIUSBD12应把数据从缓冲器中发到PC机。当然,启动和停止采集命令也可以通过PC机上的实时显示应用程序来控制,这一控制所需的通信也可通过USB来实现。
3.3 上位机应用程序编写
USB应用程序可采用VB编写,设计时把对USB的访问做成动态链接库,这样可以节省程序、提高程序运行效率。实际上,只需要告诉VB系统动态链接库文件(DLL)的定位信息和声明读写USB端口的接口函数,就可以对USB端口进行操作。而在VB中若要访问动态链接库函数则必须把定位信息和函数声明放在一个后缀为bas的模块中。模块中的声明代码如下:
Public Declare Function ReadData Lib " C:\WINDOWS\system32\EasyUSB.dll " - (ByVal pipenum As Integer,recbuffer As Byte,ByVal ilen AsInteger,ByVal waittime As Integer)As Integer
在VB中可以用定时器控件来同步接收数据,也可以设置定时器的Interval属性,即触发定时器的间隔时间。当每次触发时间到达时,就可从USB接口接收数据。
签名的实时显示分为采集坐标的实时显示和签名笔迹的实时显示,其中采集坐标显示包含横纵坐标和压力坐标的显示。
签名坐标的实时显示可以用TextBox文本框控件来实现,但要用一个转换函数Str ()负责把采集到的整型数据转换为字符串类型,这样就可以直接在文本框显示了。
签名笔迹的实时显示稍微复杂一点,其实现方法是采用画线函数法,即当知道了两个点时就可以根据这两个点画线。每采集并接收到一个点时,就执行一次画线函数,以把当前的点和前一个点相连。这样,当你签名的时候,画线函数就会把你的书写笔迹呈现出来。
在进行画线时还要考虑干扰问题。由于液晶显示对签名采集芯片有一定的影响,因而可能造成采集数据的抖动,有时候还会出现非点(即本次采集到的值与前次和后一次的采集值相差较大),本设计虽然在系统硬件上做了一些抗干扰措施(比如加装滤波电容等),但效果不是很明显。
后经实验发现,通过软件去抖方法可以实现笔迹的平滑显示。具体去抖可从以下两个方面实现:第一是把两点之间的连线改为每四个点连一次,并把采集到的四个点的坐标值取平均值,从而缓解坐标值的抖动;第二是设定一个域值,当两个点之间的坐标绝对值之差不在该域值范围内时,即判定该点为非点,而不对该坐标值进行任何操作,直接舍弃。通过以上两个方面的措施可以去掉大多数的非点和抖动点,使曲线变得更加平滑。
图5所显示的是抗干扰处理前后所采集到的签名,图中箭头处即为受干扰的笔划。
签名笔迹实时显示的算法流程图如图6所示。
|
图7给出了VB应用程序下的实时显示界面。
|
4 结束语
本在线签名系统使用ADS7846实现了高速和高精度的数据采集,该芯片不仅能采集签名的横纵坐标,还能采集压力坐标,从而丰富了在线签名系统的动态签名信息,为以后的签名识别提供了更多的判断依据。本在线签名识别系统中采用USB接口来解决动态信息的采集设备和计算机之间的数据通信具有一定的现实意义。该方案可以准确实时地将采集到的签名数据传送到计算机。经测试,本系统传输信息的速度大于1Mbps,能够很好的满足系统的要求;同时由VB编写的人机界面还可实现签名的再现。
USB 电阻 触摸屏 Atmel 单片机 红外 电容 电压 电流 MCU 电路 总线 收发器 C语言 相关文章:
- 用电子技术最大化太阳能电池板输出功率(05-18)
- 2009视频监控:网络化及其推动的几大趋势(06-03)
- 与MSP430 USI端口配合使用ADS8361(06-18)
- 辰汉电子推出低成本快速量产视频监控方案+4路输入方案(06-24)
- 用于风力发电设备的连接器的简易安装与维护(06-21)
- 解读USB-IF电池充电规范(10-27)



