通过npm下载插件
$ NPM install cmbsdk-react-native——save
主要是自动安装
$ React-Native Link CMBSDK-React-Native
通过添加以下内容导入react本机应用程序中的组件
从'cmbsdk-react-native'中导入{CMBReader, cmb};
控件可以访问所有的API方法CMB.常量,所有枚举和常量都可以在CMBReader类中使用。
在继续之前,请从下载部分下载cmbSDK React本机zip文件,并参阅API参考。
下载页面:https://cmbdn.cognex.com/download.
API参考:https://cmbdn.cognex.com/knowledge/react-nat/rct-api-metho
确保您已从我们的下载页面下载了cmbSDK React Native zip存档。从下载的zip文件中,打开iOS目录。
1.如果你正在使用移动设备内置的摄像头,对“MWBScannerImages”做同样的操作。xcassets”文件位于iOS/Resources目录。必威随行版官网
2.在您的项目中,您需要添加密钥,具体取决于您正在使用的readerDevice类型。
就是这样。你应该能够在cmbSDK react-native模块工作的情况下运行你的应用程序。
确保您已从我们的下载页面下载了cmbSDK React Native zip存档。从下载的zip文件中,打开Android/cmbsdk Android二进制目录。
1.打开yourRNApp / android / app /目录中,创建一个名为“libs”的新文件夹(如果还没有),然后打开它。将文件“cmbsdklib release.aar”放在libs文件夹中。此aar可在下载的zip文件的“Android/cmbsdk Android binary”中找到
2.打开应用程序构建。它坐落在yourrnapp / android / app然后加上这几行:
-在依赖项上面添加这个:
存储库{flatDir{dirs'libs'}
3.构建开放。它坐落在yourRNApp/android并将minSdkVersion改为19或更高
就是这样。你应该能够在cmbSDK react-native模块工作的情况下运行你的应用程序。
要让扫描器启动并运行,首先要做的就是调用loadscanner()方法。它需要一个CMBReader。DEVICE_TYPE参数。此方法不连接阅读器设备。我们需要打电话连接()在回调中连接Reader设备
cmb.loadScanner(cmbread . device_type . mxreader).then((response) => {cmb.getAvailability().then((response) => {if (response == cmbread . availability . available) {connectReader();}}).catch((rejecter) => {});
/* @return (promise) {status: boolean,如果连接成功,则为true如果不是false err: string,如果状态为false err将不为null} */
Connect()方法的结果作为承诺返回,它将包含连接尝试的结果:
cmb.connect().then((connectMethodResult) =>{//在连接建立后做一些事情configureReader();}).catch((失败)=> {console.log("CMB - connectReader失败:"+JSON.stringify(失败))});
ReaderDevice的连接状态有一个事件侦听器,即cmbreader.Event.ConnectionStateChanged.事件下面更详细地解释。
/ * @return(承诺){status:boolean,如果disconnect成功了,如果不是false err:string,如果status false err为null} * /
正如有连接(),有一个断开()与之相反的方法连接():
cmb.disconnect ();
同样到连接(),断开()也会触发cmbreader.Event.ConnectionStateChanged.事件。
/ * @return承诺(bool)扫描仪活动的值(如果命令成功,则为true,否则否则:如果读取器没有初始化)* /
要启动/停止扫描过程,我们使用这些方法。它们返回一个承诺,如果命令成功(扫描已启动或停止)或否则拒绝
启动扫描仪并扫描条形码后,扫描结果触发CMBReader.EVENT.ReadResultReceived事件。
一旦与读者连接,我们就可以通过调用来启用符号setSymbologyEnabled().它预计三个参数:一个CMBreader.Symbology,它是要启用或禁用的符号系统,用于开/关的布尔值,以及用于处理命令结果的CommandID的字符串。
cmb.setSymbology (CMBReader.SYMBOLOGY。QR,真的,CMBReader.SYMBOLOGY_NAME.QR);
此方法触发CMBReader.EVENT.CommandCompleted事件,其结果包含commandID来自第三个参数的字符串,使您知道哪些命令已成功,并且在事件结果中失败了。
要检查是否启用了符号,我们使用IssymbologyEnabled().它需要两个参数:我们正在检查的cmbreader.symbology,以及一个commandID用于标识响应的字符串。结果触发CMBReader.EVENT.CommandCompleted事件,它包含commandID从第二个参数中的字符串,以便您知道哪些命令已成功,并且在事件结果中失败了。
cmb.isSymbologyEnabled(CMBReader.SYMBOLOGY.QR,CMBReader.SYMBOLOGY_NAME.QR);
/* @return (promise) {status: boolean,如果成功执行了命令err: string,则为true,如果状态为false,则err将不为null} */
如果我们想启用闪光灯,我们可以使用setLightsOn ().它期望一个布尔值参数并返回一个承诺。
/*@return(promise){status:boolean,如果灯亮,则为true,否则为false err:string,如果出现错误(例如读卡器未初始化)}*/
我们可以用isLightsOn()检查灯的状态,它返回一个承诺。
/** @return使用CMBReader解析的承诺。当前读取器设备的CONNECTION_STATE值*/
如果需要获取当前连接状态,getConnectionState ()可以使用
cmbter . getconnectionstate ().then(function(connectionState){if (connectionState == cmbter . connection_state . connected){// reader is connected}});
这只应仅在使用用于扫描的摄像机中的设备时使用(cmbreader.device_type.camera)。
要设置当我们使用camera设备作为条形码读取器时摄像机的行为,我们使用setCameraMode()。它需要一个cmbroadreader。CAMERA_MODE论点。
cmbter . setcameramode (cmbter . camera_mode) /**使用无瞄准器的相机。预览打开,照明可用。CMBReader.CAMERA_MODE。NoAimer = 0,使用基本瞄准器(例如,StingRay)。预览关闭,照明不可用。CMBReader.CAMERA_MODE。被动瞄准器= 1,使用相机与主动瞄准器(如MX-100)。预览关闭,照明可用。CMBReader.CAMERA_MODE。ActiveAimer = 2,使用移动设备前置摄像头。 Preview is on, illumination is not available. CMBReader.CAMERA_MODE.FrontCamera = 3 */
注意:在调用之前应该设置CameraModeloadscanner()让它生效
这只应仅在使用用于扫描的摄像机中的设备时使用(cmbreader.device_type.camera)。
此函数预期一个整数参数,它是我们要启用的所有预览选项的或ED结果的结果。
cmb.setPreviewOptions(cmbreader.camera_preview_option.nozoombtn | cmbreader.camera_preview_option.noillumbtn);
注意:PreviewOptions应该在我们调用之前设置loadscanner()让它生效
这只应仅在使用用于扫描的摄像机中的设备时使用(cmbreader.device_type.camera)。
cmb.setPreviewContainerPositionAndSize([0,0100,50])//将预览设置为0,0和100%宽度50%高度
这只应仅在使用用于扫描的摄像机中的设备时使用(cmbreader.device_type.camera)。
将相机预览设置为全屏而不是局部视图。
cmb.setPreviewContainerfullscreen();
这只应仅在使用用于扫描的摄像机中的设备时使用(cmbreader.device_type.camera)。
仅适用于iOS系统。
设置摄像头预览部分视图顶部轴开始下方的状态栏匹配的android行为。它需要一个布尔参数。
cmb.setPreviewContainerBelowStatusBar(真正的);cmb.setPreviewContainerPositionAndSize([0,0100,50])//将预览设置为0,0和100%宽度50%高度.//在iOS上,部分视图将显示在状态栏下面。
cmb.setPreviewContainerBelowStatusBar(假);cmb.setPreviewContainerPositionAndSize([0,0100,50])//将预览设置为0,0和100%宽度50%高度//在iOS上,部分视图将从屏幕顶部开始,并与状态栏重叠。
用于启用/禁用图像结果类型。需要一个布尔参数。
cmb.enableImage(真正的);
用于启用/禁用svg结果类型。期望一个布尔参数。
cmb.enableImageGraphics(真正的);
启用或禁用对扫描条形码的解析。需要一个cmbread . result_parser类型的参数。
setParser(CMBReader.RESULT\u PARSER.GS1);
设置readString结果类型的编码。需要一个cmbread . readstring_encoding类型的参数。
cmb.setReadStringEncoding (CMBReader.READSTRING_ENCODING.UTF_8);
/*@return(promise){status:boolean,如果重置成功则为true,否则为false err:string,如果出现错误(例如读卡器未初始化)}*/
要重置配置选项,我们可以使用resetconfig。
cmb.resetconfig(函数(结果){console.log(结果);})
/ * @return(承诺){value:int err:string,在错误(例如reader未初始化)} * /
方法显示所连接设备的电池水平。不接受任何论点。
仅适用于iOS系统。
用于创建用于MDM报告的身份验证凭据。它有四个字符串参数:username、password、clientID和clientSecret。
应该在setMDMReportingEnabled之前调用。
有关MDM报告的更多信息可以找到在这里
CMB.CREATEMDMAUTCEDENTIONS(“用户名”,“密码”,“ClientID”,“CliencyCRET”);
仅适用于iOS系统。
拥有和运营多个康耐视移动终端的公司可能希望远程收集有关电池电量、电池运行状况、已安装固件等的最新信息。
使用cmbSDK框架的iOS应用程序可以向MDM实例报告连接的移动终端的状态信息。这可以通过接受一个布尔参数的setMDMReportingEnabled方法启用。
有关MDM报告的更多信息可以找到在这里
cmb.setMDMReportingEnabled(true);
React本地cmbSDK模块发出的事件可以在js应用程序中使用。
这些应在ComponentDidMount函数中添加,并在ComponentWillunmount中删除(参见反应组件生命周期)。
首先,创建活动发射器:
进口NativeModules.NativeEventEmitter;const scannerListener = new NativeEventEmitter(cmb);
然后为你想要处理的每个事件添加监听器:
scannerListener.addListener(CMBReader.EVENT.ReadResultReceived,(result)=>{if(result.goodRead==true){Alert.Alert(result.symbologysting,result.readString);}});
以下是cmbSDK模块可以发出的所有事件:
cmbread . event . readresultreceived cmbread . event . availabilitychanged cmbread . event . connectionstatechange cmbread . event . scanningstatechange cmbread . event . commandcompleted
commanddid (String,与用来发送命令的参数相同)eventType (String,例如:isSymbologyEnabled)命令(String,被发送的命令)成功(Boolean)状态(nullable, int,命令状态(参见CDMResponse.h))消息(nullable, String,命令有效载荷)图像(nullable, base64扫描图像的字符串表示)响应(nullable, Boolean,命令响应,例如:issymologyenabled将返回真/假)