重要的
使用cmbSDK颤振插件MX设备是免费的,但如果你想利用相机设备(扫描与智能手机相机),你需要从CMBDN.
读卡器仍然在没有许可证的情况下工作,但结果会被*字符随机屏蔽。
它可以免费注册,您可以获得30天的试用许可证密钥。
获得密钥后,有两种方法可以在应用程序中使用。
cmbsdkflatter.registersdk(“skd_key”);
探索插件用法的最好方法是查看我们的演示应用程序。您可以从下载我们的演示应用程序这里。
简而言之,在您的项目中使用我们的插件,这里有以下步骤:
导入的包:cmbsdk_flutter / cmbsdk_flutter.dart ';
打开main.dart从演示应用程序中检查此代码。我们的演示应用程序中的所有代码都有一个简短的描述。
CmbsdkFlutter.startScanning().catchError((error,stackTrace)=>print('${error.message}');
要启动并运行扫描仪,首先要做的是调用loadScanner ()方法。它期望CMBSDkdeviceType Param。该方法不连接到读取器设备。我们需要打电话连接()在回调中连接Reader设备
cmbsdkflitter . loadscanner (_deviceType).then((value) {cmbsdkflitter .connect().then((value){…})。catchError((error, stackTrace){…});});
/* @return -成功回调如果连接完成-错误回调如果连接被拒绝。这个回调中的error对象包含错误代码和错误消息*/
connect()方法的结果将作为成功或错误回调返回
cmbsdkflutter.connect()。然后((value){...})。catchError((错误,StackTrace){...});
有一个事件侦听器,用于readerDevice的连接状态,即connectionstateChangedListener.事件如下更详细地解释。
/ * @return - 如果完成断开连接,则成功回调 - 如果断开连接,则呼叫错误。这个回调中的error对象包含错误代码和错误消息*/
就像有连接(),有一个断开连接()与之相反的方法连接():
cmbsdkflutter.disconnect()。然后((value){...})。catchError((错误,stacktrace){...});
类似于连接(),断开连接()也触发了这一点connectionstateChangedListener.事件。
/* @return - success callback if scanning state is changed - error callback if scanning state is not changed这个回调中的error对象包含错误代码和错误消息*/
要启动/停止扫描过程,我们使用这些方法。如果命令成功(扫描已启动或停止)或错误回调,则返回成功回调(如果没有初始化或未连接的活动ReaderDevice)。这些方法触发了扫描状态更改列表器事件返回当前扫描状态(如果启动扫描进程为true,如果停止扫描进程为false)。
CmbsdkFlutter.startScanning(),然后((值){…})。catchError((error, stackTrace){…});
启动扫描仪并扫描条形码后,扫描结果触发ReadResultreCeivedListener.事件。
/*@return-启用符号时成功回调-未启用符号时错误回调。此回调中的错误对象包含错误代码和错误消息*/
一旦与Reader建立了连接,我们就可以通过调用setSymbologyEnabled().它预计2 params:一个cmbsdksybology,它是要启用或禁用的符号系统,以及开/关的布尔值。
cmbsdkflutt.setsymbologyenabled(cmbsdksymbology.datamatrix,true).then((value)=>打印('datamatrix启用')).catchError((错误,stacktrace)=>打印('未启用DataMatrix。$ {errormessage}'));
/* @return - success callback with Boolean value that show is symbol enabled or disabled - error callback if something went wrong。这个回调中的error对象包含错误代码和错误消息*/
要检查我们是否启用了符号,我们使用isSymbologyEnabled (). 它需要SDK符号。
cmbsdkflutter.issymbologyenabled(cmbsdksymbology.datamatrix)。然后((值){if(值)打印(启用'dataMatrix');否则打印('dataMatrix未启用');})。catchError((错误,stacktrace)=>打印('$ {errormessage}'));
/*如果灯打开,返回成功回调;如果出错,返回错误回调。这个回调中的error对象包含错误代码和错误消息*/
如果我们想启用闪光灯,我们可以使用setLightsOn ().它期望一个布尔值参数并返回一个成功或错误回调。
cmbsdkflitter . setlightson (true) .catchError((error, stackTrace) => print('${error.message}'));
如果我们在扫描激活之前调用此函数,我们将为每个扫描会话设置灯光初始状态。
/* @return -成功回调,Boolean值表示当前灯的状态-错误回调,如果出错。这个回调中的error对象包含错误代码和错误消息*/
我们可以用isLightsOn()检查灯的状态,它返回一个带有当前灯状态的回调。
cmbsdkflutter.islightson()。然后((value){if(值)打印('灯开启');否则打印('灯关闭');})。catchError((错误,stacktrace)=>打印('$ {error.message}')));
当我们使用照相机设备作为条形码阅读器时,设置照相机的行为方式。
CMBSDKlutter.setCameraMode(CmbsdkCameraMode.NoAimer);
注意:在我们打电话之前应该设置摄像机loadScanner ()为了生效。
这应该只在使用设备内置的相机进行扫描时使用(CmbsdkDeviceType.Camera)。
这个函数需要一个整型参数,它是我们想要启用的所有预览选项的OR-ed结果的结果。
CmbsdkFlutter.setPreviewOptions (CmbsdkPrevewiOption。NoZoomBtn | CmbsdkPrevewiOption.NoIllumBtn);
注意:PreviewOptions应该在我们调用之前设置loadScanner ()为了生效。
这应该只在使用设备内置的相机进行扫描时使用(CmbsdkDeviceType.Camera)。
setPreviewContainerPositionAndsize需要四个整数参数,它是左上坐标的x和y值,以及预览容器大小的宽度和高度值。所有值都是设备屏幕的百分比。
cmbsdkflutter.setPreviewContainerPositionAndsize(0,0,100,50);//将预览设置为0,0和100%宽度50%高度
/* @return -成功回调,如果全屏设置-错误回调,如果出错。这个回调中的error对象包含错误代码和错误消息*/
这应该只在使用设备内置的相机进行扫描时使用(CmbsdkDeviceType.Camera)。
将相机预览设置为全屏而不是局部视图。
CmbsdkFlutter.setPreviewContainerFullScreen().catchError((错误,堆栈跟踪)=>print('${error.message}');
/* @return -成功回调,如果图像结果是启用的-错误回调,如果发生了错误。这个回调中的error对象包含错误代码和错误消息*/
用于启用/禁用图像结果类型。需要一个布尔参数。
cmbsdkflutter.enableimage(true).catcherror((错误,stacktrace)=>打印('$ {errermessage}'));
/* @return -如果启用SVG结果,返回成功回调-如果出错,返回错误回调。这个回调中的error对象包含错误代码和错误消息*/
用于启用/禁用svg结果类型。需要一个布尔参数。
cmbsdkflutter.enableImagegraphics(真实的).catchError((错误,StackTrace)=>打印('$ {errormessage}'));
/ * @return - 如果解析器设置了成功回调 - 如果出现问题,则会错误回调。这个回调中的error对象包含错误代码和错误消息*/
启用或禁用解析扫描条形码。期待CMBSDkresultParser类型的一个参数。
CmbsdkFlutter.setParser(CmbsdkResultParser.Gs1).catchError((error,stackTrace)=>print('${error.message}');
/*@return-success callback if encoding set-error callback if something出错。此回调中的错误对象包含错误代码和错误消息*/
设置readString结果类型的编码。需要一个CmbsdkReadStringEncoding类型的参数。
cmbsdkflitter . setreadstringencoding (CmbsdkReadStringEncoding.Utf8) .catchError((error, stackTrace) => print('${error.message}'));
/* @return - success callback with value that represent the battery level - error callback if something went wrong。这个回调中的error对象包含错误代码和错误消息*/
方法显示所连接设备的电池水平。不接受任何论点。
cmbsdkflutter.com getdevicebatterylevel ().then((value) {print('电池级别是$value');})。catchError((error, stackTrace) => print('${error.message}'));
/*@return-success callback,int值表示当前可用性状态-如果出现问题,则返回错误回调。此回调中的错误对象包含错误代码和错误消息*/
检查读取器设备是否可用getAvailability ().
CmbsdkFlutter.getAvailability().then((可用性){if(可用性==CmbsdkAvailability.availability.index)打印('ReaderDevice可用');else打印('ReaderDevice不可用');}).catchError((错误,stackTrace)=>print('${error.message}');
/* @return -成功回调,int值表示当前的连接状态-错误回调,如果发生了错误。这个回调中的error对象包含错误代码和错误消息*/
如果您需要获取当前的连接状态,getConnectionState()可以使用
cmbsdkfliter . getconnectionstate ().then((currentState) {if (currentState == CmbsdkConnectionState.Connected.index) print('ReaderDevice is connected');})。catchError((error, stackTrace) => print('${error.message}'));
/*返回DMCC执行的结果值的成功回调-出错时返回错误回调。这个回调中的error对象包含错误代码和错误消息*/
所有这些方法都可以用向读卡器设备发送DMCC字符串来代替。为此,我们可以使用我们的API方法Sendcommand..它可以用命令字符串来完全控制Reader。DMCC字符串作为输入参数发送。
CmbsdkFlutter。Sendcommand.('GET DEVICE.TYPE') .then((value) => print('$value')) .catchError((error, stackTrace) => print('${error.message}'));
仅在iOS上可用。
用于创建用于MDM报告的身份验证凭据。它需要四个字符串参数:用户名,密码,clientId和clientsecret。
应该在setMDMReportingEnabled之前调用。
有关MDM报告的更多信息,请参见这里
cmbsdkflutter.createmdmauthcrendentials('用户名','password','clientId','cliencyecret').catchError((错误,stacktrace)=>打印('$ {errermessage}'));
仅在iOS上可用。
拥有和运营许多Cognex移动终端的公司可能希望远程收集有关电池电量、电池运行状况、已安装固件等的最新信息。
使用CMBSDK框架的IOS应用程序可以将附加的移动终端的状态信息报告给MDM实例。可以使用leasemdmreporting的方法启用,该方法接受一个布尔参数。
有关MDM报告的更多信息,请参见这里
cmbsdkflatter.setmdmreportingEnabled(true).catchError((错误,stacktrace)=>打印('$ {errormessage}'));
当可用性更改时,此侦听器仅用于MXReader(例如:当MX Mobile终端已连接或断开电缆时,或已打开或关闭)。结果是包含可用性信息的int。
CmbsdkFlutter.setAvailabilityChangedListener((可用性){if(可用性==CmbsdkAvailability.Available.index)打印('ReaderDevice可用');});
cmbsdkflitter . setconnectionstatechangedlistener ((state) {if (state == CmbsdkConnectionState.Connected.index) print('ReaderDevice is connected');});
cmbsdkflitter . setscanningstatechangedlistener ((scanningState) {if (scanningState) print('扫描启动');});
cmbsdkflutter.com setreadresultreceivedlistener ((resultJSON) {final Map resultMap = jsonDecode(resultJSON);});
resultJSON是一个JSON对象,其结构如下:
-xml:以xml格式表示读取器设备的完整结果的字符串
-后果: json数组的所有结果。如果你在这里使用多代码模式,你会发现主要结果和所有其他部分结果。
-subResults:所有部分结果的json数组(如果使用单代码模式,此数组将为空)
results和subResults数组包含以下结构项:
-符号学:检测到条形码符号系统的INT表示
-symbologystring.:检测到的条码符号的字符串表示形式
-读字符串:条码的字符串表示
-goodRead:指示条码是否扫描成功的bool标记
-isGS1:bool,指示条形码是否为GS1
-parsedText:字符串,表示从结果中解析的文本
-Parsedjson.:表示结果中json格式的已解析文本的字符串
-图像制图:表示上次检测到的帧的svg图像的字符串
-图像base64字符串,包含最后检测帧的图像
-xml:字符串表示部分结果XML格式