重要的
使用MX设备使用cmbSDK颤振插件是免费的,但如果您想使用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){…});
有一个事件监听器,用于读取设备的连接状态,即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 ().它期望有两个参数:一个是要启用或禁用的符号cmbsymbolology,一个是ON/OFF的布尔值。
cmb.setSymbologyEnabled (cmbSymbology。DataMatrix, true) .then((value) => print('DataMatrix已启用')). catcherror ((error, stackTrace) => print('DataMatrix未启用。$ {error.message} '));
/* @return -成功回调,带有显示符号启用或禁用的布尔值-出错回调。此回调中的error对象包含错误代码和错误消息*/
要检查是否启用了某个符号,可以使用isSymbologyEnabled ().它需要论据cmb符号学。
cmb.isSymbologyEnabled(cmbsymbolic .DataMatrix).then((value) {if (value) print('DataMatrix enabled');else print('DataMatrix未启用');})。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('灯亮');else print('灯已关闭');})。catchError((error, stackTrace) => print('${error.message}'));
设置当我们使用摄像头设备作为条形码阅读器时,摄像头的行为。
cmb.setCameraMode (cmbCameraMode.NoAimer);
注意:CameraMode应该在我们调用之前设置loadScanner ()才能生效。
这应该只在使用设备的内置摄像头进行扫描时使用(cmbdevicettype . camera)。
此函数需要一个整数参数,该参数是我们希望启用的所有预览选项的OR-ed结果的结果。
cmb.setPreviewOptions (cmbPrevewiOption。cmbPrevewiOption.NoIllumBtn);
注意:PreviewOptions应该在我们调用之前设置loadScanner ()才能生效。
这应该只在使用设备的内置摄像头进行扫描时使用(cmbdevicettype . camera)。
setPreviewContainerPositionAndSize接受四个整数参数,它们是左上角坐标的X和Y值,以及预览容器大小的宽度和高度值。所有的值都是设备屏幕的百分比。
cmb.setPreviewContainerPositionAndSize(0、0100、50);//将设置预览为0,0和100%宽度50%高度
/* @return -设置全屏成功回调-出错回调。此回调中的error对象包含错误代码和错误消息*/
这应该只在使用设备的内置摄像头进行扫描时使用(cmbdevicettype . 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){打印('电池级别为$value');})。catchError((error, stackTrace) => print('${error.message}'));
/* @return -带有表示当前可用性状态的int值的成功回调-如果发生错误则返回错误回调。此回调中的error对象包含错误代码和错误消息*/
检查阅读器是否可用getAvailability ().
cmb.getAvailability().then((availability) {if (availability == cmbAvailability.Available.index) print('ReaderDevice is available');else print('ReaderDevice不可用');})。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}'));
/* @return -从执行的DMCC返回结果值的成功回调-出错时的错误回调。此回调中的error对象包含错误代码和错误消息*/
所有的方法都可以替换为向READER设备发送DMCC字符串。为此,我们可以使用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 Reporting的更多信息在这里
招商银行。createMDMAuthCredentials('username', 'password', 'clientID', 'clientSecret') .catchError((error, stackTrace) => print('${error.message}'));
仅支持iOS。
拥有和运营许多康耐视移动终端的公司可能希望远程收集关于电池电量、电池健康状况、已安装固件等的最新信息。
使用cmbSDK框架的iOS应用程序可以向MDM实例报告所连接的移动终端的状态信息。这可以通过setMDMReportingEnabled方法来实现,该方法接受一个布尔参数。
可以找到关于MDM Reporting的更多信息在这里
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 == cmbavailabilityavailable .index) print('ReaderDevice is available');});
cmb.setConnectionStateChangedListener((state) {if (state == cmbConnectionState.Connected.index) print('ReaderDevice已连接');});
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: bool,表示barcode是否是GS1
-parsedText:表示来自结果的解析文本的字符串
-parsedJSON:表示从结果中解析的json格式文本的字符串
-imageGraphics:表示来自最后检测帧的SVG图像的字符串
-图像: base64字符串,包含来自最后检测帧的图像
-xml:部分结果的XML格式的字符串表示