【Access源码】判断是否扫码枪输入的通用函数源码分享。

现在在仓库管理,超市贩售等场合,扫码枪等扫码输入设备已经成了必不可少的工具,基本上不再需要人工去输入商品编码了。

那么我们在用Access开发软件时,能和扫码枪结合使用吗?答案是肯定的。实际上绝大部分扫码枪的原理,都是用的模拟键盘输入,也就是说只要能用键盘,扫码枪就能用。但你用Access开发的软件不能用键盘吗?绝对不可能嘛!

是否扫码枪扫码输入判别原理:

由于很多扫码枪是通过模拟键盘的方式进行输入,因此难以直接从输入来源判断。但是因为扫描输入间隔短而规律,手工输入间隔长短不一,所以通过判断按键之间的间隔时间来判断,是相对可行和可靠的方案。

在本示例中,我将基于此原理的判断功能封装为一个通用的函数 IsScannerInput 方便大家调用。

如果你对VBA编程完全熟悉了,可以直接看下面的函数源代码即可,当然也可以下载文末的示例附件。

函数源码:

Win32API函数声明

获取开机到现在过去的时间(此Win32 API函数可以精确到毫秒数)

Public Declare Function ApiGetTime Lib "winmm.dll" Alias "timeGetTime" () As Long

=============================

函数名称: IsScannerInput

用途说明: 用于判断是否使用扫码枪等扫描设备输入。在输入框KeyDown事件中调用。

输入参数:

KeyCode 输入框KeyDown事件的KeyCode参数,传址调用。

KeyPressInterval 扫描设备输入时两次按键的最大间隔时间。

RepeatCount 连续按键次数,通过判断连续多次的按键间隔时间,以增加准确度。

EndKeyCode 扫描设备输入结束标志字符,一般情况下默认是回车键,但在设备上 应该是可以通过跳线或开关进行设置的。

返 回 值: 当捕获到输入结束标志字符(一般是回车)时,如果前面RepeatCount个字符的输入间隔,满足,则返回True,否则返回False。

作 者: 红尘如烟 2012-02-14

修 改: 红尘如烟 2019-01-23

注意事项: 很多扫描枪是通过模拟键盘的方式进行输入,因此难以直接从输入来源判断。此函数的判断原理,是通过判断按键之间的间隔,扫描输入间隔短而规律,手工输入间隔长短不一。

==============================

Public Function IsScannerInput _

( _

ByRef KeyCode As Integer _

Optional KeyPressInterval As Long = 100 _

Optional RepeatCount As Long = 5 _

Optional EndKeyCode As Integer = vbKeyReturn _

) As Boolean

Static slngKeyPressTime(255) As Long

IsScannerInput = False

slngKeyPressTime(RepeatCount - 1) = slngKeyPressTime(RepeatCount)

slngKeyPressTime(RepeatCount) = ApiGetTime()

Dim lngI As Long

For lngI = 1 To RepeatCount - 2

slngKeyPressTime(lngI) = slngKeyPressTime(lngI + 1)

Next

If KeyCode = EndKeyCode Then

Dim blnScanMode As Boolean: blnScanMode = True

For lngI = 1 To RepeatCount - 1

If slngKeyPressTime(lngI + 1) - slngKeyPressTime(lngI) > KeyPressInterval Then

blnScanMode = False

Exit For

End If

Next

If blnScanMode Then

KeyCode = 0

IsScannerInput = True

End If

End If

End Function

示例下载:

在“了解更多”里下载。

access用扫描枪输入_判断是否扫码枪输入的通用函数源码相关推荐

  1. asp毕业设计——基于asp+access的学生排课管理系统设计与实现(毕业论文+程序源码)——学生排课管理系统

    基于asp+access的学生排课管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的学生排课管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需 ...

  2. asp毕业设计——基于asp+access的在线人才招聘网设计与实现(毕业论文+程序源码)——人才招聘网

    基于asp+access的在线人才招聘网设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的在线人才招聘网设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下 ...

  3. asp毕业设计——基于asp+access的航班在线定票系统设计与实现(毕业论文+程序源码)——航班在线定票系统

    基于asp+access的航班在线定票系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的航班在线定票系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. ...

  4. asp毕业设计——基于asp+access的校园网上购物平台设计与实现(毕业论文+程序源码)——网上购物平台

    基于asp+access的校园网上购物平台设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的校园网上购物平台设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. ...

  5. asp毕业设计——基于asp+access的电子政务档案管理系统设计与实现(毕业论文+程序源码)——电子政务档案管理系统

    基于asp+access的电子政务档案管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的电子政务档案管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地 ...

  6. asp毕业设计——基于asp+access的校园新闻发布管理系统设计与实现(毕业论文+程序源码)——新闻发布管理系统

    基于asp+access的校园新闻发布管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的校园新闻发布管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地 ...

  7. asp毕业设计——基于asp+access的精品课程教学网站设计与实现(毕业论文+程序源码)——精品课程教学网站

    基于asp+access的精品课程教学网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的精品课程教学网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需 ...

  8. asp毕业设计——基于asp+access的辅导员之家网站设计与实现(毕业论文+程序源码)——辅导员之家网站

    基于asp+access的辅导员之家网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的辅导员之家网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下 ...

  9. asp毕业设计——基于asp+access的精品在线试题库设计与实现(毕业论文+程序源码)——精品在线试题库

    基于asp+access的精品在线试题库设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的精品在线试题库设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下 ...

最新文章

  1. 数据库期末复习之并发控制
  2. poj2002 poj3432 正方形个数 (hash,二分)
  3. 小波变换理解:消失矩、支撑长度的理解
  4. securecrt7.0.0合并多个窗口
  5. Js中caller和callee的区别
  6. tomcat内存溢出
  7. 系统架构设计师面试java架构师 面试经验分享
  8. 无法重新声明块范围变量。此处也声明了 。_Go 语句块与作用域
  9. lua循环,减少不必要的循环
  10. js 跨域访问 找了好长时间
  11. 基于SSM的图书商城
  12. 红盟云卡-开源的发卡网源码
  13. 仿链家地图找房_【前端-自如/链家/安居客-地图找房】地图api如何获取浏览器视野范围内的经纬度区间?...
  14. 【python 淘宝爬虫】淘宝信誉分抓取
  15. 知乎-知乎网站-复制文字-破解知乎复制
  16. 中式家装红木装修,邂逅低调的奢华
  17. 计算机网络传输层之SR协议
  18. 敏捷团队︱数字化领导力之敏捷团队建设
  19. 气象学需要计算机知识吗,应用气象学专业学什么
  20. ap cs java_AP计算机科学(AP CS)考试介绍

热门文章

  1. VS2013显示行号及显示程序汇编代码
  2. jQuery学习之五---效果
  3. day32 java的多线程(4)synchronized
  4. java ceilingentry_java.util.TreeMap.ceilingKey()方法实例
  5. python 渐变色柱形图_Python利用imshow制作自定义渐变填充柱状图(colorbar)
  6. springboot 集成mybatis_Spring Boot 集成Mybatis实现多数据源
  7. java etcd api_在java中如何使用etcd的v2 和v3 api获取配置,并且对配置的变化进行监控和监听...
  8. linux进程热更新 go,Golang热更新原理
  9. mysql 自定义函数 找不到表_mysql 自定义函数
  10. centos7 cuda测试_CentOS 7 安装 NVIDIA 显卡驱动以及CUDA驱动(自测可用)