重要的
cmbSDK flutter插件在MX设备上的使用是免费的,但如果您想使用CAMERA设备(用智能手机相机扫描),则需要获得许可证CMBDN。
Reader仍然可以在没有许可证的情况下工作,但结果随机被*字符屏蔽。
注册是免费的,你可以获得30天的试用许可证。
获得密钥后,有两种方法可以在应用程序中使用。
cmb.registerSDK(“SKD_KEY”);
探索插件用法的最佳方法是检查我们的演示应用程序。您可以从在这里。
简而言之,要在你的项目中使用我们的插件,步骤如下:
导入的包:cmbsdk_flutter / cmbsdk_flutter.dart ';
开放main.dart从演示应用程序中检查此代码。我们的演示应用程序中的所有代码都带有简短的描述。
cmb.startScanning() .catchError((error, stackTrace) => print('${error.message}'));
要使扫描仪启动并运行,首先要做的是调用loadScanner ()方法。它需要一个cmbDeviceType参数。此方法不连接到阅读器设备。我们需要打电话connect ()在回调中实际连接到阅读器设备
cmb.loadScanner(_deviceType).then((value) {cmb.connect().then((value){…})。catchError((error, stackTrace){…});});
/* @return -连接完成回调成功-连接被拒绝回调错误。这个回调中的error对象包含错误代码和错误消息*/
connect()方法的结果作为成功或错误回调返回
Cmb.connect ().then((value){…})。catchError((error, stackTrace){…});
ReaderDevice的连接状态有一个事件监听器,即ConnectionStateChangedListener事件,下面将更详细地解释。
/* @return -成功回调如果断开连接完成-错误回调如果断开连接不成功。这个回调中的error对象包含错误代码和错误消息*/
就像现在一样connect (),有一个。断开()方法,它的作用与connect ():
Cmb.disconnect ().then((value){…})。catchError((error, stackTrace){…});
类似于connect (),断开()也会触发ConnectionStateChangedListener事件。
/* @return -如果改变扫描状态回调成功-如果不改变扫描状态回调错误。这个回调中的error对象包含错误代码和错误消息*/
为了启动/停止扫描过程,我们使用以下方法。如果命令成功(扫描已经开始或停止),它们将返回一个成功回调,或者返回一个错误回调(如果没有初始化活动ReaderDevice或未连接)。这些方法触发ScanningStateChangedListener事件其中返回当前扫描状态(扫描进程启动时为true,扫描进程停止时为false)。
cmb.startScanning().then((value){…})。catchError((error, stackTrace){…});
启动扫描器并扫描条形码后,扫描结果触发ReadResultReceivedListener事件。
/* @return -如果启用了符号,则回调成功;如果未启用符号,则回调错误。这个回调中的error对象包含错误代码和错误消息*/
一旦连接到Reader,我们就可以通过调用启用符号setSymbologyEnabled ()。它需要2个参数:一个cmbSymbology是要启用或禁用的符号,一个布尔值表示ON/OFF。
cmb.setSymbologyEnabled (cmbSymbology。DataMatrix, true) .then((value) => print('DataMatrix已启用'). catcherror ((error, stackTrace) => print('DataMatrix未启用')。$ {error.message} '));
/* @return -成功回调与布尔值,显示是启用或禁用符号-错误回调,如果出现问题。这个回调中的error对象包含错误代码和错误消息*/
要检查是否启用了一个符号,使用isSymbologyEnabled ()。它接受参数cmbSymbology。
cmb.isSymbologyEnabled(cmbsymbolologydatamatrix).then((value) {if (value) print('DataMatrix enabled');else print(' datammatrix NOT enabled');})。catchError((error, stackTrace) => print('${error.message}'));
/* @return -成功回调,如果灯亮,错误回调。这个回调中的error对象包含错误代码和错误消息*/
如果我们想启用flash,我们可以使用setLightsOn ()。它需要一个布尔参数,并返回成功或错误回调。
cmb.setLightsOn(true) .catchError((error, stackTrace) => print('${error.message}'));
如果我们在扫描激活之前调用这个函数,我们将为每个扫描会话设置轻初始状态。
/* @return -成功回调与布尔值表示当前灯的状态-错误回调,如果出现问题。这个回调中的error对象包含错误代码和错误消息*/
我们可以用isLightsOn()检查灯光状态,它返回一个带有当前灯光状态的回调。
cmb.isLightsOn().then((value) {if (value) print('Light is ON');else print('Light is OFF');})。catchError((error, stackTrace) => print('${error.message}'));
设置当我们使用相机设备作为条形码阅读器时,相机的行为方式。
cmb.setCameraMode (cmbCameraMode.NoAimer);
注意:CameraMode应该在我们调用之前设置loadScanner ()让它生效。
这应该只在使用设备的内置摄像头进行扫描时使用(cmbDeviceType.Camera)。
该函数需要一个整数参数,该参数是我们想要启用的所有预览选项的OR-ed结果的结果。
cmb.setPreviewOptions (cmbPrevewiOption。NoZoomBtn | cmbprevewioption . noillumtn);
注意:PreviewOptions应该在调用之前设置loadScanner ()让它生效。
这应该只在使用设备的内置摄像头进行扫描时使用(cmbDeviceType.Camera)。
setPreviewContainerPositionAndSize接受四个整型参数,分别是左上角坐标的X和Y值,以及预览容器大小的宽度和高度值。所有的值都是设备屏幕的百分比。
cmb.setPreviewContainerPositionAndSize(0、0100、50);//将预览设置为0,0和100%宽度50%高度
注意:setPreviewContainerPositionAndSize在我们打电话之前应该准备好吗loadScanner ()让它生效。
/* @return -成功回调如果全屏设置-错误回调如果出错。这个回调中的error对象包含错误代码和错误消息*/
这应该只在使用设备的内置摄像头进行扫描时使用(cmbDeviceType.Camera)。
将相机预览设置为全屏开始,而不是部分视图。
cmb.setPreviewContainerFullScreen() .catchError((error, stackTrace) => print('${error.message}'));
/* @return -成功回调如果图像结果启用-错误回调如果出现问题。这个回调中的error对象包含错误代码和错误消息*/
用于启用/禁用镜像结果类型。期望一个布尔参数。
cmb.enableImage(true) .catchError((error, stackTrace) => print('${error.message}'));
/* @return -如果SVG结果启用成功回调-如果出现错误回调错误。这个回调中的error对象包含错误代码和错误消息*/
用于启用/禁用svg结果类型。期望一个布尔参数。
cmb.enableImageGraphics(true) .catchError((error, stackTrace) => print('${error.message}'));
/* @return -如果设置了解析器则回调成功-如果出错则回调错误。这个回调中的error对象包含错误代码和错误消息*/
启用或禁用扫描条形码的解析。期望一个cmbResultParser类型的参数。
cmb.setParser(cmbResultParser.Gs1) .catchError((error, stackTrace) => print('${error.message}'));
/* @return -如果编码设置成功回调-错误回调。这个回调中的error对象包含错误代码和错误消息*/
设置readString结果类型的编码。期望有一个cmbReadStringEncoding类型的参数。
cmb.setReadStringEncoding(cmbReadStringEncoding.Utf8) .catchError((error, stackTrace) => print('${error.message}'));
/* @return -成功回调与值表示电池的水平-错误回调,如果出现问题。这个回调中的error对象包含错误代码和错误消息*/
方法显示所连接设备的电池电量。不需要任何争论。
cmb.getDeviceBatteryLevel().then((value) {print('电池电量为$value');})。catchError((error, stackTrace) => print('${error.message}'));
/* @return -成功回调与int值,表示当前的可用性状态-错误回调,如果出现问题。这个回调中的error对象包含错误代码和错误消息*/
要检查阅读器是否可用,请使用getAvailability ()。
cmb.getAvailability().then((availability) {if (availability == cmbAvailability.Available.index) print('ReaderDevice is available');print('ReaderDevice is NOT available');})。catchError((error, stackTrace) => print('${error.message}'));
/* @return -成功回调与int值,表示当前的连接状态状态-错误回调,如果出现问题。这个回调中的error对象包含错误代码和错误消息*/
如果需要获取当前连接状态,getConnectionState ()可以使用
cmb.getConnectionState().then((currentState) {if (currentState == cmbConnectionState.Connected.index) print('ReaderDevice已连接');})。catchError((error, stackTrace) => print('${error.message}'));
/* @return -成功回调,返回执行DMCC的结果值-错误回调,如果出现问题。这个回调中的error对象包含错误代码和错误消息*/
所有的方法都可以用发送DMCC字符串到READER设备来代替。为此,我们可以使用API方法sendCommand。它可以用命令字符串完全控制Reader。DMCC字符串作为输入参数发送。
招商银行。sendCommand('GET DEVICE.TYPE') .then((value) => print('$value')) .catchError((error, stackTrace) => print('${error.message}'));
仅支持iOS。
用于创建用于MDM报告的身份验证凭证。它接受四个字符串参数:username、password、clientID和clientSecret。
应该在setMDMReportingEnabled之前调用。
可以找到更多关于MDM报告的信息在这里
招商银行。createMDMAuthCredentials('username', 'password', 'clientID', 'clientSecret') .catchError((error, stackTrace) => print('${error.message}'));
仅支持iOS。
拥有并运营多个康耐视移动终端的公司可能希望远程收集有关电池电量、电池健康状况、已安装固件等的最新信息。
使用cmsdk框架的iOS应用程序可以将附加的移动终端的状态信息报告给MDM实例。这可以通过setMDMReportingEnabled方法启用,该方法接受一个布尔参数。
可以找到更多关于MDM报告的信息在这里
cmb.setMDMReportingEnabled(true) .catchError((error, stackTrace) => print('${error.message}'));
/* @返回-成功回调json字符串值,代表相机曝光补偿范围:“低”:最小相机曝光值“上”:最大相机曝光值“步骤”:相机曝光步长值-错误回调,如果出了问题。这个回调中的error对象包含错误代码和错误消息*/
cmb.getCameraExposureCompensationRange() .then((value) => print('$value')) .catchError((error, stackTrace) => print('${error.message}'));
注意:相机需要在cmbSDK中至少启动一次以获得相机曝光补偿范围,否则它将返回空json字符串。
设置相机曝光补偿值。发送将设置为曝光补偿的浮动值。
cmb.setCameraExposureCompensation(5) .catchError((error, stackTrace) => print('${error.message}'));
注意:这需要在成功连接到阅读器设备后调用。如果发送的值大于相机曝光最大值,则设置最大值,如果发送的值小于相机曝光最小值,则设置最小值。
此侦听器仅在可用性发生变化时用于MXReader(例如:当MX Mobile Terminal连接或断开电缆,或打开或关闭电缆时)。结果是一个包含可用性信息的整型。
cmb.setAvailabilityChangedListener((availability) {if (availability == cmbAvailability.Available.index) print('ReaderDevice is available');});
cmb.setConnectionStateChangedListener((state) {if (state == cmbConnectionState.Connected.index) print('ReaderDevice已连接');});
cmb.setScanningStateChangedListener((scanningState) {if (scanningState) print('Scanning is started');});
cmb.setReadResultReceivedListener((resultJSON) {final Map resultMap = jsonDecode(resultJSON);});
resultJSON是一个JSON对象,结构如下:
-xml:以XML格式表示阅读器设备的完整结果的字符串
-结果:所有结果的json数组。如果您在这里使用多代码模式,您将找到主要结果和所有其他部分结果。
-subResults: json中所有部分结果的数组(如果使用单代码模式,该数组将为空)
results和subResults数组包含如下结构的项:
-符号学int表示检测到的条形码符号
-symbologyString:表示检测到的条形码符号的字符串
-readString:条形码的字符串表示形式
-goodRead:表示扫描成功
-isGS1: bool表示条码是否为GS1
-parsedText:表示从结果中解析文本的字符串
-parsedJSON:字符串,从结果中以json格式表示解析后的文本
-imageGraphics:表示上次检测到的帧中的SVG图像的字符串
-图像base64字符串,包含上次检测到的帧的图像
-xml:部分结果的XML格式的字符串表示