重要的
使用MX设备使用cmbSDK flutter插件是免费的,但如果您想使用CAMERA device(使用智能手机摄像头扫描),则需要从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 -如果连接完成则返回成功-如果连接被拒绝则返回错误。此回调中的错误对象包含错误代码和错误消息*/
connect()方法的结果作为成功或错误回调返回
Cmb.connect ().then((value){…})。catchError((error, stackTrace){…});
ReaderDevice的连接状态有一个事件侦听器,即ConnectionStateChangedListener事件,下面将更详细地解释。
/* @return -如果断开连接完成则返回成功-如果断开连接不成功则返回错误。此回调中的错误对象包含错误代码和错误消息*/
就像这样connect (),有一个断开()的相反方法connect ():
Cmb.disconnect ().then((value){…})。catchError((error, stackTrace){…});
类似于connect (),断开()还会触发ConnectionStateChangedListener事件。
/* @return -如果扫描状态改变,返回成功-如果扫描状态没有改变,返回错误。此回调中的错误对象包含错误代码和错误消息*/
要启动/停止扫描过程,我们使用以下方法。如果命令成功(扫描已经开始或停止)或错误回调(如果没有初始化活动ReaderDevice或没有连接),它们将返回一个成功回调。这些方法触发ScanningStateChangedListener事件其中返回当前扫描状态(启动扫描为true,停止扫描为false)。
cmb.startScanning().then((value){…})。catchError((error, stackTrace){…});
启动扫描仪并扫描条形码后,扫描结果将触发ReadResultReceivedListener事件。
/* @return -如果启用符号学则返回成功-如果未启用符号学则返回错误。此回调中的错误对象包含错误代码和错误消息*/
一旦有了到Reader的连接,我们就可以通过调用来启用符号setSymbologyEnabled ().它需要2个参数:一个cmbSymbology是要启用或禁用的符号,一个布尔值是ON/OFF。
cmb.setSymbologyEnabled (cmbSymbology。DataMatrix, true) .then((value) => print('DataMatrix enabled')) . catcherror ((error, stackTrace) => print('DataMatrix NOT enabled。$ {error.message} '));
/* @return -成功回调,布尔值显示是符号启用或禁用-错误回调,如果出现错误。此回调中的错误对象包含错误代码和错误消息*/
要检查是否启用了某个符号,可以使用isSymbologyEnabled ().它需要论证cmb符号学。
cmb.isSymbologyEnabled(cbsymbolic .DataMatrix).then((value) {if (value) print('DataMatrix enabled');else print('DataMatrix NOT enabled');})。catchError((error, stackTrace) => print('${error.message}'));
/* @return -灯亮时成功回调-出错时错误回调。此回调中的错误对象包含错误代码和错误消息*/
如果我们想要启用flash,我们可以使用setLightsOn ().它期望一个参数布尔值,并返回一个成功或错误的回调。
cmb.setLightsOn(true) .catchError((error, stackTrace) => print('${error.message}'));
如果在扫描激活之前调用此函数,则为每个扫描会话设置轻初始状态。
/* @return -成功回调,带有布尔值,表示当前灯光状态-如果发生错误,则错误回调。此回调中的错误对象包含错误代码和错误消息*/
我们可以使用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 | cbprevewioption . noillumbtn);
注意:PreviewOptions应该在我们调用之前设置loadScanner ()才能生效。
这应该只在使用设备内置的摄像头进行扫描(cmbDeviceType.Camera)时使用。
setPreviewContainerPositionAndSize接受四个整数参数,它们是左上角坐标的X和Y值,以及预览容器大小的宽度和高度值。所有的值都是设备屏幕的百分比。
cmb.setPreviewContainerPositionAndSize(0、0100、50);//将设置预览为0,0和100%宽度50%高度
注意:setPreviewContainerPositionAndSize在我们打电话之前应该设置好吗loadScanner ()才能生效。
/* @return -设置全屏时成功回调-出错时错误回调。此回调中的错误对象包含错误代码和错误消息*/
这应该只在使用设备内置的摄像头进行扫描(cmbDeviceType.Camera)时使用。
将相机预览设置为全屏而不是局部视图。
cmb.setPreviewContainerFullScreen() .catchError((error, stackTrace) => print('${error.message}'));
/* @return -如果启用图像结果则成功回调-如果出错则错误回调。此回调中的错误对象包含错误代码和错误消息*/
用于启用/禁用图像结果类型。期望一个布尔参数。
cmb.enableImage(true) .catchError((error, stackTrace) => print('${error.message}'));
/* @return -如果启用SVG结果则成功回调-如果出错则错误回调。此回调中的错误对象包含错误代码和错误消息*/
用于启用/禁用svg结果类型。期望一个布尔参数。
cmb.enableImageGraphics(true) .catchError((error, stackTrace) => print('${error.message}'));
/* @return -如果设置了解析器则返回成功-如果出错则返回错误。此回调中的错误对象包含错误代码和错误消息*/
启用或禁用扫描条形码的解析。期望一个cmbResultParser类型的参数。
cmbResultParser.Gs1) .catchError((error, stackTrace) => print('${error.message}'));
/* @return -如果设置了编码则成功回调-如果出错则错误回调。此回调中的错误对象包含错误代码和错误消息*/
设置readString结果类型的编码。期望一个cmbReadStringEncoding类型的参数。
cmb.setReadStringEncoding(cmbReadStringEncoding.Utf8) .catchError((error, stackTrace) => print('${error.message}'));
/* @return -成功回调,带有代表电池电量的值-如果出错则错误回调。此回调中的错误对象包含错误代码和错误消息*/
方法显示连接设备的电池电量。不带任何参数。
cmb.getDeviceBatteryLevel().then((value) {print('电池级别为$value');})。catchError((error, stackTrace) => print('${error.message}'));
/* @return -带有代表当前可用状态的int值的成功回调-如果出现错误则错误回调。此回调中的错误对象包含错误代码和错误消息*/
检查读取设备是否可用getAvailability ().
cmb.getAvailability().then((可用性){if(可用性== cmbAvailability.Available.index) print('ReaderDevice is available');else print('ReaderDevice is NOT available');})。catchError((error, stackTrace) => print('${error.message}'));
/* @return -成功回调,带有代表当前连接状态的int值。此回调中的错误对象包含错误代码和错误消息*/
如果需要获取当前连接状态,getConnectionState ()可以使用
cmb.getConnectionState().then((currentState) {if (currentState == cmbConnectionState.Connected.index) print('ReaderDevice is connected');})。catchError((error, stackTrace) => print('${error.message}'));
/* @return -从执行的DMCC返回结果值的成功回调-如果发生错误则返回错误回调。此回调中的错误对象包含错误代码和错误消息*/
所有的方法都可以替换为向READER设备发送DMCC字符串。为此,我们可以使用API方法sendCommand.它可以用命令串完全控制阅读器。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。
拥有并运营多个康耐视移动终端的公司可能希望远程收集有关电池电量、电池健康状况、已安装固件等的最新信息。
iOS应用使用cmbSDK框架,可以向MDM实例报告连接的移动终端的状态信息。这可以通过setMDMReportingEnabled方法启用,该方法接受一个布尔参数。
关于MDM报告的更多信息可以在这里找到在这里
cmb.setMDMReportingEnabled(true) .catchError((error, stackTrace) => print('${error.message}'));
/* @return -成功回调json字符串值,代表相机曝光补偿范围:"lower":最小相机曝光值"upper":最大相机曝光值"step":相机曝光步长值-错误回调,如果出现错误。此回调中的错误对象包含错误代码和错误消息*/
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 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: bool,表示barcode是否为GS1
-parsedText:表示结果解析文本的字符串
-parsedJSON:表示结果中解析后的json格式文本的字符串
-imageGraphics:表示SVG图像从最后检测帧的字符串
-图像:包含最后检测帧图像的base64字符串
-xml: XML格式的部分结果的字符串表示