iOS(原iPhone操作系统)是苹果公司专门为其硬件开发的一款移动操作系统。目前,该公司的许多移动设备,包括iPhone、iPad和iPod Touch,都使用的是该操作系统。它是全球第二大最受欢迎的移动操作系统,仅次于Android。
iOS的用户界面基于直接操作,使用多点触控手势。界面控制元素包括滑块、开关和按钮。与操作系统的交互包括手势,例如刷卡,利用,捏,反向压力在iOS操作系统及其多点触控界面的背景下,所有这些功能都有特定的定义。一些应用程序使用内部加速度计来响应设备的晃动(一个常见的结果是undo命令)或在三维旋转(一个常见的结果是在纵向和横向模式之间切换)。苹果公司在iOS系统中融入了完善的辅助功能,使视力和听力有障碍的用户能够正确使用其产品,因此受到了高度赞扬。
iOS的主要版本每年都会发布。目前的版本是iOS 12,于2018年10月8日发布。它适用于iPhone 5S及之后的iPhone机型、第五代iPad、iPad Air和iPad Air 2、iPad Pro、iPad Mini 2及之后的iPad Mini机型,以及第六代iPod Touch。在iOS中,有四个抽象层:核心操作系统层、核心服务层、媒体层和可可触摸层。
Cognex移动条码SDK (cmbSDK)是一个简单但功能强大的工具,用于开发移动条码扫描应用程序。基于康耐视的旗舰DataMan技术和Manatee Works条形码扫描SDK, cmbSDK允许开发人员为整个移动扫描设备范围创建条形码扫描应用程序:从智能手机和平板电脑到MX系列的高性能工业条形码扫描仪。通过遵循一些简单的指导原则,开发人员可以编写能够在任何受支持的MX移动终端或智能手机上工作的应用程序,只需很少或没有条件代码。SDK通过“读取器”连接层抽象设备来实现这一点:一旦应用程序与所需的读取器建立连接,就使用一个单一的、统一的API来配置设备并与设备连接。
SDK提供了两个基本阅读器:一个“MX阅读器”,用于使用MX-1000和MX-1502等设备进行条形码扫描,另一个“摄像头阅读器”,用于使用移动设备的内置摄像头进行条形码扫描。
本文件中描述的软件是在许可下提供的,只能按照该许可条款使用或复制,并包含本页所示的版权声明。除被许可人以外,软件、本文件及其任何副本均不得提供给或以其他方式提供给任何人。本软件的所有权和所有权仍属于康耐视公司或其许可方。康耐视公司不对其软件在非康耐视公司提供的设备上的使用或可靠性承担任何责任。康耐视公司对所述软件、其适销性、非侵权性或其适用于任何特定目的不作任何明示或暗示的保证。
本文件中的信息可随时更改而不另行通知,不应被视为康耐视公司的承诺。康耐视公司不对本文档或相关软件中可能出现的任何错误负责。
除非另有说明,本文示例中使用的公司、名称和数据均为虚构。未经康耐视公司书面许可,本文件的任何部分不得以任何形式或方式(电子或机械)为任何目的复制或传播,或转移到任何其他媒体或语言。
版权所有©2017。Cognex公司。版权所有
康耐视提供的部分硬件和软件可能包含一项或多项美国和外国专利,以及列在康耐视网站上的未决美国和外国专利://m.czl106.com/patents.
以下为康耐视公司注册商标:
Cognex, 2DMAX, Advantage, AlignPlus, Assemblyplus, Check it with Checker, Checker, Cognex Vision for Industry, Cognex VSOC, CVL, DataMan, DisplayInspect, DVT, EasyBuilder, Hotbars, IDMax, In-Sight, Laser Killer, MVS-8000, OmniView, PatFind, PatFlex, PatInspect, PatMax, PatQuick, SensorView, SmartView, SmartAdvisor, SmartLearn, UltraLight, Vision Solutions, VisionPro, VisionView
以下是康耐视公司的商标:
Cognex标志,1DMax, 3D-Locate, 3DMax, BGAII, CheckPoint, Cognex VSoC, CVC-1000, FFD, iLearn, In-Sight(设计徽章与十字线),In-Sight 2000, InspectEdge,检查设计师,MVS, NotchMax, OCRMax, PatMax RedLine,校对,SmartSync, ProfilePlus, SmartDisplay, SmartSystem, SMD4, VisiFlex, Xpand
在此识别的其他产品和公司商标是其各自所有者的商标。
SDK支持Cognex的MX移动终端系列,包括MX-1000和MX-1502设备。您可以在康耐视的官方网站上获得这些型号的详细描述(//m.czl106.com).这些设备关于cmbSDK使用的一些相关特性如下:
MX平台的以下特性结合起来使应用程序开发变得简单。
在向苹果应用商店提交MX-1000启用的应用程序之前,您的应用程序必须添加到康耐视MX-1000 MFi产品计划中。这是应用获得苹果批准的关键步骤。(如果你的应用没有被添加到该计划中,苹果将拒绝它。)
请将以下信息提交给MX1000@cognex.com下载你计划提交到app Store的每个iOS应用。
在提交到app Store之前,你还需要更新应用程序的注释。请按照下面的说明操作:
相关产品计划为:
配件名称:DataMan 9050
产品计划ID: 144826-0004
状态:活动类型:生产过程
生产阶段:
一旦收到此信息,康耐视将把您的应用程序添加到MX-1000产品计划中。当此步骤完成后,您将收到一封电子邮件确认,届时您可以直接向苹果提交应用程序。
MX移动终端通过设备的usb或lightning端口连接到您的设备。这意味着该端口将在应用程序运行时被占用。还有其他的方法来调试你的应用程序,我们将在下面讨论如何通过wifi进行调试。
在iPhone上使用XCode调试:
要求:
如果你用XCode运行你的应用程序,你需要在你的设备上启用“通过网络连接”。要做到这一点,首先打开XCode,从顶部菜单中选择“窗口”,然后选择“设备和模拟器”。在这一点上,请确保您的设备已通过避雷线插入。从左侧的“已连接”设备列表中选择您的设备,并选中“通过网络连接”复选框。
此时,您可以关闭Devices窗口,这样就可以在不使用闪电电缆的情况下运行应用程序。
在iPhone上使用Xamarin或Visual Studio进行调试:
确保你的iPhone已经连接上了避雷线,然后打开Xamarin。IOS项目。通过右键单击项目并选择“选项”进入项目选项。从左侧菜单导航到iOS调试,并选中“通过WiFi调试”复选框。应用程序的启动仍然是通过USB电缆完成的,因此初始启动仍然需要您插入电缆。但一旦启动,你就可以安全地拔下插头,通过WiFi继续调试。
重要的是要认识到智能手机(和平板电脑)作为条形码扫描设备的功能有几个根本的区别。这些差异导致用户体验与专用扫描仪不同,影响了移动条形码扫描应用程序的设计。
这些差异及其对应用程序的一般影响如下:
cmbSDK经过专门设计,使这些差异对应用程序开发人员和用户尽可能透明。通过遵循一些简单的指导方针,可以开发工作和行为相同的应用程序,无论是使用MX-1000移动终端,还是仅使用设备的内置摄像头。
在没有硬件触发的情况下,移动设备必须使用其他方法启动条形码扫描。有三种常用的范例:
cmbSDK支持所有这三种方法,其中任何一种(或多种)都可以在应用程序中使用。
正如前面所讨论的,不同于特定用途的扫描仪,移动设备没有内置瞄准器。条码瞄准通常是通过在移动设备显示屏上提供摄像头的实时预览来实现的:然后用户可以重新定位设备,直到条码出现在视野中并被解码。cmbSDK极大地简化了这项任务,因为它提供了一个内置的预览控件,可以显示全屏、部分屏幕以及纵向或横向。的cmbSDK also supports "passive" aimers: devices that attach to the mobile device or mobile device case that use theLED flash of the device as a light source to project an aiming/targeting pattern. The advantage to these types of aimers isthat an on-screen preview is no longer required (since the mobile device can now project an aimer pattern similar to apurpose-built scanner). One limitation of passive aimers, though, is that since the mobile device flash is being used forthe aimer, using the LED flash for general scanning illumination is not available.
移动设备支持开发纵向、横向或两者之间自动旋转的应用程序。cmbSDK完全支持条码预览的表示和扫描方向的所有三个选项。如前所述,无论应用程序和/或移动设备的朝向如何,大多数条形码都可以通过移动设备扫描。
不过,在某些情况下,使用横向可能是有利的,甚至是必要的。在竖屏模式下,移动相机沿图像的“高度”有较高的分辨率。例如,常用的分辨率是1280x720。当以纵向模式扫描条形码时,这意味着沿水平轴有720像素的数据可用于条形码解码。如果扫描一个特别长的或密集的条形码(例如一个大的PDF417),使用横向在水平扫描线上提供1280像素。当扫描“方形”条形码(如二维码、数据矩阵和MaxiCode)时,方向几乎没有影响。
如今的智能手机和平板电脑具有强大的计算能力。通过多核cpu甚至专用图像处理器,它们为低成本和高效的条形码解码提供了理想的平台。尽管这些设备功能强大,但仍然建议开发人员考虑优化他们的条形码扫描应用程序。虽然SDK已经专门针对移动环境进行了优化,但图像分析和条形码解码仍然是一个CPU密集型活动:由于这些进程必须与操作系统、服务和其他应用程序共享移动设备CPU,因此开发人员应该限制他们的应用程序只使用满足其需求的SDK特性。
应用程序优化包括以下内容:
由于这些原因,当初始化cmbSDK以与移动设备的内置摄像头一起使用时,默认情况下没有启用任何条形码符号:应用程序必须显式启用所需的符号。由于大多数条形码扫描应用程序实际上只需要扫描少量符号,这种行为引导开发人员以一种高效的方式使用SDK。
启用符号是一个非常简单的过程,本文稍后将对此进行解释。
安装iOS cmbSDK的步骤如下:
下载最新版本XCode for iOS开发.
下载康耐视移动条码SDK for iOS。
执行以下步骤设置您的应用程序使用iOS cmbSDK:
打开XCode,开始一个新项目。
* SystemConfiguration.framework * AVFoundation.framework * CoreGraphics.framework * coreremedia .framework * CoreVideo.framework * MediaPlayer.framework * Security.framework * AudioToolbox.framework * libDataManSDK.a
3.去你的项目Info.plist文件,并添加隐私-摄像头使用描述或NSCameraUsageDescription。这是iOS所要求的,用于显示一条消息,解释应用程序对用户设备摄像头的使用情况。
如果您计划使用cmbSDK在智能手机或平板电脑(没有MX移动终端)上进行移动扫描,那么SDK需要安装许可密钥。
没有许可密钥,SDK仍将运行,尽管扫描结果将被混淆(SDK将随机地用星号字符替换扫描结果中的字符)。
与您的康耐视销售代表联系,了解如何获取许可密钥,包括可用于30天评估SDK的试用许可证。
获得许可密钥后,将其作为字符串添加到应用程序的Info中。Plist文件,下键MX_MOBILE_LICENSE.
cmbSDK被设计为为受支持的扫描设备提供高级抽象接口。这不仅包括MX系列移动终端,还包括打算使用移动设备相机作为成像设备的应用程序。与这些设备通信和管理的复杂性被封装在SDK本身中:让应用程序只连接到选择的设备,然后使用它。
应用程序和受支持的条形码扫描设备之间的主要接口是CMBReaderDevice类。该类代表设备本身的抽象层,处理所有通信以及任何必要的硬件管理(例如,智能手机扫描)。
使用cmbSDK的步骤如下:
为你想使用的设备类型(MX阅读器或相机阅读器)初始化一个阅读器设备。
连接阅读器设备。
配置阅读器(如果需要)。
开始扫描。
初始化、连接和配置通常只需要在应用程序中执行一次,以下情况除外:
cmbSDK提供了两个不同的阅读器类初始化器:一个用于使用MX移动终端进行扫描(如MX- 1000或MX-1502),另一个用于使用移动设备的内置摄像头进行扫描(iphone、ipad等)。
初始化用于MX移动终端(如MX-1000或MX-1502)的阅读器设备很容易:只需使用MX设备方法创建阅读器设备(它不需要参数),并设置适当的委托(通常是self):
CMBReaderDevice *readerDevice = [CMBReaderDevice readerOfMXDevice];[readerDevice setDelegate:自我);
MX移动终端的可用性可以在设备打开或关闭时发生变化,或者在闪电电缆连接或断开时发生变化。您可以使用以下CMBReaderDeviceDelegate方法处理这些更改。
- (void)availabilityDidChangeOfReader:(CMBReaderDevice *)reader;
使用移动设备的内置摄像头进行条形码扫描可能比使用MX移动终端更复杂。cmbSDK支持多种配置,以提供最大的灵活性。这包括可选的外部瞄准器/照明支持,以及自定义直播预览的外观的能力。
要使用移动设备的内置摄像头扫描条形码,需要使用readerOfDeviceCameraWithCameraMode静态方法初始化CMBReaderDevice对象。摄像机阅读器在初始化时有几个选项。需要设置以下参数:
* CDMCameraMode * CDMPreviewOption * UIView
的CameraMode参数的类型为cdmcameramoode(定义在CDMDataManSystem.h),它接受以下值之一:
以上所有模式都为读者提供了以下默认设置:
根据选择的模式,设置以下附加选项和行为:
类型的previewOptions参数CDMPreviewOption,定义于CDMDataManSystem.h)用于更改阅读器的默认值或覆盖从选定的CameraMode派生的默认值。多个选项可以在传递参数时通过OR-ing来指定。可用的选项如下:
UIView类型的最后一个参数是可选的,被用作相机预览的容器。如果该参数为空值,将使用全屏预览。
例子:
创建一个没有瞄准器和全屏直播预览的阅读器:
CMBReaderDevice *readerDevice = [CMBReaderDevice readerOfDeviceCameraWithCameraMode: kcdmcameramoamoaimer previewOptions:kCDMPreviewOptionDefaults previewView:nil];readerDevice.delegate = self;
创建一个没有瞄准器,没有缩放按钮,并使用模拟触发器的阅读器:
CMBReaderDevice *readerDevice = [CMBReaderDevice readerOfDeviceCameraWithCameraMode:kCDMCameraModeNoAimer previewOptions:(kCDMPreviewOptionNoZoomBtn | kCDMPreviewOptionHwTrigger) previewView:nil];readerDevice.delegate = self;
初始化阅读器设备并设置一个委托来处理来自阅读器的响应之后,你就准备好使用connectWithCompletion进行连接了:
//确保设备已打开并准备好if (readerDevice. if)available == CMBReaderAvailibilityAvailable){//在readerDevice对象和设备之间创建连接[readerDevice connectWithCompletion:^(NSError *error) {if (readerDevice. availibilityavailable){//在readerDevice对象和设备之间创建连接]connectionState == cmbconnectionstateconnconnected){//连接成功}else {if(错误){//处理连接错误}}}];}
如果一切都做对了,connectionStateDidChangeOfReader你可以在你的Reader Device的connectionState参数中检查连接状态。它应该是cmbconnectionstateconnconnected,这意味着您已经成功地连接到阅读器设备,并且可以开始使用Cognex Mobile Barcode SDK。
连接到扫描设备后,您可能想(或需要)更改其某些设置。cmbSDK提供了一组高级的、设备独立的api,用于设置和检索设备的当前配置。
与初始化阅读器设备的情况一样,使用MX阅读器和用于扫描的相机阅读器之间也有一些区别。这些差异将在下面的小节中详细说明。
MX移动终端系列提供了复杂的设备配置和管理,包括设备本身保存的配置。一般来说,这些设备来自Cognex,预先配置,以提供特殊的开箱即用的体验,大多数符号和功能都可以使用。
当需要自定义重新配置时,通常使用DataMan Setup Tool或DataMan Quick Setup来完成,因为这些工具可用于将保存的配置轻松分发到多个设备,从而大大简化配置管理。
然而,移动应用程序本身配置MX设备仍然是可能的(有时是可取的):
与MX移动终端非常类似,cmbSDK使用一组默认选项,通过移动设备的内置摄像头来读取条形码,从而提供良好的开箱即用体验。然而,有两个重要的区别需要记住:
可以使用Reader Device对象的以下方法启用单个符号:
-(void) setsymbolology:(cmbsymbolology) symbolology enabled:(bool)enabled completion:(void (^)(NSError *error))completionBlock;
此方法中用于符号参数的所有符号都可以在CMBReaderDevice.h中找到。
例子
/*启用QR扫描*/ [readerDevice setsymbolology:CMBSymbologyQR enabled:YES completion:^(NSError *error) {if (!error) {// Success}else{/*不成功可能是当前设备不支持符号,或者readerDevice和MX设备之间的连接有问题*/}}];
同样的方法也可以用来关闭符号:
/*禁用Code 25扫描*/ [readerDevice setsymbolology: cmbsymbolyc25 enabled:NO completion:^(NSError *error) {if (!error) {// Success}else{//不成功}}];
如果您的阅读器设备配备了照明灯(例如led),您可以使用您的阅读器设备对象的以下方法在扫描开始时控制它们是ON还是OFF:
-(void) setLightsON:(bool)on completion:(void (^)(NSError *error))completionBlock;
请记住,并非cmbSDK支持的所有设备和设备模式都允许照明控制。例如,如果使用内置相机在被动瞄准模式,照明是不可用的,因为LED被用于瞄准。
cmbSDK包含一个将设备重置为默认设置的方法。在MX移动终端的情况下,这是默认保存的配置(不是出厂默认值),而在内置摄像头的情况下,这些是在附录B,其中将不启用任何符号。该方法如下:
- (void) resetConfigWithCompletion:(void (^)(NSError *error))completionBlock;
每个Cognex扫描设备都实现DataMan控制命令(DMCC),这是一种配置和控制设备的方法。使用这种基于文本的语言,几乎可以控制设备的每一个功能。API提供了向设备发送DMCC命令的方法。存在用于设置和查询配置属性的命令。
附录A包括完整的DMCC参考使用相机阅读器。其他的DMCC命令
支持的设备(例如MX-1000)包含在该特定设备的文档中。
附录B为相机读取器的配置设置提供与之相关的默认值
DMCC设置。
下面的示例展示了将不同的DMCC命令发送到设备以进行更高级的配置。将扫描方向改为全向:
(自我。dataManSystem sendCommand: @“译码器。1D-SYMBOLORIENTATION 0" withCallback:^(CDMResponse *response){ if (response.status == DMCC_STATUS_NO_ERROR) {...} else {...} }];
修改直播预览扫描超时时间为10秒:
(自我。dataManSystem sendCommand: @“译码器。MAX-SCAN-TIMEOUT10" withCallback:^(CDMResponse *response){ if (response.status == DMCC_STATUS_NO_ERROR) {...} else {...} }];
获取连接设备的类型:
(自我。dataManSystem sendCommand:@"获取设备。类型" withCallback:^(CDMResponse *response){ if (response.status == DMCC_STATUS_NO_ERROR) {NSString *deviceType = response.payload; } else {...} }];
有了正确配置的阅读器,现在就可以扫描条形码了。方法即可完成这一任务startScanning ()方法。接下来会发生什么取决于阅读器设备的类型和它的配置方式,但一般来说:
在下列情况之一时停止扫描:
当条形码被成功解码时(第一种情况),您将使用以下CMBReaderDeviceDelegate方法在阅读器设备的委托中收到一个CMBReadResults数组:
- (void)didReceiveReadResultFromReader:(CMBReaderDevice *)reader results:(CMBReadResults *)readResults;
下面是扫描条形码后简单显示ReadResult的示例:
- (void)didReceiveReadResultFromReader:(CMBReaderDevice *)reader results:(CMBReadResults *)readResults {for (CMBReadResult *readResult in readResults.readResults) {if (readResult.image) {_ivPreview. image。image = readResult.image;} if (readResult.readString) {_lblCode.}text = readResult.readString;}}}
在上面的例子中,_ivPreview是一个UIImageView,用于显示扫描的条形码图像,而_ lblCode是一个UILabel,用于显示来自条形码的结果。也可以使用BOOL fromreadResult.goodRead查询扫描是否成功。
当条形码被成功读取时,一个CMBReadResult对象被didReceiveReadResultFromReader:results:方法创建并返回。在单个图像/帧上成功读取多个条形码的情况下,多个CMBReadResult返回对象。这就是为什么CMBReadResults类的数组CMBReadResult包含所有结果的对象。
的CMBReadResult类具有描述条形码读取结果的属性:
当扫描结束而没有成功读取时,将触发CMBReadResult返回时,goodRead属性设置为false。这通常发生在扫描被取消或超时时。
启用映像和imageGraphics中填充的属性CMBReadResult对象,您必须设置相应的CMBReaderDevice对象的imageResultEnabled和/或SVGResultEnabled属性。
要查看如何使用和并行显示图像和SVG图形的示例,请参考SDK包中提供的示例应用程序。
要从扫描的条形码访问原始字节,可以使用XML属性。字节以Base64字符串的形式存储在"full_string"标记下。下面是如何使用XML解析器从XML属性中提取原始字节的示例。
NSXMLParser *xmlParser = [NSXMLParser.]alloc initWithData result.XML):;xmlParser.delegate = self;if ([xmlParser parse]){//原始字节将存储在这个变量NSData *bytes = [NSData。alloc initWithBase64EncodedString:base64String options:0];}
解析XML并提取Base64字符串是使用NSXMLParser完成的
#pragma NSXMLParserDelegateNSString * base64String;- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {currentElement = elementName;} - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {if ([currentElement isEqualToString:@"full_string"]) {base64String = string;}}
默认情况下,图像和SVG结果是禁用的,这意味着在扫描时,CMBReadResults不会在相应的属性中包含任何数据。
要启用图像结果,使用以下方法从CMBReaderDevice类中设置imageResultEnabled属性:
[readerDevice setImageResultEnabled:是的);
要启用SVG结果,请使用以下方法从CMBReaderDevice类中设置imageResultEnabled属性:
[readerDevice setSVGResultEnabled:是的);
在某些情况下,设备可能会因为电池电量不足或手动断开电缆而断开。的connectionStateDidChangeOfReader回调可以检测到这些情况CMBReaderDeviceDelegate.
从不活动状态返回应用程序后,阅读器设备保持初始化,但没有连接。这意味着不需要重新初始化SDK,但需要重新连接。
一些iOS版本会在恢复应用程序时发送“可用性”通知,说明外部附件可用。您可以在CMBReaderDeviceDelegate的方法中使用它:(void)availabilityDidChangeOfReader:(CMBReaderDevice *)reader。在它中,当阅读器可用时,您可以连接到它。
例如:
—(void)availabilityDidChangeOfReader:(CMBReaderDevice *)reader {if (readerDevice. if)availability == CMBReaderAvailibilityAvailable) {[readerDevice connectWithCompletion:^(NSError *error) {if (error){//处理连接错误}}];}}
一些iOS版本不会在简历中报告可用性变化,所以你必须手动处理。为此,你必须为“UIApplicationDidBecomeActiveNotification”添加一个观察者,并在连接之前做一些检查,所以你不会在读取器已经处于“连接”或“连接”状态时进行连接。例如:
- (void)viewDidLoad {// add observer for app resume [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appBecameActive) name:UIApplicationDidBecomeActiveNotification object:nil];} //处理app resume -(void) appBecameActive {if (readerDevice != nil && readerDevice.}availability == cmbreaderavailbilityavailable && readerDevice。connectionState != CMBConnectionStateConnecting && readerDevice。connectionState != cmbconnectionstateconnconnected) {[readerDevice connectWithCompletion:^(NSError *错误){if(错误){//处理连接错误}}];}}
下表列出了使用内置摄像头进行条码扫描时cmbSDK支持的各种DMCC命令。
获取/设置 |
命令 |
参数(年代) |
描述 |
CameraReader |
---|---|---|---|---|
获取/设置 |
电池。负责 |
返回设备的当前电池电量百分比。 |
||
哔哔的声音 |
播放可听的哔(音)。 |
|||
获取/设置 |
哔哔的声音。好 |
(0 - 3) (0 - 2) |
设置蜂鸣声的数量(0-3)和蜂鸣声音调/音调(0- 2,表示低、中、高)。对于内置摄像头,只支持不带音高控制的单声哔哔。因此,0 1关闭蜂鸣声,11 1打开蜂鸣声。 |
|
获取/设置 |
CODABAR。CODESIZE |
ON min max OFF min max |
接受任何长度的Codabar。 |
X |
获取/设置 |
C11。CHKCHAR |
关| |
打开/关闭代码11检查数字。 |
X |
获取/设置 |
C11。CHKCHAR-OPTION |
1 2 |
需要单个校验和。需要双重校验和。 |
X |
获取/设置 |
C11。CODESIZE |
ON min max OFF min max |
接受任何长度的代码11。 |
X |
获取/设置 |
这件。CODESIZE |
ON min max OFF min max |
接受任何长度的代码25。 |
X |
获取/设置 |
C39。美国信息交换标准代码 |
关| |
打开/关闭Code 39扩展ASCII码。 |
|
获取/设置 |
C39。CODESIZE |
ON min max OFF min max |
接受任何长度的代码39。 |
|
获取/设置 |
C39。CHKCHAR |
关| |
打开/关闭代码39检查数字 |
|
获取/设置 |
C93。美国信息交换标准代码 |
关| |
打开/关闭代码93扩展ASCII |
X |
获取/设置 |
C93。CODESIZE |
ON min max OFF min max |
接受任何长度的代码93。 |
|
配置。默认的 |
将大多数相机API设置重置为默认值,除了那些没有重置的设置(参见附录B)。要重置所有设置,请使用DEVICE.DEFAULT。 |
|||
获取/设置 |
数据。结果类型 |
0 1 2 4 8 |
指定要返回的结果(多个值的和):无 XML数据 |
|
获取/设置 |
DATABAR。扩大 |
关| |
打开/关闭数据扩充符号。 |
|
获取/设置 |
DATABAR。有限的 |
关| |
打开/关闭DataBar Limited符号。 |
|
获取/设置 |
DATABAR。RSS14 |
关| |
打开/关闭DataBar RSS14符号。 |
X |
获取/设置 |
DATABAR。RSS14STACK |
关| |
打开/关闭DataBar RSS14堆叠符号。 |
X |
获取/设置 |
DECODER.1D——SYMBOLORIENTATION |
0 1 2 3 |
采用全向扫描定向。 |
摄像机阅读器的附录A - DMCC
获取/设置 |
命令 |
参数(年代) |
描述 |
|
获取/设置 |
译码器。努力 |
1 - 5 |
设置图像分析/解码的工作级别。默认值为2。不要使用4-5进行在线扫描。 |
X |
获取/设置 |
译码器。MAX-SCAN——超时 |
1 - 120 |
设置直播预览的超时时间。当超时到达时,解码暂停;直播预告将继续显示在屏幕上。 |
X |
设备。默认的 |
重置相机API设置为默认值(参见附录B)。 |
|||
得到 |
设备。FIRMWARE-VER |
获取设备固件版本。 |
||
得到 |
设备。ID |
返回由Cognex分配给扫描设备的设备ID。对于内置摄像头,SDK返回53。 |
||
获取/设置 |
设备。的名字 |
返回分配给设备的名称。默认情况下,这是“MX-”加上DEVICE.SERIAL-NUMBER的后6位。 |
||
得到 |
设备。串行-数 |
返回设备的序列号。对于内置摄像头,SDK分配一个伪随机数。 |
||
得到 |
设备。类型 |
返回由Cognex分配给扫描设备的设备名称。对于内置摄像头,SDK返回“MX-Mobile”。 |
||
获取/设置 |
的焦点。FOCUSTIME |
清廉 |
设置相机的自动对焦周期(相机应该尝试重新对焦的频率)。默认值为3。 |
|
获取/设置 |
I2O5。CHKCHAR |
关| |
交替打开/关闭5个检查数字中的2个。 |
|
获取/设置 |
I205。CODESIZE |
ON min max OFF min max |
接受任意长度的交叉2 / 5。 |
X |
获取/设置 |
的形象。格式 |
0 1 2 |
扫描器返回位图格式的图像结果。扫描仪返回JPEG格式的图像结果。扫描仪返回PNG格式的图像结果。 |
|
获取/设置 |
的形象。质量 |
10、15、20、……90 |
指定JPEG图像质量。 |
|
获取/设置 |
的形象。大小 |
0 1 2 3 |
扫描仪返回完整大小的图像。扫描仪返回1 / 4大小的图像。扫描仪返回1/16大小的图像。扫描仪返回1/62大小的图像。 |
|
获取/设置 |
光。瞄准手 |
0 - 1 |
禁用/启用瞄准器(当扫描仪启动时)。 |
|
获取/设置 |
光。瞄准手-TIMEOUT |
0 - 600 |
瞄准器的超时时间,以秒为单位。 这个值总是被DECODER覆盖。MAX-SCAN——超时。 |
|
获取/设置 |
光。内部,使 |
关| |
启用/禁用照明(当扫描仪启动时)。 |
|
获取/设置 |
MSI。CHKCHAR |
关| |
打开/关闭MSI Plessey检查数字。 |
|
获取/设置 |
MSI。CHKCHAR-OPTION |
0 1 2 3 4 5 |
使用mod 10校验和 |
X |
获取/设置 |
MSI。CODESIZE |
ON min max OFF min max |
接受任何长度的MSI Plessey。 |
X |
获取/设置 |
的象征。AZTECCODE |
关| |
打开/关闭阿兹特克代码符号。 |
|
获取/设置 |
的象征。CODABAR |
关| |
打开/关闭Codabar符号。 |
|
获取/设置 |
的象征。C11 |
关| |
打开/关闭代码11符号。 |
X |
获取/设置 |
的象征。C128 |
关| |
打开/关闭代码128符号。 |
摄像机阅读器的附录A - DMCC
获取/设置 |
命令 |
参数(年代) |
描述 |
|
获取/设置 |
的象征。这件 |
关| |
打开/关闭Code 25符号(标准)。 |
|
获取/设置 |
的象征。C39 |
关| |
打开/关闭代码39符号。 |
|
获取/设置 |
的象征。C93 |
关| |
打开/关闭代码93符号。 |
|
获取/设置 |
的象征。鸡笼 |
关| |
打开/关闭COOP符号(代码25变体)。 |
X |
获取/设置 |
的象征。DATAMATRIX |
关| |
打开/关闭数据矩阵符号。 |
|
获取/设置 |
的象征。DATABAR |
关| |
打开/关闭数据库扩展和有限符号。 |
|
获取/设置 |
的象征。DOTCODE |
关| |
打开/关闭DotCode符号。 |
|
获取/设置 |
的象征。国际航空运输协会 |
关| |
打开/关闭IATA符号(代码25变体)。 |
X |
获取/设置 |
的象征。倒 |
关| |
打开/关闭反向符号(代码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符号。 |
|
获取/设置 |
的象征。地球 |
关| |
打开/关闭PLANET符号。 |
|
获取/设置 |
的象征。POSTNET |
关| |
打开/关闭POSTNET符号。 |
|
获取/设置 |
SYMBOL.4STATE-IMB |
关| |
打开/关闭智能邮件条形码符号。 |
|
获取/设置 |
SYMBOL.4STATE-RMC |
关| |
打开/关闭皇家邮政编码符号。 |
|
获取/设置 |
的象征。QR |
关| |
打开/关闭QR和MicroQR符号。 |
|
获取/设置 |
触发器。类型 |
0 1 2 3 4 5 |
不支持不支持手动(默认)不支持不支持连续 |
|
获取/设置 |
UPC-EAN。EAN13 |
关| |
打开/关闭EAN-13符号。 |
X |
获取/设置 |
UPC-EAN。EAN8 |
关| |
打开/关闭EAN-8符号。 |
X |
获取/设置 |
UPC-EAN。UPC-A |
关| |
打开/关闭UPC-A符号。 |
X |
获取/设置 |
UPC-EAN。UPC-E |
关| |
打开/关闭UPC-E符号。 |
X |
获取/设置 |
UPC-EAN。UPCE1 |
关| |
打开/关闭UPC-E1符号。 |
|
获取/设置 |
UPCE——一个。补充 |
0 1 - 4 |
关闭UPC补充代码。打开UPC补充代码。 |
下表列出了SDK在相机阅读器启动时使用的默认值。
设置 |
默认值 |
只重置设备? |
---|---|---|
哔哔的声音。好 |
1 1(打开哔哔声) |
|
C11。CHKCHAR |
从 |
|
C11。CHKCHAR-OPTION |
1 |
|
C39。美国信息交换标准代码 |
从 |
|
C39。CHKCHAR |
从 |
|
C93。美国信息交换标准代码 |
从 |
|
COM。DMCC-HEADER |
1(包含结果ID) |
Y |
COM。DMCC-RESPONSE |
0(扩展) |
Y |
数据。结果类型 |
1 |
Y |
DECODER.1D-SYMBOLORIENTATION |
1 |
|
译码器。努力 |
2 |
|
译码器。MAX-SCAN-TIMEOUT |
60 |
|
设备。的名字 |
“MX-”+ DEVICE的后六位数字。序列号 |
|
象征学(象征。*) |
关闭(所有符号都被禁用) |
|
符号子类型(组):DATABAR。扩大 UPC-EAN。EAN8UPC-EAN。UPC-AUPC-EAN。UPC-EUPCE——一个。UPCE1 |
分分合合,分分合合 |
|
的焦点。FOCUSTIME |
3. |
|
I2O5。CHKCHAR |
从 |
|
的形象。格式 |
1 (JPEG) |
|
的形象。质量 |
50 |
|
的形象。大小 |
1(1/4码) |
|
光。瞄准手 |
默认基于cameraMode: 0: NoAimer和FrontCamera |
Y |
光。瞄准手-TIMEOUT |
60 |
|
光。INTERNAL-ENABLE |
从 |
附录B -相机阅读器默认值
设置 |
默认值 |
只重置设备? |
最小/最大代码长度 |
4 40 |
|
MSI。CHKCHAR |
从 |
|
MSI。CHKCHAR-OPTION |
0 |
|
触发器。类型 |
2(手动) |
|
UPC-EAN。补充 |
0 |
在安装康耐视产品时,请遵循以下注意事项,以减少人身伤害或设备损坏的风险: