通过npm下载插件
$npm安装cmbsdk反应本机--保存
主要是自动安装
$react native链接cmbsdk react native
通过添加以下内容导入react本机应用程序中的组件
从“cmbsdk react native”导入{CMBReader,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.如果您正在使用移动设备的内置摄像头,请对位于iOS/Resources目录中的“MWBScannerImages.xcsets”文件执行相同操作。必威随行版官网
2.在projects info.plist文件中,您需要根据所使用的readerDevice类型添加密钥。
就这样。您应该能够在cmbSDK react本机模块正常工作的情况下运行应用程序。
确保您已从我们的下载页面下载了cmbSDK React Native zip存档。从下载的zip文件中,打开Android/cmbsdk Android二进制目录。
1.打开yourRNApp/android/app/目录中,创建一个名为“libs”的新文件夹(如果还没有),然后打开它。将文件“cmbsdklib release.aar”放在libs文件夹中。此aar可在下载的zip文件的“Android/cmbsdk Android binary”中找到
2.打开位于中的app build.gradleyourRNApp/android/app并添加以下行:
-在依赖项上方添加以下内容:
存储库{flatDir{dirs'libs'}
3.打开位于中的build.gradleyourRNApp/android并将版本更改为19或更高
就这样。您应该能够在cmbSDK react本机模块正常工作的情况下运行应用程序。
要启动并运行扫描仪,首先要做的是调用loadScanner()方法。它需要一个CMBReader.DEVICE_类型参数。此方法未连接到读卡器设备。我们需要打电话连接()在回调中实际连接到读卡器设备
cmb.loadScanner(CMBReader.DEVICE_TYPE.MXReader).then((响应)=>{cmb.getAvailability().then((响应)=>{if(响应==CMBReader.AVAILABILITY.AVAILABILITY){connectReader();}}).catch((拒绝器)=>{});
/*@return(promise){status:boolean,if connection successed true if not false err:string,if status false err not null}*/
connect()方法的结果作为承诺返回,它将包含连接尝试的结果:
cmb.connect().then((connectMethodResult)=>{//configureReader();}建立连接后执行操作)。catch((失败)=>{console.log(“cmb-connectReader失败:+JSON.stringify(失败));
ReaderDevice的连接状态有一个事件侦听器,即CMBReader.EVENT.ConnectionStateChanged事件,下面将对其进行更详细的解释。
/*@return(promise){status:boolean,if disconnect successed true if not false err:string,if status false err not null}*/
正如有连接(),有一个断开连接()方法,该方法与连接():
cmb.disconnect();
类似于连接(),断开连接()也会触发CMBReader.EVENT.ConnectionStateChanged事件
/*扫描程序活动的@return Promise(bool)值(如果命令成功,则为true,否则为false,例如:如果readerDevice未初始化)*/
为了启动/停止扫描过程,我们使用以下方法。它们返回一个承诺,如果命令成功(扫描已开始或停止)或被拒绝(如果没有激活的ReaderDevice初始化或未连接),则将解决该承诺。
启动扫描仪并扫描条形码后,扫描结果将触发CMBReader.EVENT.ReadResultReceived事件
一旦与阅读器建立了连接,我们就可以通过调用setSymbologyEnabled(). 它需要三个参数:一个CMBReader.SYMBOLOGY,它是要启用或禁用的符号;一个布尔值,用于打开/关闭;一个字符串,用于commandID,用于处理命令结果。
cmb.setSymbology(CMBReader.SYMBOLOGY.QR,true,CMBReader.SYMBOLOGY_NAME.QR);
此方法触发CMBReader.EVENT.CommandCompleted事件,其结果包含司令部字符串,以便您知道在事件结果中哪些命令已成功,哪些命令已失败。
为了检查是否启用了符号,我们使用isSymbologyEnabled(). 它包含两个参数:我们正在检查的CMBReader.SYMBOLOGY和司令部用于标识响应的字符串。结果触发了CMBReader.EVENT.CommandCompleted事件,它包含司令部字符串,以便您知道在事件结果中哪些命令已成功,哪些命令已失败。
cmb.isSymbologyEnabled(CMBReader.SYMBOLOGY.QR,CMBReader.SYMBOLOGY_NAME.QR);
/*@return(promise){status:boolean,如果成功执行则为true命令err:string,如果status为false,则err不会为null}*/
如果我们想启用flash,我们可以使用setLightsOn()。它需要一个布尔参数并返回一个承诺。
/*@return(promise){status:boolean,如果灯亮,则为true,否则为false err:string,如果出现错误(例如读卡器未初始化)}*/
我们可以使用isLightsOn()检查灯光状态,它返回一个承诺。
/**@返回与当前读卡器设备的CMBReader.CONNECTION\u状态值解析的承诺*/
如果需要获取当前连接状态,getConnectionState()可以使用
cmb.getConnectionState().then(函数(connectionState){if(connectionState==CMBReader.CONNECTION\u STATE.Connected){//reader is Connected});
仅当使用设备的内置摄像头进行扫描(CMBReader.device\u TYPE.camera)时,才应使用此选项。
要设置将摄像头设备用作条形码读取器时摄像头的行为,请使用setCameraMode()。它采用CMBReader.CAMERA\u模式参数。
cmb.setCameraMode(CMBReader.CAMERA_模式)/**使用不带瞄准镜的摄像头。“预览”处于启用状态,照明可用。CMBReader.CAMERA_MODE.NoAimer=0,使用带有基本瞄准器的相机(例如StingRay)。预览已关闭,照明不可用。CMBReader.CAMERA_MODE.passiveeaimer=1,使用带有主动瞄准器的摄像机(例如MX-100)。“预览”处于禁用状态,照明可用。CMBReader.CAMERA_MODE.ActiveAimer=2,使用移动设备前置摄像头。“预览”处于启用状态,照明不可用。CMBReader.CAMERA_MODE.FrontCamera=3*/
注意:在调用之前应该设置CameraModeloadScanner()让它生效。
仅当使用设备的内置摄像头进行扫描(CMBReader.device\u TYPE.camera)时,才应使用此选项。
此函数需要一个整型参数,该整型参数是我们希望启用的所有预览选项的OR ed结果。
cmb.setPreviewOptions(CMBReader.CAMERA_PREVIEW_OPTION.NoZoomBtn | CMBReader.CAMERA_PREVIEW_OPTION.NoIllumBtn);
注意:在调用之前,应设置预览选项loadScanner()让它生效。
仅当使用设备的内置摄像头进行扫描(CMBReader.device\u TYPE.camera)时,才应使用此选项。
cmb.setPreviewContainerPositionAndSize([0,0100,50])//将预览设置为0,0和100%宽度50%高度
仅当使用设备的内置摄像头进行扫描(CMBReader.device\u TYPE.camera)时,才应使用此选项。
将摄影机预览设置为在全屏而不是局部视图中开始。
cmb.setPreviewContainerFullScreen();
仅当使用设备的内置摄像头进行扫描(CMBReader.device\u TYPE.camera)时,才应使用此选项。
仅在iOS上可用。
将摄影机预览部分视图顶轴设置为从与Androids行为匹配的状态栏下方开始。它需要一个布尔参数。
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.使能映像(真);
用于启用/禁用svg结果类型。需要一个布尔参数。
cmb.enableImageGraphics(真实);
启用或禁用扫描条形码的解析。需要一个CMBReader.RESULT_PARSER类型的参数。
setParser(CMBReader.RESULT\u PARSER.GS1);
设置readString结果类型的编码。需要一个CMBReader.readString\u encoding类型的参数。
cmb.setReadStringEncoding(CMBReader.ReadStringEncoding.UTF_8);
/*@return(promise){status:boolean,如果重置成功则为true,否则为false err:string,如果出现错误(例如读卡器未初始化)}*/
要重置配置选项,我们可以使用重置配置。
cmb.resetConfig(函数(结果){console.log(结果);})
/*@return(promise){value:int err:string,如果出现错误(例如读卡器未初始化)}*/
方法显示所连接设备的电池电量。不接受任何论据。
仅在iOS上可用。
用于创建用于MDM报告的身份验证凭据。它有四个字符串参数:username、password、clientID和clientSecret。
应在setMDMReportingEnabled之前调用。
有关MDM报告的更多信息,请参见在这里
cmb.CreateMDauthCredentials(“用户名”、“密码”、“客户端ID”、“客户端机密”);
仅在iOS上可用。
拥有和运营许多Cognex移动终端的公司可能希望远程收集有关电池电量、电池运行状况、已安装固件等的最新信息。
使用cmbSDK框架的iOS应用程序可以向MDM实例报告连接的移动终端的状态信息。这可以通过接受一个布尔参数的setMDMReportingEnabled方法启用。
有关MDM报告的更多信息,请参见在这里
cmb.setMDMReportingEnabled(true);
React native cmbSDK模块发出可在js应用程序中使用的事件。
这些应该在componentDidMount函数中添加,并在componentWillUnmount中删除(请参阅反应组件生命周期).
首先,创建事件发射器:
导入NativeModules.NativeEventMitter;常量scannerListener=新的NativeEventMitter(cmb);
然后为要处理的每个事件添加侦听器:
scannerListener.addListener(CMBReader.EVENT.ReadResultReceived,(result)=>{if(result.goodRead==true){Alert.Alert(result.symbologysting,result.readString);}});
以下是cmbSDK模块可以发出的所有事件:
CMBReader.EVENT.ReadResultReceived CMBReader.EVENT.Availability已更改CMBReader.EVENT.ConnectionStateChanged CMBReader.EVENT.ScanningStateChanged CMBReader.EVENT.CommandCompleted
commandID(String,用于发送命令的同一个参数)eventType(String,ex:isSymbologyEnabled)command(String,发送的命令)success(Boolean)status(nullable,int,command status(请参见CDMResponse.h))message(nullable,String,command payload)image(nullable,base64扫描图像的字符串表示形式)响应(可空、布尔、命令响应,例如:isSymbologyEnabled将在此处返回true/false)