如何在Firemonkey/Delphi中从条形码扫描器获取数据

4

在 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个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接