如何从 Firemonkey/Delphi 中的条码扫描仪获取数据

Posted

技术标签:

【中文标题】如何从 Firemonkey/Delphi 中的条码扫描仪获取数据【英文标题】:How get data from barcode scanner in Firemonkey/Delphi 【发布时间】:2017-04-10 09:04:57 【问题描述】:

在 Delphi Tokyo 上开发应用程序,设备 Lanchang U8000S (http://www.itlecom.com/ProductsDetails.asp?id=1) 创建表单时使用:

VKAutoShowMode := TVKAutoShowMode.never;

用于在示例 TEdit 组件和其他输入组件中输入时禁用显示虚拟键盘,因为在应用程序中可以使用条形码扫描仪或硬件数字键盘输入大量输入。我设置为键盘模拟模式的扫描仪配置,扫描模拟后按 Enter 键。

http://www.lckj.cn/Upload/U8000S_Scan_API.pdf

我用:

setOutScanMode(1);//keyboard emulation
setScanCodeEnterKey(true);// Additional enter key after the scan results. 

问题是,如果您启动应用程序,将光标和焦点放在一个TEdit 组件上并扫描条形码,没有任何结果,使用回车键,但是如果您调用虚拟键盘并在打开后简单地关闭它,那么扫描仪工作正常,你得到结果!在扫描仪不提供数据的同时,设备上的数字键盘工作正常。但是随后您在应用程序中更改焦点,然后再次进行一些编辑,再次从扫描仪输入不起作用。

看起来如果你不使用VKAutoShowMode := TVKAutoShowMode.never; 那么一切正常,但我不能使用这个选项,因为我有很多表格没有地方显示虚拟键盘,但是如果你不需要,为什么要显示虚拟键盘它!!!

看来还有另一种选择:

setOutScanMode(0) // Broadcast output mode. 

但我不知道如何使用这种模式,因为我现在不知道在哪里捕获这些扫描数据!?

我希望有人知道如何解决这个问题!?

【问题讨论】:

【参考方案1】:

如果您使用的是基于 android 的条码扫描器,我发现接收扫描的最佳方式是我们的“意图”。 Delphi 示例中有示例应用程序,通常安装在 C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Mobile Snippets\AndroidIntents。 Brian Long 有几篇关于在 Android 中使用意图的文章和视频。他还在http://www.delphifeeds.com/go/s/149394 的初始 Rio 10.3 版本中指出了这些(和修复)的一些问题。我不知道这些是否已在最新版本中得到修复。

【讨论】:

以上是关于如何从 Firemonkey/Delphi 中的条码扫描仪获取数据的主要内容,如果未能解决你的问题,请参考以下文章

Delphi xe7 FireMonkey / Mobile (Android, iOS)生成 QR Code完整实例

微信小程序:如何判断数组中的条数

java中如何获取ResultSet rs结果集中的条数?

oracle:如何将一个表中的一列取出来给一个已声明的变量,同时将取出的条数传给另一个已声明的变量。

matplotlib hist() 中的条之间的间距与数千个箱

如何在条形图的条内显示值?