康耐视移动条码SDKcmbSDK是一个用于开发移动条码扫描应用程序的工具。CmbSDK是基于Cognex的DataMan技术和Manatee Works条形码扫描SDK,它允许您创建移动设备的条形码扫描应用程序。用于条形码扫描的移动设备范围从智能手机到MX系列工业条形码阅读器。CmbSDK通过ReaderDevice连接层。一旦应用程序建立了与读者的连接,一个统一的API被用作接口配置设备,无需写太多条件代码。
CmbSDK提供两个基本的ReaderDevice连接层:
CMBSDK支持Codgex的MX系列移动终端,使用CMBSDK的一些功能如下:
通常情况下,你可以通过USB或lightning接口将移动设备(手机或平板电脑)连接到PC上,开始调试。如果MX移动终端通过USB或闪电端口连接到您的移动设备,而您的应用程序正在运行,您需要通过Wi-Fi调试您的应用程序。
要使用Android Studio的调试,通过USB连接Android设备到PC,并确保你可以运行并使用USB线调试应用程序。
要将Android设备连接到Wi-Fi,请确保在IDE旁边安装了Android工具。
作为条形码扫描设备的智能手机在功能上的差异导致了不同于特定扫描仪的用户体验,从而影响了移动条形码扫描应用程序的设计。通过遵循一些简单的指导方针,您可以使用cmbSDK开发应用程序,在使用MX移动终端或移动设备的内置摄像头时,它们的工作方式与cmbSDK相同。
CMBSDK使用移动设备的内置摄像机使用默认的条形码读取选项。但是,CMBSDK不会为相机阅读器实现保存的配置。这意味着每次应用程序开始使用相机阅读器时,它就以摄像机的默认设置开始。有关默认设置的列表,请参阅附录.
没有硬件触发,移动设备必须使用替代方法来启动条形码扫描。该cmbSDK支持三种方法来触发条形码扫描:
内置的摄像头提供了条形码瞄准移动设备的显示屏上的实时视频流预览。重新定位移动设备,直到条形码出现在内置摄像机的视野中,并且应用程序对其进行解码。CmbSDK提供了一个内置的可显示部分或全屏幕预览控制,并在纵向或横向。
cmbSDK还支持被动瞄准器:连接到移动设备或其外壳的设备,使用设备的LED闪光作为光源来投射瞄准或瞄准模式。这种移动设备可以投射类似于特制扫描仪的瞄准器模式,因此不需要实时预览。然而,使用LED闪光灯作为瞄准器,一般扫描照明是不可用的。
cmbSDK支持纵向、横向和自动旋转以显示条形码预览和扫描方向。无论应用程序和/或移动设备的方向如何,移动设备都可以扫描大多数条形码。
横向或纵向 | 只有肖像 | 仅风景 |
---|---|---|
大多数条形码可以在纵向或横向扫描。 | 最良好的定义和中等大小的条形码可以以纵向扫描,这是保持移动设备的最自然的方式。 例如:QR, Data Matrix, Maxicode。 |
长度,致密或不良的条形码更容易扫描在横向方向上,这是更高的分辨率。 示例:PDF417。 |
移动设备是条码解码的理想平台。cmbSDK针对移动环境进行了优化,但图像分析和条码解码仍然是CPU密集型活动。由于这些进程与移动操作系统(OS)、服务和其他应用程序共享移动设备的CPU,所以这些进程优化了条形码扫描应用程序,并将其限制为只使用他们需要的cmbSDK的特性。
要优化应用程序,请执行以下操作:
没有条码符号是默认启用的,当cmbSDK被初始化为使用移动设备的内置摄像头。
安装Android cmbSDK
在“源目录”字段中,浏览包含Build.gradle文件和中部CMBSDklib-Release.AAR文件的CMBSDKLIB-Release.Ar。在模块名称字段中,您应该看到:cmbsdklib释放,并点击完成.
浏览cmbsdklib-release。单击“文件名”字段中的aar文件完成.
从中安装MX Connect应用程序应用商店与MX移动终端通信。
安装iOS cmbSDK:
要在没有MX移动终端的移动设备上使用cmbSDK进行条形码扫描,需要安装许可密钥。如果许可证密钥丢失,将出现星号而不是扫描结果。
有关如何获取许可密钥(包括30天试用许可)的信息,请与康耐视销售代表联系。
安卓:
<元数据android: name = " MX_MOBILE_LICENSE " android: value = " YOUR_MX_MOBILE_LICENSE " / >
<活动android:name =“。扫描活动”android:configchanges =“方向化”> <类别android:name =“android.intent.category.launcher”/> Intent-Filter> Activity> 申请>
您还可以通过在创建新实例时复制下面的文本来添加许可密钥ReaderDevice.
case PhoneCamera: readerDevice = readerDevice。getphonecameradevice.(this, param_cameraMode, PreviewOption.DEFAULTS, null, "SDK_KEY");
iOS版:
获得许可密钥后,将其作为字符串添加到应用程序的Info中。Plist文件下的密钥MX_MOBILE_LICENSE.
安装cmbSDK你的项目。
使用DataManSystem.createDataManSystemForMXDevice ()方法创建DatamanSystem对象。
CmbSDK为支持的扫描设备(MX移动终端和手机的摄像头)提供了一个高级的抽象接口。
应用程序和条形码扫描设备之间的主要接口是ReaderDevice类。的ReaderDevice类表示设备的抽象层,处理所有通信和必要的硬件管理,如使用智能手机扫描。
执行以下步骤以使用cmbsdk:
创建从一个实例ReaderDevice使用要使用的扫描设备类型(MX读者或相机的读者).
连接到ReaderDevice创建实例。
配置ReaderDevice例如,如果需要的话。
开始扫描。
执行以下步骤来设置和启动cmbSDK:
进口com.cognex.dataman.sdk。*进口com.cognex.mobile.barcode.sdk。*
根据你的需要构建你的UI,但要考虑以下几个方面:
我们的示例应用程序(您可以在CMBSDK捆绑包中找到)正在使用全屏预览。要更改示例应用程序以使用部分视图,请添加以下内容相对在结束时约束青年在Activity_scanner.xml.文件。使用这个布局广告ViewGroup读取器构造函数中的参数(getphonecameradevice.)当读取器设备初始化.
公共类ScannerActivity扩展AppCompatActivity工具OnConnectionCompletedListener,ReaderDeviceListener,ActivityCompat.OnRequestPermissionsResultCallback {// .... connect方法已经完成,在这里你可以看到是否有与建立连接或没有@覆盖公共无效onConnectionCompleted(ReaderDevice readerDevice错误,Throwable的错误){//如果我们有有效的连接错误PARAM将是空的,//否则这里是错误告知我们的问题,我们有而如果(错误连接到读卡器设备!= NULL){//请求摄像头权限如果必要的,如果(错误的instanceof CameraPermissionException)ActivityCompat.requestPermissions(((ScannerActivity)这一点),新的String [] {Manifest.permission.CAMERA},REQUEST_PERMISSION_CODE);updateUIByConnectionState();}} //当与self.readerDevice的连接已被更改这就是所谓的。//该readerDevice可用只在 “ConnectionState.Connected” 状态@覆盖公共无效onConnectionStateChanged(ReaderDevice读者){clearResult();如果(reader.getConnectionState()== ConnectionState.Connected){//我们只是连接的,所以现在我们配置怎么想的那样configureReaderDevice(设备);} isScanning = FALSE;updateUIByConnectionState();} //扫描完成后,这就是所谓的,无论是通过检测条形码,通过使用屏幕上的按钮或硬件触发按钮,或者如果扫描超时@覆盖公共无效onReadResultReceived(ReaderDevice readerDevice,ReadResults取消扫描 results) { clearResult(); if (results.getSubResults() != null && results.getSubResults().size() > 0) { for (ReadResult subResult : results.getSubResults()) { createResultItem(subResult); } } else if (results.getCount() > 0) { createResultItem(results.getResultAt(0)); } isScanning = false; btnScan.setText("START SCANNING"); resultListAdapter.notifyDataSetChanged(); } // This is called when a MX-1xxx device has became available (USB cable was plugged, or MX device was turned on), // or when a MX-1xxx that was previously available has become unavailable (USB cable was unplugged, turned off due to inactivity or battery drained) @Override public void onAvailabilityChanged(ReaderDevice reader) { if (reader.getAvailability() == Availability.AVAILABLE) { connectToReaderDevice(); } else if (reader.getAvailability() == Availability.UNAVAILABLE) { AlertDialog.Builder alert = new AlertDialog.Builder(this); alert .setTitle("Device became unavailable") .setPositiveButton("OK", null) .create() .show(); } }
使用以下出厂方法初始化MX读取器的读取器设备对象:
case MX: readerDevice = readerDevice . getmxdevice (this);//当MX设备变为可用/不可用时监听if (!availabilityListenerStarted) {readerDevice.startAvailabilityListening();availabilityListenerStarted = true;}
MX移动终端的可用性可以在设备打开或关闭时更改,或者如果USB电缆连接或断开连接。您可以使用以下内容处理这些更改ReaderDeviceListener接口方法:
public void onAvailabilityChanged(ReaderDevice reader);
建议您使用MX Mobile终端来扫描条形码。但是,CMBSDK还支持使用移动设备的内置摄像机。这包括支持可选的外部瞄准器或照明,以及Live-Stream Preview的定制。
若要使用移动设备的内置摄像头扫描条形码,请初始化ReaderDevice对象使用getphonecameradevice.静态方法。初始化后,相机阅读器有几个选项。需要配置的参数如下:
的语境参数提供对您当前所在活动的引用。
的摄影师参数的类型为CameraModecameramode.java.它接受下表中列出的值之一。
这些模式为读者提供以下默认设置:
根据选择的模式,设置额外的照明选项和行为,也在表格中列出。
价值 | 描述 | 照明 | Live-Stream Preview |
---|---|---|---|
no_aimer. | 初始化阅读器,以便在移动设备屏幕上使用实时流预览,这样用户就可以将条形码定位在摄像头的视野范围内,以进行检测和解码。如果移动设备没有瞄准配件,请使用此模式。 | 照明是可用的,控制它的按钮是可见的直播预览。 | 显示 |
如果命令被发送到阅读器进行目标控制,它们将被忽略。 | |||
被动瞄准器 | 使用被动瞄准器初始化读取器。在此模式下,设备屏幕上没有实时预览,因为瞄准模式是投影的。 | 照明不可用,并且实时流预览没有照明按钮。 | 不显示 |
如果命令被发送到读取器以进行照明控制,则忽略它们,因为它在此模式下假设移动设备的内置LED用于Aimer。 | |||
FRONT_CAMERA | 初始化读取器,以便使用移动设备的前置摄像头(如果可用)。使用这种配置要小心,因为大多数前置摄像头没有自动对焦和照明,提供的图像分辨率明显较低。在此模式下,照明不可用。 | 使用前置摄像头。 | 显示 |
照明不可用,Live-Stream Preview没有照明按钮。 | |||
如果命令被发送到读者的Aimer或照明控制,则忽略它们。 |
的预览参数的类型为预览中定义的PreviewOption.java,用于更改读取器的默认值或覆盖从所选对象派生的默认值摄影师.您可以指定以下选项:
价值 | 描述 |
---|---|
违约 | 接受由CameraMode设置所有默认值。 |
NO_ZOOM_BUTTON | 皮上的实时流预览缩放按钮,防止用户调整移动设备相机的变焦。 |
NO_ILLUMINATION_BUTTON | 隐藏Live-Stream预览上的照明按钮,防止用户切换照明。 |
硬件触发 | 启用对所述移动设备上开始扫描一个模拟硬件触发(音量减小按钮)。此按钮仅开始扫描按下时,它并不需要举行类似的专用扫描仪的触发器,然后按它第二次不会停止扫描过程。 |
暂停 | 如果使用实时流预览,则在startScanning ()调用方法,但读取器未开始解码,直到用户按下屏幕按钮开始扫描过程。 |
永远都是你的表演 | 即使选择了瞄准模式,也会显示直播预览(例如CameraMode == PASSIVE_AIMER)。 |
高分辨率 | 在更高的分辨率下使用设备摄像头,将默认的1280x720在支持它的设备上更改为1920x1080,并在不支持它的设备上的默认分辨率上。这可以帮助扫描小条形码,但是在每个帧中有更多的数据来增加解码时间。 |
HIGH_FRAME_RATE | 使用设备的摄像头在60帧/秒而不是默认的30帧/秒,以提供更流畅的摄像头预览。 |
show_close_button. | 在局部视图中显示关闭按钮。 |
KEEP_PREVIEW_IN_PAUSED_STATE | 在读取或超时后,保持预览处于暂停状态。 |
的ViewGroup(可选)参数指定实时流预览的容器。如果不设置该参数零,使用全屏预览。
的RegistrationKey(可选)参数用于使用您拥有的许可证密钥对SDK进行许可
的CustomData的(可选)参数用于自定义跟踪
例子
创建一个没有瞄准器,没有缩放按钮,使用软触发的阅读器:
readerDevice = ReaderDevice.getPhoneCameraDevice(此,CameraMode.NO_AIMER,PreviewOption.NO_ZOOM_BUTTON | PreviewOption.PAUSED);
这将在扫描仪暂停时启动预览,并使用软触发按钮切换扫描。按下软触发按钮后,预期的预览外观如下:
由于设置了活动符号,图像中的取景器具有活动扫描表面。有关详细信息,请参见启用符号赛.
在Android 6.0及以上版本中,您需要请求用户的许可才能访问移动设备的内置摄像头。
如果摄像机由于权限问题无法打开,则onConnectionCompleted(readerDevice,误差)回调包含A.CameraPermissionException在错误参数中。属性可以检查此异常类型运算符操作员和请求活动中的权限。
如果(错误instanceof CameraPermissionException) ActivityCompat.requestPermissions(((ScannerActivity) this), new String[]{Manifest.permission. permission. permission. permission. permission。相机},REQUEST_PERMISSION_CODE);
您需要实现activitycompat.onrequestpermissionResultCallback.界面以捕获用户权限结果。
来处理用户响应onRequestPermissionResult(…),可以使用以下代码重新连接手机摄像头:
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults){//检查权限请求的结果。如果用户允许,则连接到readerDevice。长度> 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {if (readerDevice != null && readerDevice. getconnectionstate () != ConnectionState.Connected) readerDevice.connect(ScannerActivity.this);} else {if (ActivityCompat.shouldShowRequestPermissionRationale(((ScannerActivity) this), Manifest.permission.CAMERA)) {AlertDialog。Builder构建器= new AlertDialog.Builder(这).setMessage(“你需要允许访问相机”).setPositiveButton(“OK”,新DialogInterface.OnClickListener () {@Override公共空onClick (DialogInterface DialogInterface, int i) {ActivityCompat.requestPermissions (ScannerActivity。这样,新String [] {Manifest.permission。相机},REQUEST_PERMISSION_CODE);}}) .setNegativeButton("取消",null);AlertDialog = builder.create();dialog.show ();} } } }
连接前,设置ReaderDeviceListener反对接收事件:
ReaderDevice.setReaderDeviceListener(此);
具体操作请参见步骤3为Android设置您的应用程序才能使用CoGnex Mobile Barcode SDK.
此外,您可以启用从读取器发送最后触发的图像和SVG:
readerDevice.enableImage(真正的);readerDevice.enableImageGraphics(真正的);
初始化后调用Connect方法ReaderDevice并设置侦听器方法来处理读取器的响应。连接方法需要OnConnectionCompletedListener作为参数:
readerDevice.connect(ScannerActivity.this); //确保设备打开并准备就绪
下面的侦听器方法使用newReaderDevice状态信息:
public void onConnectionStateChanged(ReaderDevice reader);public void onConnectionCompleted(ReaderDevice reader, Throwable err)
的onConnectionCompleted当连接过程完成时,还会调用作为连接参数传递的方法。如果存在连接错误,则此方法提供了一个Throwable对象
连接到扫描设备后,您可能需要更改它的一些设置。CmbSDK提供了一组高级的、独立于设备的api,用于设置和检索设备的当前配置。
您可以通过调用正确配置的读取器来开始扫描条形码startScanning来自你的方法ReaderDevice类:
readerDevice.startScanning ();
您可以使用以下内容停止扫描:
ReaderDevice.Stopscanning();
在以下条件之一下扫描停止:
属性中的ReadResults可迭代结果集合对象,当成功解码条形码时ReaderDevice侦听器方法。的onReadResultReceived调用侦听器方法,因为读取器解码了条形码或扫描过程完成。
例子
//扫描完成后,通过检测条形码、使用屏幕按钮或硬件触发按钮取消扫描,或者如果扫描超时@Override public void onReadResultReceived(ReaderDevice ReaderDevice,ReadResults results){clearResult();if(results.getSubResults())!=null&&results.getSubResults().size()>0{for(ReadResult subResult:results.getSubResults()){createResultItem(subResult);}否则如果(results.getCount()>0){createResultItem(results.getresulttat(0));}isScanning=false;btnScan.setText(“开始扫描”);resultListAdapter.notifyDataSetChanged();}
CmbSDK不启用任何符号默认情况下,使用移动设备的内置摄像头读取条形码。您必须启用应用程序需要扫描的所有条形码符号,以实现最佳扫描性能。有关详细信息,请参见优化移动设备性能.
可以使用以下方法启用个人符号符号ReaderDevice类:
readerDevice.setSymbologyEnabled(symbologylistener) . readerDevice.setSymbologyEnabled(symbologylistener) . readerDevice.setSymbologyEnabled(symbologylistener) . readerDevice.setSymbologyEnabled(symbologylistener) . readerDevice.setSymbologyEnabled(symbologylistener)。DATAMATRIX,真的,null);readerDevice.setSymbologyEnabled(象征。UPC_EAN,真的,null);
在这种方法中使用的符号系统参数的所有符号中可以找到ReaderDevice.java.
例子
/*启用QR扫描*/readerDevice.setSymbologyEnabled(Symbology.QR,true,null);
你也可以使用相同的方法来禁用符号:
/ *禁用代码25扫描*/ readerDevice.setSymbologyEnabled(symbol。这件、虚假、无效);
您可以实现的方法OnSyymbologiesListener.要检查符号变化的结果:
@Override公共空onSymbologyEnabled (ReaderDevice读者,象征符号,布尔启用,可抛出错误){如果(错误! = null){/ *可能不成功的象征是由当前不支持的设备,或者有问题ReaderDevice和MX设备之间的连接* /}其他{/ /成功}}
如果你的阅读设备配备了照明灯,你可以控制它们:当扫描开始时,你可以打开或关闭它们。使用Reader Device对象的以下方法:
readerDevice。setLightsOn(true, null);
可以实现的接口方法OnLightsListener,这是该方法的第二个参数。
公共类扫描仪扩展了AppCompativity实现.... onlightsListener .... {.... @Override公共void onlightsonCompleted(ReaderDevice Reader,Boolean On,Rockable错误){if(错误!= null){// foreucesfess} els {// 成功 } } }
如果使用移动设备的内置摄像头作为读取设备,可以配置变焦级别和使用方式。有三个缩放级别:
的设置相机。变焦-PERCENT [100-MAX] [100-MAX]命令,用于配置两个级别的放大百分比。100不被放大,MAX(上升到1000)在设备能够的范围内放大。第一个参数用于设置级别1的缩放,第二个参数用于设置级别2的缩放。
控件可以检查当前的缩放设置获取Camera.zoom-percep命令,返回两个值:级别1和级别2缩放。
例子
readerDevice.getDataManSystem()。sendCommand(“设置相机。ZOOM-PERCENT 250 500”);
获取/设置相机。变焦0 - 2是另一个用于设置缩放级别或返回实际设置的命令。SET命令可能的取值有:
您可以在扫描期间甚至甚至在扫描期间调用此命令,并且缩放达到配置级别。如果扫描完成,则将值重置为正常行为(0)。
例子
readerDevice.getDataManSystem()。sendCommand(“设置相机。放大2”);
当使用移动设备的摄像头时,cmbSDK允许你在预览容器中或全屏查看摄像头预览。这个预览还包含一个可定制的覆盖层。cmbSDK相机覆盖功能按钮缩放,闪烁和关闭扫描仪,和一个进度条指示扫描超时。
要使用最初用于CMBSDK v2.0.x和manateeworks SDK的传统摄像机覆盖,请在初始化ReaderDevice之前,使用Mwoverlay的此属性:
MWOverlay.overlayMode = MWOverlay.OverlayMode.OM_LEGACY;
当使用cmbSDK覆盖:
CMBSDK和传统叠加覆盖都允许您更改缩放和闪存按钮上使用的图像,如果您的图像与名称CMBSDK使用相同。您可以在资源中找到在CMBSDK中使用的图像和名称/必威随行版官网drawable-mdpi和拉布 - HDPI.目录。虽然其他分辨率是可选的,但这两个目录必须包含具有正确名称的图像,以便CMBSDK显示正确的图像。
cmbSDK和遗留的覆盖层都允许您更改检测到条形码时显示的矩形的颜色和宽度。
例子:
MWOverlay.locationLineColor = Color.YELLOW;MWOverlay.locationLineWidth = 6;
康耐视扫描设备用于配置和控制所述设备执行的DataMan控制命令(DMCC)。该装置的每一个功能可以使用这种基于文本的语言来控制。API提供了用于发送DMCC命令到设备的方法。命令都存在用于设置和查询配置属性。
的附录包括完整的DMCC参考相机阅读器。
以下示例显示了发送到设备以进行更高级配置的不同DMCC。
例子
//将扫描方向改为omnidirectional readerDevice.getDataManSystem()。sendCommand("SET DECODER.1D-SYMBOLORIENTATION 0", ScannerActivity.this);//修改实时流预览的扫描超时为10秒readerDevice.getDataManSystem()。sendCommand(“设置解码器。MAX-SCAN-TIMEOUT 10”,ScannerActivity.this);
您还可以调用DMCC查询命令并在onreponsereceivedListener.onResponserEceived()方法。
//获取设备的类型连接readerDevice.getDataManSystem()。sendCommand( “GET DEVICE.NAME”,新OnResponseReceivedListener(){@覆盖公共无效onResponseReceived(DataManSystem dataManSystem,DmccResponse dmccResponse){如果(dmccResponse.getError()!=NULL){//失败Log.e( “DMCC_ERR”,“GET DEVICE.NAME失败”,dmccResponse.getError());}其他{//成功 - 使用下面的结果字段:// INT mResponseId = dmccResponse.getResponseId(); //字符串mPayLoad = dmccResponse.getPayLoad(); //字节[] mBinaryData = dmccResponse.getBinaryData();}});}
CmbSDK包括用于将装置复位到其默认设置的方法。在MX移动终端的情况下,默认设置是所保存的配置。在情况下,内置摄像头,默认设置是在确定的默认附录,这里不启用任何符号。
重置设备,添加:
readerDevice.resetConfig(空);
在使用MX移动终端时,我们可以区分以下三种状态:
您可以使用监视此异步方法完成OnResetConfigListener界面,这是一个可选参数。
public class ScannerActivity extends Activity implements ....OnResetConfigListener……{…@Override public void onResetConfigCompleted(ReaderDevice reader, Throwable error) {if (error != null){//不成功}else{//成功}}
当条形码被成功读取时,onReadResultReceived方法创建并返回ReadResult对象。在单个图像或帧上成功读取多个条形码的情况下,多个ReadResult对象在ReadResult对象
ReadResult类具有描述条形码读取结果的属性:
当扫描结束而没有成功读取时,aReadResult返回古德雷德属性设置为false。
启用要在中填充的图像和imageGraphics属性的步骤ReadResult对象,设置相应的enableImage ()和/或enerialImageGraphics()属性ReaderDevice对象
要访问扫描条形码中的原始字节,可以使用XML属性。这些字节以Base64字符串的形式存储在"full_string"标签下。该示例展示了如何使用XML解析器从XML属性中提取原始字节。
例子
尝试{XmlPullParserFactory工厂= XmlPullParserFactory.newInstance();factory.setNamespaceAware(真);XmlPullParser XPP = factory.newPullParser();字符串标签=“”;//原始字节将被存储在该变量字节[]字节;xpp.setInput(新StringReader(result.getXml()));INT的EventType = xpp.getEventType();而(EVENTTYPE = XmlPullParser.END_DOCUMENT!){如果(EVENTTYPE == XmlPullParser.START_TAG){标签= xpp.getName();}否则如果(EVENTTYPE == XmlPullParser.TEXT && tag.equals( “full_string”)){字符串base64String = xpp.getText();//从这里所述的base64串字节= Base64.decode(base64String,Base64.DEFAULT)字节; break; } else if (eventType == XmlPullParser.END_TAG && tag.equals("full_string")) { tag = ""; break; } eventType = xpp.next(); } } catch (Exception e) { e.printStackTrace(); }
默认情况下,图像和SVG结果是禁用的,这意味着在扫描时,ReadResults不要在相应的属性中包含任何数据。
要启用图像结果,请调用enableImage ()从中的方法ReaderDevice对象:
readerDevice.enableImage(真正的);
要启用SVG结果,请调用enerialImageGraphics()方法ReaderDevice对象:
readerDevice。enableImageGraphics(真正的);
如果设备因电池电量不足或手动断开电缆而断开,则可以通过onConnectionStateChanged ()的方法ReaderDeviceListener接口。
下表列出了使用内置摄像头进行条形码扫描时cmbSDK支持的各种DMCC命令。
获取/设置 |
命令 |
参数) |
描述 |
默认值 | |||
---|---|---|---|---|---|---|---|
获取/设置 |
电池。负责 |
以百分比形式返回设备当前的电池电量。 |
N/A | ||||
嘟 |
播放可听到的“哔”声(音调)。 |
N/A | |||||
获取/设置 |
哔哔的声音。好 |
(0 - 3) (0 - 2) |
设置嘟嘟声的数量(0-3)和嘟嘟声音调/音调(0- 2,低,中,高)。对于内置摄像头,只支持一个单一的哔哔声,没有音高控制。因此,0 1关闭哔哔声,11 1打开哔哔声。 |
11 1(打开蜂鸣器) | |||
获取/设置 | 相机。变焦 | 0-2 | SET命令的可能值为:0-正常(未缩放)、1-级别1的缩放、2-级别2的缩放。此缩放级别在扫描期间使用。扫描结束时,将重置为0。 |
N/A | x | ||
获取/设置 | Camera.zoom% | [100 - max] [100 - max) | 设置/返回1级缩放(默认在Android上的150%,IOS上200%),2级zoom(默认为Android上300%,iOS上的400%)。 注意:需要从SDK启动相机至少一次从SDK开始对最大的缩放(MAX)具有适当的值 |
N/A | x | ||
获取/设置 |
密码大小 |
ON最小最大 |
接受任何长度的Codabar。 |
N/A | X |
||
获取/设置 | CODABAR。QZ-SIZE | 0 - 100 | 静区尺寸单一严格。 | 50 | |||
获取/设置 | CODABAR。验证 | |关闭 | 打开/关闭Codabar条形码的验证。 | 在…上 | X | ||
获取/设置 |
C11。CHKCHAR |
|关闭 |
打开/关闭11码校验位。 |
关 | X |
||
获取/设置 |
C11.CHKCHAR-OPTION |
1 2 |
需要单独的校验和。需要校验和的两倍。 |
1 | X |
||
获取/设置 |
C11.codesize. |
ON最小最大 |
接受任何长度的代码11。 |
N/A | X |
||
获取/设置 | C11.QZ尺寸 | 0 - 100 | 静区尺寸单一严格。 | 50 | |||
获取/设置 | C11.验证 | |关闭 | 打开/关闭代码11条形码的验证。 | 在…上 | X | ||
获取/设置 | c128.qz-size. | 0 - 100 | 静区尺寸单一严格。 | 50 | |||
获取/设置 | C128。验证 | |关闭 | 打开/关闭代码128条形码的验证。 | 在…上 | X | ||
获取/设置 |
C25.Codesize. |
ON最小最大 |
接受任意长度的代码25。 |
N/A | X |
||
获取/设置 | 这件。QZ-SIZE | 0 - 100 | 静区尺寸单一严格。注意,这件。QZ-SIZE和I2O5。QZ-SIZE是相同的摄像头API设置。 | 50 | |||
获取/设置 | 这件。验证 | |关闭 | 打开/关闭码25和交错码2的验证。 | 在…上 | X | ||
获取/设置 |
C39。美国信息交换标准代码 |
|关闭 |
打开/关闭码39扩展ASCII码。 |
关 | |||
获取/设置 |
C39。CODESIZE |
ON最小最大 |
接受任何长度的代码39。 |
N/A | |||
获取/设置 |
C39。CHKCHAR |
|关闭 |
打开/关闭代码39检查数字 |
关 | |||
获取/设置 | C39。QZ-SIZE | 0 - 100 | 静区尺寸单一严格。 | 50 | |||
获取/设置 | C39。验证 | |关闭 | 打开/关闭39码条形码验证。 | 在…上 | X | ||
获取/设置 |
C93.ASCII |
|关闭 |
打开/关闭Code 93扩展ASCII码 |
关 | X |
||
获取/设置 |
C93.Codesize. |
ON最小最大 |
接受任何长度代码93。 |
N/A | |||
获取/设置 | C93。验证 | |关闭 | 打开/关闭代码93条形码的验证。 | 关 | X | ||
获取/设置 | COM.DMCC-HEADER |
0 1 | 设置或获取扩展模式中使用的标题选项。 | 0 | |||
获取/设置 |
COM。DMCC-RESPONSE | 0 1 | DMCC响应格式。1:延长。 |
0:沉默(默认) | |||
配置。默认的 |
重置大多数相机API设置为默认,除了那些注意到不重置(见附录B)。要重置所有设置,使用DEVICE.DEFAULT。 |
N/A | |||||
配置。保存 | 将当前配置保存到非易失性存储器(仅限MX-1XXX)。请注意,当MX为OFF或进入休眠模式时,设备唤醒时,将恢复上次保存的配置。 | N/A | |||||
CONFIG.RESTORE | 从非易失性内存恢复已保存的配置(仅限MX-1XXX)。 | N/A | |||||
获取/设置 |
data.result-type. |
|
指定要返回的结果(多个值的sum): |
1 | |||
获取/设置 |
DataBar.Expanded. |
|关闭 |
打开/关闭数据符扩展符号系统。 |
关 | |||
获取/设置 |
DATABAR。有限的 |
|关闭 |
打开/关闭DataBar Limited符号。 |
在…上 | |||
获取/设置 |
DATABAR。集团 DATABAR。RSS14 |
|关闭 |
打开/关闭DataBar GROUP(在cmbSDK 2.4.1之前称为RSS14)符号。 |
在…上 | X |
||
获取/设置 |
databar.rss14stack. |
|关闭 |
打开/关闭数据库RSS14堆叠符号系统。它从CMBSDK v2.4.1弃用,请使用databar.group。 |
关 | X |
||
获取/设置 | DATABAR。验证 | 在…上 | 打开/关闭Databar条形码验证。 | 在…上 | X | ||
获取/设置 |
解码器1.1D-符号方向 |
0 |
使用全向扫描定向。 |
1 | |||
获取/设置 |
译码器。努力 |
1 - 5 |
设置图像分析/解码的努力水平。缺省值是2。不要使用4-5进行在线扫描。 |
2 | X |
||
获取/设置 |
译码器。MAX-SCAN——超时 |
0-120 |
设置实时流预览超时。当达到超时,解码被暂停;实时流预览将保留在屏幕上。 |
60 | X |
||
得到 | 最大线程数 | 返回设备支持的最大CPU线程数。 | N/A | X | |||
获取/设置 | 译码器。线色 | (0-MAX) | 指定扫描程序在扫描过程中可以使用的最大CPU线程数。 | N/A | X | ||
device.default. |
将设备(包括摄像机API)设置重置为默认值(参见附录B)。 |
N/A | |||||
得到 |
设备。FIRMWARE-VER |
获取设备固件版本。 |
N/A | ||||
得到 |
设备编号 |
返回CoNGEX分配给扫描设备的设备ID。 对于内置相机,SDK返回53。 |
N/A | ||||
获取/设置 |
设备名称 |
返回分配给设备的名称。默认情况下,这是“MX-”加上DEVICE.SERIAL-NUMBER的最后6位数字。 |
|
||||
得到 |
设备。串行-数 |
返回设备的序列号。对于内置相机,SDK分配伪随机数。 |
N/A | ||||
得到 |
设备类型 |
返回由Cognex分配给扫描设备的设备名称。对于内置摄像头,SDK返回“MX-Mobile”。 |
N/A | ||||
获取/设置 |
FOCUS.FOCUSTIME |
0-10 |
设置相机的自动对焦周期(相机应该尝试重新对焦的频率)。 |
3. | |||
获取/设置 |
I2O5。CHKCHAR |
|关闭 |
打开/关闭交错2的5个校验位。 |
关 | |||
获取/设置 |
I2O5。CODESIZE |
ON最小最大 |
接受任何长度交错2的5。 |
N/A | X |
||
获取/设置 | I2O5。QZ-SIZE | 0 - 100 | 静区尺寸单一严格。注意,这件。QZ-SIZE和I2O5。QZ-SIZE是相同的摄像头API设置。 | 50 | X | ||
获取/设置 | I2O5。验证 | |关闭 | 转动验证的5个中的验证,以及Code 25条形码开/关。 | 在…上 | X | ||
获取/设置 |
的形象。格式 |
0 |
扫描器以位图格式返回图像结果。 |
1 (JPEG) | |||
获取/设置 |
画面质量 |
10, 15, 20, ...90 |
指定JPEG图像质量。 |
50 | |||
获取/设置 |
图片尺寸 |
0 |
扫描仪返回全尺寸图像。 |
1(1/4大小) | |||
获取/设置 |
轻型飞机 |
0-1 |
禁用/启用瞄准器(当扫描开始时)。 |
默认基于cameraMode: 0: NoAimer和FrontCamera 1:PassiveAmer和Activeaimer |
|||
获取/设置 | light.aimer-timeout. | 0 - 600 | 艾默秒内暂停。 | N/A | |||
获取/设置 |
光。内部,使 |
|关闭 |
启用/禁用照明(当扫描仪启动时)。 |
关 | |||
获取/设置 |
msi.chkchar. |
|关闭 |
打开/关闭MSI Plessey检查数字。 |
关 | |||
获取/设置 |
msi.chkchar.-OPTION |
0 |
使用mod 10校验和 |
0 |
|
||
获取/设置 |
MSI。CODESIZE |
ON最小最大 |
接受任何长度msi plessey。 |
N/A | X |
||
获取/设置 | MSI.QZ-SIZE | 0 - 100 | 静区尺寸单一严格。 | 50 | |||
获取/设置 | MSI。验证 | |关闭 | 打开/关闭MSI条形码验证。 | 在…上 | X | ||
获取/设置 | QR。微 | |关闭 | 打开/关闭QR Micro Symbology | 关 | |||
获取/设置 |
的象征。AZTECCODE |
|关闭 |
打开/关闭阿兹特克代码符号。 |
关 | |||
获取/设置 |
symbol.codabar. |
|关闭 |
打开/关闭Codabar符号。 |
关 | |||
获取/设置 |
符号.c11 |
|关闭 |
打开/关闭代码11符号系统。 |
关 | X |
||
获取/设置 |
的象征。C128 |
|关闭 |
打开/关闭代码128符号。 |
关 | |||
获取/设置 |
的象征。这件 |
|关闭 |
打开/关闭代码25符号(标准)。 |
关 | |||
获取/设置 |
符号.c39. |
|关闭 |
打开/关闭代码39符号。 |
关 | |||
获取/设置 |
的象征。C93 |
|关闭 |
打开/关闭代码93符号系统。 |
关 | |||
获取/设置 |
SYMBOL.COOP |
|关闭 |
打开/关闭COOP符号(代码25变体)。 |
关 | X |
||
获取/设置 |
SYMBOL.DATAMATRIX |
|关闭 |
打开/关闭数据矩阵符号。 |
关 | |||
获取/设置 |
的象征。DATABAR |
|关闭 |
打开/关闭DataBar符号。也检查DATABAR:GROUP, DATABAR。有限,DATABAR。展开以检查在Databar打开时读取哪些子类型。 |
关 | |||
获取/设置 |
的象征。DOTCODE |
|关闭 |
打开/关闭DotCode符号。 |
关 | |||
获取/设置 |
SYMBOL.IATA |
|关闭 |
打开/关闭IATA符号(代码25变体)。 |
关 | X |
||
获取/设置 |
符号。inverted. |
|关闭 |
打开/关闭反转符号(代码25变体)。 |
关 | X |
||
获取/设置 |
的象征。ITF14 |
|关闭 |
打开/关闭ITF-14符号(代码25变体)。 |
关 | X |
||
获取/设置 |
的象征。UPC-EAN |
|关闭 |
打开/关闭UPC-A、UPC-E、EAN-8和EAN-13符号。 |
关 | |||
获取/设置 |
符号矩阵 |
|关闭 |
打开/关闭矩阵符号(代码25变体)。 |
关 | X |
||
获取/设置 |
的象征。MAXICODE |
|关闭 |
打开/关闭MaxiCode符号。 |
关 | X |
||
获取/设置 |
的象征。MSI |
|关闭 |
打开/关闭MSI Plessey符号。 |
关 | |||
获取/设置 |
的象征。PDF417 |
|关闭 |
打开/关闭PDF417符号。 |
关 | |||
获取/设置 |
的象征。地球 |
|关闭 |
打开/关闭行星符号。 |
关 | |||
获取/设置 |
symbol.postnet. |
|关闭 |
打开/关闭POSTNET符号。 |
关 | |||
获取/设置 |
SYMBOL.4STATE-IMB |
|关闭 |
打开/关闭智能邮件条形码符号系统。 |
关 | |||
获取/设置 |
SYMBOL.4STATE-RMC |
|关闭 |
打开/关闭皇家邮政编码符号。 |
关 | |||
获取/设置 |
符号.qr. |
|关闭 |
打开/关闭QR和MicroQR符号。 |
关 | |||
获取/设置 | telepen.force-numeric. | |关闭 | 开启/关闭数字电话笔符号的读取。 | 关 | X | ||
获取/设置 | TELEPEN。验证 | |关闭 | 打开/关闭Telepen条形码的验证。 | 关 | X | ||
获取/设置 |
触发器。类型 |
0 |
单(不支持) |
2(手动) | |||
获取/设置 |
UPC-EAN。EAN13 |
|关闭 |
打开/关闭EAN-13符号。 |
在…上 | X |
||
获取/设置 |
UPC-EAN.EAN8. |
|关闭 |
打开/关闭EAN-8符号系统。 |
在…上 | X |
||
获取/设置 |
UPC-EAN.UPC-A |
|关闭 |
打开/关闭UPC-A Symbology。 |
在…上 | X |
||
获取/设置 |
UPC-EAN.UPC-E |
|关闭 |
打开/关闭UPC-E符号。 |
在…上 | X |
||
获取/设置 |
UPC-EAN。UPCE1 |
|关闭 |
开启/关闭UPC-E1符号。 |
关 | |||
获取/设置 |
UPC-EAN。补充 |
0 |
关闭UPC补充代码(忽略) |
0 | |||
获取/设置 | UPC-EAN。验证 | |关闭 | 打开/关闭UPC条形码验证。 | 关 | X | ||
获取/设置 | 振动。好 | |关闭 | 设置/获取是否在读取代码时振动(默认为ON) | N/A |