云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

阿里云_mysql分布式数据库架构_速度快

小七 141 0

阿里云_mysql分布式数据库架构_速度快

自定义Cordova插件

我不会花太多时间在介绍上,马上就开始。我不得不更新一个在WindowsMobile6.5上运行的过时的移动应用程序。新的移动设备应该支持多种操作系统和不同类型的设备。因此,我决定创建一个混合移动应用程序。作为一名SAP开发人员,我使用WebIDE和HAT工具箱创建了这个应用程序。我开始创建一个SAPUI5应用程序,并使用HAT工具箱将这个应用程序部署到我的本地计算机上。HAT工具箱生成了一个Cordova项目,我可以在本地计算机上构建它。在这个混合移动应用程序中,有两个本地要求:

离线用激光扫描仪扫描条形码

对于离线部分,我没有使用SAP HCPms或SMP。相反,我使用了cordova SQLite插件。这个插件支持几乎所有类型的移动平台。(离线场景非常基本)

激光条码扫描没那么容易。我必须支持多种平台和不同类型的设备。激光条形码扫描器在每种类型的设备上是不同的。它在每个设备上的工作方式不同,对于某些设备,它是集成的,物联网解决方案,对于其他设备,它有一个API。这意味着可能有两个不同的设备使用相同的操作系统需要不同的编码,例如:

Intermec–>AndroidPanasonic–>Android

这两款设备都需要不同的代码才能使用激光条形码扫描仪。对于运行在Intermec上的Android,已经存在一个插件:https://www.npmjs.com/package/com.shahidachmat.intermec.scanner

松下设备没有,Intermec插件不兼容。基于Intermec插件,中国物联网,我开始为Panasonic创建一个插件。除了Android,松下也有运行通用Windows平台(又称windows10)的设备。对于这些设备,我还需要创建一个激光条形码扫描仪插件。对于Panasonic设备,我创建了一个插件,可以用于android版本和UWP版本。

我只解释创建自己的插件最耗时的部分。

android的Cordova插件总是需要"执行"功能。此函数将从JavaScript调用。它接收以下参数:

操作:知道它必须执行哪个函数参数:可以从JavaScript传递的参数CallbackContext:一个可以用来响应JavaScript的对象

在我的插件中,数据和大数据的区别,我创建了一个action"activateReader"来激活激光条形码扫描仪。此函数将callbackContext保留在私有属性中,以便在扫描条形码时使用它。

"onRead"函数是扫描仪的回调函数。这意味着每次条形码扫描都将执行此功能。这部分花了我大部分时间。返回扫描结果很容易,但这只起作用一次。经过一番研究,我发现我必须将keepCallback属性改为true。有了这个属性,我可以将任意多的条形码返回到Fiori应用程序。

你可以在github上找到android插件的完整代码:https://github.com/lemaiwo/PanasonicScanner/blob/master/src/android/PanasonicScanner.java

除了运行在Android上的Panasonic设备外,我还必须支持运行在通用Windows平台(又名Windows 10)上的Panasonic设备。

对于这个插件,我没有类似Cordova Windows插件的例子。我请一位.NET开发人员为我提供C代码,以便与松下设备上的条形码激光扫描仪进行通信!下一步是用这个C代码制作一个Cordova插件。经过一番研究,云服务器服务,我发现有更多的要求,而不是只有C#编码。CordovaWindows插件包含两个部分:

windows运行时组件JavaScript代理

我开始创建一个基于microsoftdocu的Windows运行时组件状态:https://msdn.microsoft.com/en-us/library/windows/apps/hh779077.aspx

我想指出几点:

在windows运行时组件中定义类需要"sealed"语句:

调用"async Task"函数是不正确的可能吧。我收到的.NET开发人员的代码就是这样。他为这个函数创建了一个包装器,使它与cordova兼容。此包装器函数将从JavaScript代理调用。(activateHelper是原始函数。):

在activate scanner函数中,我为条形码激光扫描仪定义了一个回调函数。每次扫描都会触发这个回调函数。在这个回调函数中,我将把条形码发送回JavaScript代理。将条形码发送回JavaScript代理花了我很多时间。它不是那么简单,也没有太多的代码示例。过了一段时间,我发现我必须使用事件将一些内容发送回JavaScript代理。在Windows运行时组件中触发事件有三种方式:

https://msdn.microsoft.com/en-us/library/windows/apps/dn169426.aspx

我是这样做的:

在OnBarcode函数中,我触发了一个事件。此事件将条形码发送到JavaScript代理。

在JavaScript代理中我有一个函数activate。此函数将从Cordova插件调用。在这里,我在Windows运行时组件中创建了一个对象类。然后我使用这个对象来执行"activate"函数。这也是我参加C#活动的地方。在eventhandler中,大数据应用技术,我调用cordova的succesCallback返回结果,在本例中是条形码。在这个successCallback中,我传递条形码并将keepCallback参数设置为true。这是保持successCallback函数活动所必需的。否则我将无法多次返回条形码。

有关Cordova Windows插件的更多信息,请访问:https://cordova.apache.org/docs/en/latest/guide/platforms/win8/plugin.html

您可以在github上找到完整的Windows运行时组件和JavaScript代理:https://github.com/lemaiwo/PanasonicScanner/tree/master/src/windows

经过长时间的研究和尝试,我在Panasonic Android和Windows设备上完成了激光条形码扫描仪。

该插件在github上可用https://github.com/lemaiwo/PanasonicScanner

NPM上也有:https://www.npmjs.com/package/cordova-panasonic-scanner

它也应该出现在Cordova搜索中,但由于某些原因,它没有出现:https://cordova.apache.org/plugins/?q=panasonic

享受使用吧!

谨致问候,沃特