USB扫码枪二维码读取(二)——MFC篇
USB扫码枪为即插即用,通过类似键盘的方式和系统进行交互,在MFC中进行处理比较方便,对键盘消息进行处理即可。
(1)文本框输入获取焦点,扫描后自动显示在文本框内。
(2)在PreTranslateMessage中对消息进行处理获取扫码数据。
使用第二种方式对接收到的一个个键盘数值的处理。
我的扫码枪设置后扫码的情况举例如下:
(1)在大写字母前发送shift的虚拟码16
(2)第二功能键发送shift加对应的虚拟码
(3)结束发送键盘码为13 40
如:16 187 对应的为键盘的+,ASCII码为43
16 65 对应的为键盘的A ,ASCII码为65
需要处理shift对应的大小写问题,以及第二功能键的特殊处理;
switch(pMsg->message){case WM_KEYDOWN:vkCode = pMsg->wParam;if (vkCode >= 65 && vkCode <= 90)vkCode = vkCode + 32;//处理为小写字母if (m_chLast == 16){if (vkCode >= 48 && vkCode <= 57){if(vkCode==48)vkCode= 41;//)else if (vkCode == 49)vkCode = 33; //!else if (vkCode == 50)vkCode = 64;// @else if (vkCode == 51)vkCode = 35;//#else if (vkCode == 52)vkCode = 36;//$else if (vkCode == 53)vkCode = 37;//%else if (vkCode == 54)vkCode = 94;//^else if (vkCode == 55)vkCode = 38;//&else if (vkCode == 56)vkCode = 42;//*else if (vkCode == 57)vkCode = 40;//)}else if (vkCode >= 97 && vkCode <= 122)vkCode = vkCode - 32;//为大写字母if (vkCode == 186)//:{vkCode = 58;}else if (vkCode == 187)vkCode = 43;//+else if (vkCode == 189)vkCode = 95;//-else if (vkCode == 190)vkCode = 62;//>else if (vkCode == 191)vkCode = 63;//?else if (vkCode == 219)vkCode = 123;//{else if (vkCode == 220)vkCode = 124;//|else if (vkCode == 221)vkCode = 125;//}}if (vkCode == 186)// ;{vkCode = 59;}if (vkCode == 187)// ={vkCode = 61;}if (vkCode == 189)// -{vkCode = 45;}if (vkCode == 190)//.{vkCode = 46;}if (vkCode == 191)// /{vkCode = 47;}if (vkCode == 219)vkCode = 91;//[if (vkCode == 220)vkCode = 92;// "\"if (vkCode == 220)vkCode = 93;//]if (vkCode == 109){vkCode = 45;}if (vkCode != 16 && vkCode != 13 && vkCode != 40&&vkCode!=17&&m_chLast!=17){TRACE("%c %d\r\n",vkCode,vkCode);m_QRCode.AppendChar(vkCode); }m_chLast=vkCode;if (pMsg->wParam == VK_RETURN){m_chLast=0;if(!isQRExist){TRACE("%s\r\n",m_QRCode);m_QRCodeRet = m_QRCode;m_QRCode="";isQRExist = true;StartGameFromQR();}return TRUE;}}break;default:break;}
二是扫码结束的判断。
程序中对接收到13回车的键盘码为结束的判断标志。
CString m_QRCode,m_QRCodeRet;
USB扫码枪二维码读取(二)——MFC篇相关推荐
- 小程序 输入框输入 扫描二维码读取二维码内容 传参实现
1.wxml页面 <view class="groupmsg"><view class="content">客户批次:</view ...
- java生成二维码读取二维码,面试真题解析
拼多多一面 首先自我介绍 参加过哪些项目 并发编程三要素? 实现可见性的方法有哪些? 多线程的价值? 创建线程的三种方式的对比? 画出线程的状态流转图 常用的并发工具类有哪些? CyclicBarri ...
- 解决自动分析仪条码二维码读取的方案
随着物联网技术的发展,越来越多的企业开始采用条码二维码读取技术来提高企业的生产效率和管理水平.条码二维码读取技术可以帮助企业自动识别和跟踪物品,从而提高企业的生产效率和管理水平.用于检查体液或组织部位 ...
- 扫描二维码读取文档_使用深度学习读取和分类扫描的文档
扫描二维码读取文档 To many people's dismay, there is still a giant wealth of paper documents floating out the ...
- 二维码读取之2d_data_codes_rectify_symbol.hdev
*这个实例展示了如何读取一个经过修正的倾斜的条码 This program demonstrates how to read a slanted 2d data code by preprocessi ...
- 二维码读取之ecc200_simple.dev
*在这个实例中,演示了如何读取Data Matrix ECC 200的条码,第一步呢就是,创建一个二维码读取器,在图形窗口中显示结果 This example program demonstrates ...
- 视觉检测应用之电路板二维码读取
5G时代的到来,对广大电路板企业的研发.生产以及管理能力提出了更高的要求,企业须以更快的速度向市场提供更具有成本效益的产品,提升产品管理追溯效率也是其中非常重要的一环.在电路板上标记字符.图案.一维码 ...
- 二维码读取之PDF_417_bottle.hdev
*本例子展示了如何读取PDF 417的条码 This programs shows how to read 2d data codes of type PDF 417. 关闭更新 dev_update ...
- 二维码读取之ecc200_small_modules_robustness.hdev
*这个实例演示了如何读取非常小的ECC200二维码 This example program shows how to find and decode ECC200 symbols that have ...
- 二维码读取之ecc200_contrast_tolerance.hdev
*这个示例程序演示了contrast_tolerance(对比差异,也就是在某些场合检测表面对比度不均匀情况下需要这个参数) *这个参数对条码读取效果的影响 This example demonstr ...
最新文章
- Java集合之并发容器
- 设计模式六大原则:依赖倒置原则、为什么、多例子、分析例子、总结
- 利用单臂路由实现VLAN间路由
- 除了工商银行,目前中国还有那些宇宙级别的企业?
- MySQL使用详解--根据个人学习总结
- Mysql数据库——sql基本语句
- mysql 5.6 my.cnf配置文件_mysql 5.6 my.cnf 配置
- python django步骤_python - django (ORM使用步骤)
- PHP中的session分析与使用
- Python绘图新冠病毒COVID-19
- 图像超分辨率重建概述
- 如何正确删除TFS上项目
- 海信信号机后台服务器配置,海信自适应交通信号控制系统解决方案
- 兼容性问题以及解决方案
- hex、bin、elf、axf文件区别
- Arch 定制化安装与美化
- Android Studio中新建assets文件的两种方法
- bzoj 3505: [Cqoi2014]数三角形 排列组合+数学
- 关于boost和loki的智能指针
- day05-python数字类型和列表
热门文章
- android按键模拟测试
- 全面解读Java线程池的工作原理
- uniapp vue 身份证号校验
- check your GPU Compute Capability| 2021 英伟达 GPU 的计算能力排名
- 伊格纳修斯的难题 Ignatius‘s puzzle
- 【其它】Mac配置输入法切换快捷键
- h264基础知识梳理
- 10-230 查询计算机工程专业学生选修但软件工程专业学生没有选修的课程
- matlab提示处,MATLAB提示:‘尝试将script XXX.m作为函数执行’解决方法
- 计算机反求设计的一般步骤,逆向设计的概念和基本步骤