在这个wiki页面中,我们将解释如何通过cordova插件在ITME项目中使用cmbSDK作为自定义小部件
打开ITME Studio并创建新项目
设置项目分辨率
进入项目资源管理器的全局部分,打开项目标签->数据表视图并插入我们将使用的项目标签。我们将在本节后面解释每个标记
所有的标签都是本地的,对标签值的更改只影响到进行更改的站点。
回到图形部分,右键单击屏幕类别并单击插入
设置屏幕属性并按“OK”。
设计标题屏幕并将其命名为header。
这里我们有标题文本,标签,我们将显示阅读器设备电池水平和智能消息对象,显示当前阅读器设备连接状态。
在标题屏幕中,我们将添加我们的barcodeReader自定义小部件。
单击Custom Widget图标
单击import并找到您的barcoderreader。cwp文件。barcodeReader应该显示为可用的小部件。选择它并单击OK。
在标题屏幕中添加barcodeReader自定义小部件
打开barcodeReader属性并进入小部件成员
从自定义小部件映射带有项目标记的属性,并设置操作set +Get和设置您希望在回调事件中执行的脚本。
然后打开标题屏幕脚本,并在标题屏幕打开时调用setPreviewContainerPositionAndSizeEventTrigger和loadScanner方法。同时打开另一个屏幕(主)。
现在创建另一个屏幕,并将其命名为main。
在这个屏幕中,我们有一个矩形,我们显示扫描结果,按钮开始/停止扫描和按钮清除显示的结果。
然后右键单击屏幕组类别并创建启动屏幕组。
打开项目属性并将该组设置为启动屏幕。
因为我们想要部署这个应用程序作为HTML web界面,并从移动设备进行交互,我们需要打开移动访问菜单至少一个,并保存更改关闭。此外,为了更好地与自定义小部件通信,将Process Values设置为最小值100。
当我们完成屏幕和配置时,验证项目。
并将所有屏幕保存为HTML以供web访问
通过所有这些步骤,我们完成了ITME项目。
导航到您的ITME web应用程序物理路径。如果您使用本地IIS服务器,通常此路径是C:\inetpub\wwwroot\ITME81,并复制您下载的barcodeReaderServerFiles。
这些将托管在服务器上的cordova文件将帮助我们通过自定义小部件使用本地特性。稍后打开index.html并引用这些脚本:
当我们导航到服务器URL时,我们在查询字符串中添加我们要使用的平台作为属性。
在barcoderreader .js中,我们检查这个属性来知道要加载哪个cordova文件(iOS还是android)。
现在打开IIS管理器,右键单击ITME81应用程序,单击添加虚拟目录:
将“CustomWidget”设置为别名,并设置为ITME项目的物理路径(在我们的示例中为C:\Users\Marko\Documents\InTouch Machine Edition v8.1 Projects\cmbSdkSample)
请确保与对所选路径具有授权的用户建立连接。
在移动设备上运行康耐视包装应用程序。在服务器URL输入框中插入您的服务器URL并在查询字符串中发送屏幕和guestuser属性。点击导航按钮,您将被重定向到您的服务器URL (http://192.168.1.103/ITME81?在我们的例子中,Screen =header&guestuser=1)。当您单击导航按钮时,应用程序将自动在查询字符串中添加平台作为属性。
注意,在从Cognex Wrapper App导航到服务器URL之前,必须先运行ITME项目。
有了这个属性,我们调用loadScanner(deviceType,sdk_key)方法,这是我们需要做的第一件事,以便使用阅读器设备
有两个输入参数。第一个应该是0,如果我们想使用MX设备执行扫描或1,如果我们将使用移动设备进行扫描。第二个输入参数是sdk_key,它是可选的。只有当我们使用移动设备扫描条形码时,我们才需要设置sdk许可密钥。否则,我们将有星号条码阅读器的结果。
此事件的结果在loadScannerOutputData属性中返回,loadScanner事件作为回调函数调用
例子:
$loadScannerEventTrigger = "loadScanner(0)"$loadScannerEventTrigger = "loadScanner(1, SDK_KEY)"
有了这个属性,我们调用connect()方法来连接阅读器设备,应该在加载阅读器设备后调用。
此事件的结果在connectOutputData属性中返回,连接事件作为回调函数调用。
例子:
$connectEventTrigger = "connect()"
使用这个属性,我们调用disconnect()方法来释放与阅读器设备的连接
此事件的结果在disconnectOutputData属性中返回,并且断开连接事件作为回调函数调用。
例子:
$disconnectEventTrigger = "disconnect()"
有了这个属性,我们调用setPreviewContainerPositionAndSize(startPointX, startPointY, width, height)方法,它有4个输入参数。startPointX, startPointY,宽度和高度,它们的测量单位是%。
这应该在loadScanner方法之前调用,我们使用它来放置移动设备预览容器。
例子:
预览容器位于0,0(左,上),100%右,30%下。$setPreviewContainerPositionAndSizeEventTrigger = "setPreviewContainerPositionAndSize(0,0,100,30)"
使用这个属性,我们调用togglesscanner()方法来启动/停止扫描进程。
例子:
$toggleScannerEventTrigger = " toggleScanner() "
为了启用/禁用符号,我们使用这个属性触发setSymbologyEnabled(p1, p2, p3..)方法。作为输入参数,我们设置符号和状态。我们可以在一次调用中启用/禁用一个或多个符号。
符号列表:UNKNOWN、datammatrix、QR、C128、UPC-EAN、C11、C39、C93、I2O5、CODABAR、EAN-UCC、PHARMACODE、MAXICODE、PDF417、MICROPDF417、DATABAR、POSTNET、PLANET、4STATE-JAP、4STATE-AUS、4STATE-UPU、4STATE-IMB、VERICODE、RPC、MSI、AZTECCODE、DOTCODE、C25、C39-转换为c32、OCR、4STATE-RMC。
此事件的结果在setSymbologyEnabledOutputData属性中返回,setSymbologyEnabled事件作为回调函数调用。
例子:
$setSymbologyEnabledEventTrigger = "setSymbologyEnabled(DataMatrix ON, C128 OFF)"
当我们开始扫描时,我们可以通过触发setLightsOn(p1)方法将light设置为默认启用/禁用。作为输入参数,如果我们想要启用,我们设置为ON,如果我们想要默认禁用灯,我们设置为OFF。
这个事件的结果在setLightsOnOutputData属性中返回,setLightsOn事件作为回调函数被调用。
例子:
$setLightsOnEventTrigger = " setLightsOn(ON) "
为了检查灯光是否在默认情况下启用,我们触发了isLightsOn()方法
这个事件的结果在isLightsOnOutputData属性中返回,isLightsOn事件作为回调函数被调用。
例子:
$isLightsOnEventTrigger = " isLightsOn() "
有了这个属性,我们调用sendCommand(p1, p2, p3…)方法来执行设置为输入参数的DMC命令。我们可以设置一个或多个dmc命令作为输入参数。
此事件的结果在sendCommandOutputData属性中返回,sendCommand事件作为回调函数调用
例子:
$ sendcommanddeventtrigger = " sendCommand (GET BATTERY.CHARGE) "
表示当前读取器连接状态的整数属性。有四种状态:
0 - connection_state_disconnected
1 - connection_state_connecting
2 - connection_state_connected
3 - connection_state_disconnecting
包含上次扫描结果的字符串属性
布尔属性,如果阅读器设备可用,则为true;如果阅读器设备不可用,则为false。
布尔属性,当扫描激活时为真,当扫描停止时为假。
当loadScanner方法被执行时,如果阅读器设备无法加载,它将返回成功消息或错误消息。
当connect方法执行时,如果连接成功则返回true,如果连接不能完成则返回错误消息
当disconnect方法执行时,如果在执行该方法时出现问题,则返回成功消息或错误消息
在这个属性中,我们返回isSymbologyEnabled方法的结果。如果某些符号被启用,结果将是ON,如果被禁用,结果将是OFF,如果在执行此方法时抛出错误,结果将是错误消息。由于isSymbologyEnabled方法可以有多个参数,我们将返回以“,”分隔的符号状态。例如,如果我们调用$isSymbologyEnabledEventTrigger = "isSymbologyEnabled(DataMatrix, C128)",如果两个符号都被启用,结果将是" ON,ON "。
请注意,默认情况下,如果我们使用移动设备,则没有启用符号。
来自isLightsOn方法的结果,如果灯被启用,则可以是ON,如果灯被禁用,则可以是OFF,如果在执行此命令时发生错误,则可以是错误消息
表示sendCommand()方法的结果的字符串属性。如果有多个DMC命令作为输入参数,则每个命令的结果将用“,”分隔。
例如,如果我们调用$sendCommandEventTrigger = " sendCommand (GET BATTERY。CHARGE, GET LIGHT.INTERNAL-ENABLE) "结果将是" 50,OFF "
setLightsOn方法的结果,如果灯被启用,则可以是ON,如果灯被禁用,则可以是OFF,如果在执行此命令时发生了错误,则可以是错误消息
在这个属性中,我们返回setsymbolyenabled方法的结果。如果某些符号被启用,结果将是ON,如果被禁用,结果将是OFF,如果在执行此方法时抛出错误,结果将是错误消息。由于setSymbologyEnabled方法可以有多个参数,我们将返回以“,”分隔的符号状态。例如,如果我们调用$setSymbologyEnabledEventTrigger = "setSymbologyEnabled(DataMatrix, C128)",结果将是" ON,ON ",如果两个符号都是启用的。
这个回调事件将在sendCommand方法被触发并完成时执行:$sendCommandEventTrigger = "sendCommand(p1, p2, p3…)"
这个回调事件将在isLightsOn方法被触发并完成时执行:
这个回调事件将在setLightsOn方法被触发并完成时执行:
这个回调事件将在isSymbologyEnabled方法被触发并完成时执行:$isSymbologyEnabledEventTrigger = "isSymbologyEnabled(p1,p2,p3,.....)"
这个回调事件将在setSymbologyEnabled方法被触发并完成时执行:$setSymbologyEnabledTrigger = "setSymbologyEnabled(p1,p2,p3,.....)"
这个回调事件将在disconnect方法被触发并完成时执行:
这个回调事件将在connect方法被触发并完成时执行:$connectEventTrigger = "connect()"
这个回调事件将在loadScanner方法触发并完成时执行:$loadScannerEventTrigger = "loadScanner(0)"
$toggleScannerEventTrigger = "toggleScanner()"
当MX设备的可用性发生变化时,将执行此回调事件。
扫描条形码时,将执行此回调事件
当读取设备的连接状态发生改变时,将执行此回调事件