从命令提示符进入你的应用程序的根文件夹。
你可以使用我们的插件形式npm(推荐),也可以从在这里以及使用from local path。
TNS插件添加cmbsdk-nativescript #或本地路径
探索插件使用的最好方法是检查我们的演示应用程序。你可以从在这里。
下载后导航到演示应用的根目录并运行演示应用:
cd cmbSDK_Nativescript/demo tns运行android #或ios
简而言之,在你的项目中使用我们的插件的步骤如下:
import {cmbsdk, CMBReaderConstants} from ` cmbsdk-nativescript `;
开放home-view-model.ts从演示应用程序检查这段代码。我们的演示应用程序中的所有代码都有简短的描述。
this.cmbReader.startScanning ()
重要的
MX设备使用cmbSDK原生脚本插件是免费的,但如果你想使用CAMERA device(用智能手机摄像头扫描),你需要获得许可CMBDN.
Reader仍然在没有许可证的情况下工作,但是结果被随机地用*字符掩盖了。
注册是免费的,你可以获得一个30天的试用许可密钥。
获得密钥后,在应用程序中有两种使用方法。
this.cmbReader.registerSDK(“SKD_KEY”);
/* @return解析承诺
要让扫描仪运行起来,首先要做的,就是呼叫loadScanner ()方法。它需要一个设备类型作为输入参数。此方法不连接到阅读器设备。我们需要打电话connect ()承诺要真正连接到阅读器上
this. CMBReaderConstants.DEVICE_TYPE.MXReader) .then(result => {this. CMBReaderConstants.CONNECTION_STATE.Connected () .then(result => {this.updateUIByConnectionState(CMBReaderConstants.CONNECTION_STATE.Connected);}) .catch(err => {console.log(err);this.updateUIByConnectionState (CMBReaderConstants.CONNECTION_STATE.Disconnected);});});});
/* @return resolve promise if connection succeeded .如果连接失败,则拒绝promise并返回错误信息
connect()方法的结果作为Promise返回,它将返回连接尝试的结果:
this.updateUIByConnectionState(CMBReaderConstants.CONNECTION_STATE.Connected) .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事件,下面将详细解释。
/* @return resolve promise if disconnect succeeded .如果断开连接时出现问题,拒绝承诺并给出错误消息
就像有一样connect (),有一个断开()与之相反的方法connect ():
this.cmbReader.disconnect ();
类似于connect (),断开()也引发了CMBReaderConstants.EVENTS.ConnectionStateChanged事件。
/* @return与CMBReaderConstants解析承诺。当我们检查当前连接状态时,读取器当前connectionState的CONNECTION_STATE值拒绝了带有错误消息的promise
/* @return resolve promise if scanning is started/stopped reject promise with error message if there is some problem while start/stop scanning process,例如:if readerDevice not initialized) */
startScanning()和stopScanning()方法触发CMBReaderConstants.EVENTS.ScanningStateChanged事件,该事件在扫描器启动时返回true,在停止时返回false。
启动扫描仪并扫描条形码后,扫描结果将触发CMBReaderConstants.EVENTS.ReadResultReceived事件。
如果你需要获取当前连接状态,getConnectionState ()可以使用
this. CMBReaderConstants.CONNECTION_STATE.Connected () .then(connectionState => {if (connectionState == CMBReaderConstants.CONNECTION_STATE.Connected) {// reader被连接}}).catch(err => {console.log(err);});
/* @return resolve promise with result如果启用了符号则为true,如果禁用了符号则为false,当我们尝试启用符号时,如果有问题,则拒绝promise并发送错误消息
一旦有了与Reader的连接,我们就可以通过调用来启用符号setSymbologyEnabled ().它期望启用符号的int值和ON/OFF的布尔值。
this.cmbReader.setSymbologyEnabled (CMBReaderConstants.SYMBOLOGY。DataMatrix, true) .then(result => {if (result == true) console.log("DataMatrix enabled");else console.log("DataMatrix NOT enabled");}) .catch(err => {console.log(err);});
/* @return resolve promise with result如果启用了符号则为true,如果禁用了符号则为false,如果我们检查符号状态时出现了一些问题,则拒绝promise并发送错误消息
为了检查是否启用了符号,我们使用isSymbologyEnabled ().
this. cmbreaderconstants . symbologyenabled (CMBReaderConstants.SYMBOLOGY.DataMatrix) .then(result => {if (result == true) console.log("DataMatrix enabled");else console.log("DataMatrix NOT enabled");}) .catch(err => {console.log(err);});
/* @return resolve promise with result如果light是启用的,则为true;如果light是禁用的,则为false
如果我们想在默认情况下启用flash,我们可以使用setLightsOn ()并检查它是否被启用isLightsOn ()
当我们使用camera设备作为条形码阅读器时,要设置相机的行为方式,我们使用:
this.cmbReader.setCameraMode (CMBReaderConstants.CAMERA_MODE.NoAimer);/**使用没有瞄准镜的相机。预览打开,照明可用。CMBReader.CAMERA_MODE。NoAimer = 0,使用带有基本瞄准器的相机(例如,黄貂鱼)。预览是关闭的,照明不可用。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 ()让它生效。如果扫描器已经加载,那么在加载扫描器之后调用它不会有任何作用。
设置覆盖的预览选项。
此函数期望一个整数,它是我们希望启用的所有预览选项的“或”结果的结果。
不返回值。
应该在之前调用loadScanner ()(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 resolve promise with result true if image or imagegraphics is enabled,如果启用image result有问题,拒绝promise with error message
启用/禁用作为图像使用返回的结果类型
this.cmbReader.enableImage(真正的);
相同enableImageGrapics ().
this.cmbReader.enableImageGraphics(假);
/* @return resolve promise with the charge in percentage(电量百分比)
辅助方法显示所连接设备的电池水平。像这样使用它:
this. cmbread . getdevicebatterylevel () .then(result => {console.log(result);}) .catch(err => {console.log(err);});
/* @return resolve promise if reset is successful .如果重置配置时出现问题,拒绝承诺并返回错误信息
重置我们可以使用的配置选项resetConfig
this.cmbReader.resetConfig() .then(result => {}) .catch(err => {console.log(err);});
设置cmbScanner结果解析器。这个API必须在readerDevice被加载和连接时被调用
例子:
this.cmbReader.setParser (CMBReaderConstants.PARSERS.AUTO);
/* @return resolve promise with result depends of commandString如果执行命令时出现问题,则拒绝promise with error message
最后,可以将所有方法替换为向READER设备发送DMCC字符串。为此,我们可以使用API方法sendCommand.它可以用命令字符串完全控制Reader。更多的命令字符串可以找到在这里或在这里
像这样使用它:
this.cmbReader。sendCommand("SET SYMBOL.POSTNET OFF") .then(result => { console.log(result); }) .catch(err => { console.log(err); });
Nativescript的cmbReader对象扩展了Observable对象,并且拥有可以在应用中监听和使用的事件。应该在调用loadScanner之前设置这些事件。
this.cmbReader.on (CMBReaderConstants.EVENTS。ConnectionStateChanged, (args: any) => {});
以下是事件列表:
当收到扫描结果时触发此事件。结果是一个JSON对象,其结构如下:
/** *结果- json数组。模式在这里你会发现如果你用多码主要结果(所有部分结果一起合并在一个readString)和所有其他部分结果* subResults - json数组的所有部分结果(如果单代码模式uset这个数组将空的)* xml字符串表示的完整结果从读者设备以xml格式*和结果subResults是json数组,包含如下结构的条目:*条形码符号的象征——整数表示检测到* symbologyString -条码符号的字符串表示检测到* readString -字符串表示的条形码* goodRead bool表明如果条形码成功扫描* xml格式的xml字符串表示的部分结果* imageGraphics -字符串代表svg图像上检测到帧*图像- base64字符串包含图像上检测到帧* parsedText -字符串表示结果* parsedJSON——解析文本字符串表示解析json格式的文本从结果* isGS1 - bool表明如果条形码是否GS1 * /
当ReaderDevice的可用性发生变化时触发此事件(例如:当MX移动终端连接或断开电缆,或打开或关闭)。结果是一个包含可用性信息的数字。
当ReaderDevice的连接状态发生变化时触发此事件。结果是一个包含连接信息的数字。
当ReaderDevice的扫描器状态改变时触发此事件。结果是一个布尔值,如果扫描开始,则为真,如果扫描停止,则为假。