重要的
使用cmbSDK颤振插件MX设备是免费的,但如果你想利用相机设备(扫描与智能手机相机),你需要从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 ()在回调中连接Reader设备
cmb.loadScanner(_deviceType).then((value) {cmb.connect().then((value){…})。catchError((error, stackTrace){…});});
/* @return -成功回调如果连接完成-错误回调如果连接被拒绝。这个回调中的error对象包含错误代码和错误消息*/
connect()方法的结果将作为成功或错误回调返回
cmb.connect(),然后((值){…})。catchError((error, stackTrace){…});
有一个事件监听器用于ReaderDevice的连接状态,即ConnectionStateChangedListener事件将在下面进行更详细的解释。
/* @return - success callback if disconnect is completed - error callback if disconnect is not successful。这个回调中的error对象包含错误代码和错误消息*/
正如有connect (),有一个断开()与之相反的方法connect ():
cmb.disconnect(),然后((值){…})。catchError((error, stackTrace){…});
类似于connect (),断开()也引发了ConnectionStateChangedListener事件。
/* @return - success callback if scanning state is changed - error callback if scanning state is not changed这个回调中的error对象包含错误代码和错误消息*/
启动/停止扫描过程,我们使用这些方法。如果命令成功(扫描已经开始或停止),它们返回一个成功回调,或者返回一个错误回调(如果没有初始化活动的ReaderDevice或没有连接)。这些方法触发ScanningStateChangedListener事件返回当前扫描状态(如果启动扫描进程为true,如果停止扫描进程为false)。
cmb.startScanning(),然后((值){…})。catchError((error, stackTrace){…});
启动扫描仪并扫描条形码后,扫描结果触发ReadResultReceivedListener事件。
/* @return -成功回调,如果启用符号-错误回调,如果没有启用符号。这个回调中的error对象包含错误代码和错误消息*/
一旦与Reader建立了连接,我们就可以通过调用setSymbologyEnabled ().它需要2个参数:一个cmbSymbology,这是启用或禁用的符号和一个布尔值为ON/OFF。
cmb.setSymbologyEnabled (cmbSymbology。.then((value) => print('DataMatrix enabled')) . catcherror ((error, stackTrace) => print('DataMatrix NOT enabled. '))$ {error.message} '));
/* @return - success callback with Boolean value that show is symbol enabled or disabled - error callback if something went wrong。这个回调中的error对象包含错误代码和错误消息*/
要检查是否启用了符号,我们使用isSymbologyEnabled ().它的参数是cmbsymbolology。
cmb.isSymbologyEnabled(cmbSymbology.DataMatrix).then((值){if(值)print('DataMatrix enabled');else print('DataMatrix NOT enabled');})。catchError((error, stackTrace) => print('${error.message}'));
/*如果灯打开,返回成功回调;如果出错,返回错误回调。这个回调中的error对象包含错误代码和错误消息*/
如果我们想启用闪光灯,我们可以使用setLightsOn ().它期望一个布尔值参数并返回一个成功或错误回调。
cmb.setLightsOn(true) .catchError((error, stackTrace) => print('${error.message}'));
如果我们在扫描活动之前调用这个函数,我们将为每个扫描会话设置光初始状态。
/* @return -成功回调,Boolean值表示当前灯的状态-错误回调,如果出错。这个回调中的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);
注意:在调用之前应该设置CameraModeloadScanner ()让它生效
这应该只在使用设备内置的相机进行扫描时使用(cmbDeviceType.Camera)。
这个函数需要一个整型参数,它是我们想要启用的所有预览选项的OR-ed结果的结果。
cmb.setPreviewOptions (cmbPrevewiOption。NoZoomBtn | cmbPrevewiOption.NoIllumBtn);
注意:PreviewOptions应该在我们调用之前设置loadScanner ()让它生效
这应该只在使用设备内置的相机进行扫描时使用(cmbDeviceType.Camera)。
setPreviewContainerPositionAndSize接受四个整型参数,分别是左上角坐标的X和Y值,以及预览容器大小的宽度和高度值。所有的数值都是设备屏幕的百分比。
cmb.setPreviewContainerPositionAndSize(0、0100、50);//将设置预览为0,0和100%宽50%高
/* @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类型的参数。
cmbresultparser (cmbResultParser.Gs1) .catchError((error, stackTrace) => print('${error.message}'));
/* @return - success callback if encoding is set - error callback if something went wrong。这个回调中的error对象包含错误代码和错误消息*/
设置readString结果类型的编码。需要一个cmbReadStringEncoding类型的参数。
cmb.setReadStringEncoding(cmbReadStringEncoding.Utf8) .catchError((error, stackTrace) => print('${error.message}'));
/* @return - success callback with value that represent the battery level - error callback if something went wrong。这个回调中的error对象包含错误代码和错误消息*/
方法显示所连接设备的电池水平。不接受任何论点。
cmb.getDeviceBatteryLevel().then((value) {print('电池级别是$value');})。catchError((error, stackTrace) => print('${error.message}'));
/* @return -成功回调,int值表示当前可用性状态-错误回调,如果出错。这个回调中的error对象包含错误代码和错误消息*/
检查阅读器是否可用getAvailability ().
cmb.getAvailability().then((availability) {if (availability == cmbavailability . availability .index) print('ReaderDevice is available');else 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 is connected');})。catchError((error, stackTrace) => print('${error.message}'));
/*返回DMCC执行的结果值的成功回调-出错时返回错误回调。这个回调中的error对象包含错误代码和错误消息*/
所有的方法都可以用发送DMCC字符串到READER设备来代替。为此,我们可以使用API方法sendCommand.它可以用命令字符串来完全控制Reader。DMCC字符串作为输入参数发送。
招商银行。sendCommand('GET DEVICE.TYPE') .then((value) => print('$value')) .catchError((error, stackTrace) => print('${error.message}'));
仅适用于iOS系统。
用于创建用于MDM报告的身份验证凭据。它接受四个字符串参数:用户名、密码、clientID和clientSecret。
应该在setMDMReportingEnabled之前调用。
有关MDM报告的更多信息可以找到在这里
招商银行。creatatemdmauthcredentials ('username', 'password', 'clientID', 'clientSecret') .catchError((error, stackTrace) => print('${error.message}'));
仅适用于iOS系统。
拥有和运营多个康耐视移动终端的公司可能希望远程收集有关电池电量、电池运行状况、已安装固件等的最新信息。
使用cmbSDK框架的iOS应用可以将附加的移动终端状态信息上报给MDM实例。这可以通过setMDMReportingEnabled方法启用,该方法接受一个布尔参数。
有关MDM报告的更多信息可以找到在这里
cmb.setMDMReportingEnabled(true) .catchError((error, stackTrace) => print('${error.message}'));
"lower":相机曝光最小值"upper":相机曝光最大值"step":相机曝光步长值-出错时的错误回调。这个回调中的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移动终端已连接或断开电缆,或已打开或关闭)。结果是一个包含可用性信息的int。
cmb.setAvailabilityChangedListener((availability) {if (availability == cmbAvailability.Available.index) print('ReaderDevice is available');});
cmb.setConnectionStateChangedListener((state) {if (state == cmbConnectionState.Connected.index) print('ReaderDevice is connected');});
cmb.setScanningStateChangedListener((scanningState) {if (scanningState) print('扫描启动');});
cmb.setReadResultReceivedListener((resultJSON) {final Map resultMap = jsonDecode(resultJSON);});
resultJSON是一个JSON对象,其结构如下:
-xml: XML格式的读取器设备的完整结果的字符串表示形式
-结果: json数组的所有结果。如果你在这里使用多代码模式,你会发现主要结果和所有其他部分结果。
-subResults: json数组的所有部分结果(如果使用单一代码模式,该数组将为空)
results和subResults数组包含以下结构项:
-符号学:检测到的条码符号的int表示
-symbologyString:检测到的条码符号的字符串表示形式
-readString:条码的字符串表示
-goodRead:指示条码是否扫描成功的bool标记
-isGS1:指示条码是否为GS1的bool标记
-parsedText:字符串,表示从结果中解析的文本
-parsedJSON:字符串,表示json格式的解析文本
-imageGraphics:表示最后检测帧中的SVG图像的字符串
-图像base64字符串,包含最后检测帧的图像
-xml: XML格式的部分结果的字符串表示形式