了解该插件用法的最佳方法是查看我们的演示应用程序。您可以从在这里。
下载后导航到演示应用程序根文件夹并运行演示应用程序:
cd cmbSDK_Nativescript/demo运行android #或ios
简而言之,在你的项目中使用我们的插件有以下步骤:
import {CMBReader, CMBReaderConstants} from 'cmbsdk-nativescript';
开放home-view-model.ts从演示应用程序检查这段代码。我们的演示应用程序中的所有代码都有简短的描述。
this.cmbReader.startScanning ()
重要的
使用MX设备使用cmbSDK nativescript插件是免费的,但如果您想使用CAMERA device(使用智能手机摄像头扫描),您需要从CMBDN.
Reader仍然在没有许可证的情况下工作,但结果会被随机地用*字符掩盖。
它是免费注册的,你可以获得一个30天的试用许可证密钥。
获得密钥后,在应用程序中有两种使用方法。
this.cmbReader.registerSDK(“SKD_KEY”);
/*返回解析承诺
要启动并运行扫描仪,首先要做的是调用loadScanner ()方法。它需要一个设备类型作为输入参数。此方法不连接到阅读器设备。我们需要打电话connect ()承诺能真正连接到阅读设备上
this. CMBReaderConstants.DEVICE_TYPE.MXReader) .then(result => {this. cmbread .connect() .then(result => {this.updateUIByConnectionState(CMBReaderConstants.CONNECTION_STATE.Connected);}) .catch(err => {console.log(err);this.updateUIByConnectionState (CMBReaderConstants.CONNECTION_STATE.Disconnected);});});});
/* @如果连接成功则返回解决承诺,如果连接时出现问题则拒绝承诺并发送错误消息
connect()方法的结果作为Promise返回,它将返回连接尝试的结果:
this. cmbread .connect() .then(result => {this.updateUIByConnectionState(CMBReaderConstants.CONNECTION_STATE.Connected);}) .catch(err => {console.log(err);this.updateUIByConnectionState (CMBReaderConstants.CONNECTION_STATE.Disconnected);});
ReaderDevice的连接状态有Event Listener,即CMBReaderConstants.EVENTS.ConnectionStateChanged事件,下面将更详细地解释。
/* @如果断开连接成功则返回解决承诺,如果断开连接时出现问题则拒绝承诺并发送错误消息*/
就像这样connect (),有一个断开()方法,其作用与connect ():
this.cmbReader.disconnect ();
类似于connect (),断开()Too会触发CMBReaderConstants.EVENTS.ConnectionStateChanged事件。
/*使用CMBReaderConstants解析承诺。如果在检查当前连接状态*/时出现问题,则读取器当前connectionState拒绝承诺的CONNECTION_STATE值将发出错误消息
/* @开始/停止扫描时返回解决承诺,如果启动/停止扫描过程中出现问题(例如:如果readerDevice未初始化),则拒绝承诺并发送错误消息)*/
startScanning()和stopScanning()方法触发CMBReaderConstants.EVENTS.ScanningStateChanged事件,如果启动扫描仪则返回true,如果停止则返回false。
启动扫描仪并扫描条形码后,扫描结果将触发CMBReaderConstants.EVENTS.ReadResultReceived事件。
如果需要获取当前连接状态,getConnectionState ()可以使用
this. cmbread . getconnectionstate () .then(connectionState => {if (connectionState == CMBReaderConstants.CONNECTION_STATE.Connected) {// reader已连接}}).catch(err => {console.log(err);});
/* @返回解决承诺,如果启用符号,结果为真;如果禁用符号,结果为假。如果在尝试启用符号时出现问题,则拒绝承诺,并发送错误消息*/
一旦有了到Reader的连接,我们就可以通过调用来启用符号setSymbologyEnabled ().它期望符号的int值为enabled,布尔值为ON/OFF。
this.cmbReader.setSymbologyEnabled (CMBReaderConstants.SYMBOLOGY。DataMatrix, true) .then(result => {if (result == true) console.log("DataMatrix enabled");else console.log("DataMatrix未启用");}) .catch(err => {console.log(err);});
/* @返回解决承诺的结果,如果启用了符号,结果为真;如果禁用了符号,结果为假。如果在检查符号状态时出现问题,则拒绝承诺,并发送错误消息*/
要检查是否启用了符号,可以使用isSymbologyEnabled ().
this. cmbread . issymbologyenabled (cmbreaderconstants . symbolology .DataMatrix) .then(result => {if (result == true) console.log("DataMatrix enabled");else console.log("DataMatrix未启用");}) .catch(err => {console.log(err);});
/* @返回解决承诺的结果为true,如果灯光是启用的,如果灯光是false,当我们检查灯光状态时,如果有一些问题,则拒绝承诺,并发送错误消息*/
如果我们想在默认情况下启用flash,我们可以使用setLightsOn ()并检查是否启用了isLightsOn ()
当我们使用camera设备作为条形码阅读器时,要设置相机的行为,我们使用:
this.cmbReader.setCameraMode (CMBReaderConstants.CAMERA_MODE.NoAimer);/**使用无瞄准镜的相机。预览是打开的,照明可用。CMBReader.CAMERA_MODE。NoAimer = 0,使用带有基本瞄准器的相机(例如StingRay)。预览关闭,照明不可用。CMBReader.CAMERA_MODE。被动式瞄准器= 1,使用带有主动瞄准器的相机(例如MX-100)。预览关闭,照明可用。CMBReader.CAMERA_MODE。ActiveAimer = 2, Use mobile device front camera. Preview is on, illumination is not available. CMBReader.CAMERA_MODE.FrontCamera = 3 */
注意:它应该在调用之前被调用loadScanner ()才能生效。如果扫描仪已加载,则在扫描仪加载后调用它将不会执行任何操作。
设置覆盖预览选项。
该函数需要一个整数,该整数是我们希望启用的所有预览选项的or结果的结果。
不返回值。
应该叫BEFOREloadScanner ()(与cameraMode()相同)\
例子:
this.cmbReader.setPreviewOptions (CMBReaderConstants.CAMERA_PREVIEW_OPTION。NoZoomBtn | CMBReaderConstants.CAMERA_PREVIEW_OPTION.NoIllumBtn);
设置相机叠加模式。您需要在loadScanner被调用之前这样做,否则它将不能正常工作,仅在MX-Mobile上可用
例子:
this.cmbReader.setPreviewOverlayMode (CMBReaderConstants.OVERLAY_MODE.OM_CMB);
/* @params x,y, w,h x,y:左上方位置w,h:矩形的宽度和高度在整个容器的百分比*/
仅用于手机相机,设置相机预览屏幕的大小和位置。
例子:
this.cmbReader.setPreviewContainerPositionAndSize(0、0100、50);//将设置预览为0,0和100%宽度50%高度
仅用于手机摄像头,设置摄像头预览开始全屏而不是局部视图。
例子:
this.cmbReader.setPreviewContainerFullScreen ();//当startScanning被调用时,设置相机预览为全屏
/* @return如果启用image或imaggraphics,则解决承诺结果为true,如果启用image结果时出现问题,则拒绝承诺并发送错误消息*/
启用/禁用作为图像使用返回的结果类型
this.cmbReader.enableImage(真正的);
相同enableImageGrapics ().
this.cmbReader.enableImageGraphics(假);
/* @返回解决承诺与百分比电量拒绝承诺与错误消息,如果有一些问题,在检查电池电量*/
助手方法显示连接设备的电池电量。像这样使用它:
this. cmbread . getdevicebatterylevel () .then(result => {console.log(result);}) .catch(err => {console.log(err);});
/* @如果重置成功,则返回解决承诺,如果重置配置时出现问题,则拒绝承诺并报错
重置可使用的配置选项resetConfig
this.cmbReader.resetConfig() .then(result => {}) .catch(err => {console.log(err);});
设置cmbScanner结果解析器。当readerDevice加载并连接时,必须调用这个API
例子:
this.cmbReader.setParser (CMBReaderConstants.PARSERS.AUTO);
Nativescript cmbReader对象扩展了Observable对象,并拥有可以在应用程序中侦听和使用的事件。这些事件应该在loadScanner被调用之前设置。
this.cmbReader.on (CMBReaderConstants.EVENTS。ConnectionStateChanged, (args: any) => {});
以下是活动清单:
当接收到扫描结果时触发此事件。结果是一个JSON对象,具有如下结构:
/** * results - json数组。如果你在这里使用多码模式,你会发现主结果(所有部分结果集合在一起合并在一个readString中)和所有其他部分结果* subResults -所有部分结果的json数组(如果使用单码模式,该数组将为空)* xml -来自阅读器设备的完整结果的字符串表示,以xml格式* results和subResults是包含以下结构的json数组:*条形码符号的象征——整数表示检测到* symbologyString -条码符号的字符串表示检测到* readString -字符串表示的条形码* goodRead bool表明如果条形码成功扫描* xml格式的xml字符串表示的部分结果* imageGraphics -字符串代表svg图像上检测到帧*图像——base64字符串包含图像从去年发现帧* parsedText -字符串* parsedJSON -表示结果中解析文本的json格式的字符串* isGS1 - bool,表示barcode是否是GS1 */
当ReaderDevice的可用性发生变化时触发此事件(例如:当MX移动终端连接或断开电缆,或打开或关闭电缆时)。结果是一个包含可用性信息的数字。
当ReaderDevice的连接状态发生变化时触发此事件。结果是一个包含连接信息的数字。
当ReaderDevice的扫描器状态改变时触发此事件。结果是一个布尔值,如果扫描开始则为true,如果扫描停止则为false。