本公开的领域主要涉及光学读码器,尤其是涉及用于调整光学读码器的照明模式的系统和方法。
背景技术:光学代码,例如条形码,本质上是可视化格式的信息的机器可读表示。某些光学代码使用在白基板上的深色油墨,从而在光学代码的扫描或读取后,产生高和低的反射率。(为了本说明书的目的,术语扫描和读取可以被互换使用,从而意味着获得与光学代码关联的数据。同样地,扫描仪和光学读码器可以被互换使用,从而意味着用于获得与光学代码关联的数据的设备。)基于被使用的符号(例如,UPC,Code39,Code128以及PDF417),光学代码可以包括数据字符(或在例如PDF417的情况下是码字)和/或由可以具有不同宽度的特定顺序的条和间距表示的开销字符(overheadcharacter)。光学代码具有广泛的应用。例如,光学代码可以被用于识别一类物体(例如,商品)或独特的项目(例如,专利)。结果,光学代码可以在各种物体上被发现,比如零售商品、公司资产和文件。光学代码被放置在项目上,并在项目到达或销售时被读取,从而帮助跟踪在制造设施中的生产或在商店中的库存量。此外,光学代码可以出现在便携式电子设备的显示器上,例如移动电话、个人数字助理、平板电脑、膝上型计算机或具有电子显示器的其他装置上。例如,客户,如购物者、航空公司乘客或出席体育赛事或剧院事件的人,可能促使光学代码被显示在他们的便携式电子设备上,以便雇员(例如,商户雇员)可以通过光学读码器读取光学代码,从而允许客户兑换优惠券或验证该客户已经购买了用于该事件的票。光学读码器是这样的数据读取器类型,即其用于捕捉光学代码或其它符号或出现在各种表面上的信息,以便读取被编码在光学代码或符号中的信息。一种常用的光学读码器是基于成像的阅读器。基于成像的阅读器通常包括固态图像电路,例如,电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)器件,并且可以使用光传感器(或像素)的一维或二维成像阵列捕捉光学代码的图像而实现。一维CCD阅读器捕捉光学代码的线性横截面,产生模拟波形,其振幅表示光学代码的相对暗度和亮度。二维CCD或CMOS阅读器可以捕捉整个二维图像。虽然当捕捉光学代码的图像时,有些光学读码器依赖环境光,但是许多光学读码器利用照明源照亮光学代码,以尝试改善成像设备生成的图像数据质量。照明源可促进低噪声图像捕捉,并且还可以描绘光学读码器的视场,以便帮助用户瞄准光学读码器,或定位携带光学代码的物体。不过,在某些情况下,由照明源提供的照明强度可能是大量的并且达不到预期目标。附图说明图1示出根据一个实施例的光学读码器的框图。图2示出根据一个实施例的光学读码器读取光学代码的框图。图3示出根据一个实施例的数字信号处理器的框图。图4示出根据一个实施例的光学读码器的示意图。图5示出根据一个实施例的光学读码器的两种照明模式的简化的状态图。图6和图7示出根据各个实施例的照明驱动的波形。图8A和8B示出根据各个实施例的用于照明源的强度控制电路的示意图。图9示出根据一个实施例的光学读码器的四种照明模式的简化的状态图。图10示出根据一个实施例的用于确定是进入低环境睡眠模式还是高环境睡眠模式的方法的流程图。图11和12示出根据各个实施例的照明驱动波形。图13A示出根据一个实施例的用于照亮光学读码器的扫描体积的方法的流程图。图13C和13E示出了与图13B和13D的相应的示例性图像关联的各种示例性直方图。图14示出根据另一个实施例的用于照亮光学读码器的扫描体积的方法的流程图。图15示出根据另一个实施例的用于照亮光学读码器的扫描体积的方法的流程图。图16B、16D和17B示出了与图16A、16C和17A的相应的示例性图像关联的各种示例性的直方图。图18示出根据一个实施例的与单透镜光学读码器关联的景深的焦平面图。图19示出根据一个实施例的与单透镜光学读码器关联的视场的焦平面图。具体实施方式参考前述附图,本节描述了特定实施例及其详细的构造和操作。本文描述的实施例仅仅通过说明的方式阐述,并不作为限制。本领域技术人员将意识到例如鉴于本文所述的教导,其他实施例是可能的,可以对本文所述的实施例做出改变,并且存在构成所述实施例的组件、部件或步骤的等价物。例如,各种类型的数据获取设备,如光学读码器,众所周知包括固定和手持的基于成像的光学读码器和激光扫描器。为了简化和清楚起见,某些实施例的组件或步骤的某些方面未过多地展示细节,鉴于本文所述教导,这些细节对本领域技术人员来说是显而易见的和/或这些细节会混淆实施例的更多有关方面的理解。图1示出了根据一个实施例的光学读码器100的框图。本发明人已经意识到在每种情况下,从光学读码器提供相对亮的照明可能是不必要的或不期望的。实际上,亮的照明可以导致操作员的眼睛疲劳,尤其是当操作员在坐着的时候使用柜台内光学读码器。因此,光学读码器100包括照明源110和照明驱动器或控制器130,光学读码器100优选地包括用于一种或更多操作模式的可编程照明设置。例如,光学读码器100可以包括默认模式,在此模式下,照明源110被设置为相对暗淡的水平,在该水平下,光学读码器100仍然能够读取光学读码器100的扫描体积内的光学代码(例如,接近窗口122)。在光学读码器100检测到扫描体积中的物体后,光学读码器100进入物体检测模式(例如,用于下一个图像帧),其中照明源110被设置到另一个水平。例如,在默认模式中时,照明源110可以被具有大约70微秒的脉冲宽度的一系列脉冲驱动,从而产生具有大约5英寸的景深的扫描体积。当光学读码器100进入物体检测模式时,脉冲宽度可以被增加到大约140微妙,其增加了照明源110的感知强度,并且将景深增加到例如大约8英寸。下面将更详细讨论改变照明设置的其他方法,例如打开其他或附加的照明源(可见的或不可见的,例如红外线的),或增加供应给照明源的驱动电流。与默认模式关联的照明设置优选是可编程的。换句话说,用户可以对光学读码器100编程,以便当光学读码器100处于默认模式中时,照明源110产生期望的光学输出。例如,如果在使用光学读码器100的时候收银员是站立的,则在默认模式中的照明设置可以被设置为相对明亮的水平。另一方面,如果在使用光学读码器100的时候收银员是坐着的,则为了更好的视觉效果,在默认模式中的照明设置可以被设置为相对暗淡的水平。换句话说,如果在使用光学读码器100的时候收银员是靠近照明源110的,则将默认模式设置为相对暗淡的水平会使收银员的眼睛更轻松(例如,引起更少的眼睛疲劳,尤其是对于例如双光学扫描器等柜台内扫描器)。因此,当光学读码器100处于默认模式中时,收银员可以基于使用情况改变光学读码器100的照明设置。同样,与物体检测模式关联的照明设置可以是可编程的。因此,根据一个实施例,光学读码器100可以由用户配置,以便当光学读码器100处于默认模式时,照明源110产生期望的第一光学输出(例如,“关闭”、“暗淡”、“中等”或“明亮”),以及当光学读码器100处于物体检测模式时,产生期望的第二光学输出(例如,“关闭”、“暗淡”、“中等”或“明亮”)。例如,收银员可以对光学读码器100编程,以便当光学读码器100处于默认模式时,照明源110产生“暗淡”的光学输出(例如,相对短的脉冲宽度或仅红光),以及当光学读码器100处于物体检测模式时,产生“明亮”的光学输出(例如,照明源被更长的脉冲宽度驱动或其他照明源被打开)。当在默认模式下操作时,如果标签在近景(接近窗口122)例如距扫描窗口122大约零到五英寸地扫描所述扫描体积,而不是在远景(远离窗口122)例如距扫描窗口122大约五到八英寸地扫描所述扫描体积,则光学读码器100可以读取光学代码。如果光学读码器100在扫描体积中检测到物体,例如光学代码,则光学读码器100进入物体检测模式。当光学读码器100处于物体检测模式中时,光学读码器100的景深更大(与默认模式相比),这是因为当光学读码器100处于物体检测模式中时,照明源被例如更长的脉冲宽度驱动或其他照明源被打开。因此,当光学读码器100操作在物体检测模式中时,光学读码器100能够在扫描体积的整个工作范围内读取光学代码。如果在预定的持续时间内没有检测到物体,例如10个图像帧,则光学读码器100返回默认模式。再次参考图1,说明了根据一个实施例的光学读码器100的各个组件。光学读码器100包括成像器120和照明源110。根据一个实施例,照明源110包括一个或更多个发光二极管(LED)。一个合适的成像器是由例如英国埃塞克斯的e2vTechnologiesPLC提供的型号EV76C560CMOS传感器(http://www.e2v.com)。另一个合适的成像器是由爱达荷州博伊西的Micron科技公司销售的型号MT9V022传感器。为了方便起见,将参考成像器120和照明源110对光学读码器100进行描述,但是应当理解,可以采用其他合适的传感器设备或光源。可选择地提供照明驱动器或控制器130。照明驱动器130经配置施加信号到照明源110,以便例如在期望的时间选通照明源110或在一段时间内持续照亮照明源110。根据一个实施例,照明驱动器130用具有给定脉冲宽度的一系列照明脉冲驱动照明源(请参见例如,图6、图7、图11和图12)。一般来说,增加脉冲宽度通过增加在照明脉冲周期期间照明源110处于打开状态的时间百分率(即,通过增加照明波形的占空比)而增加感知的照明强度。成像器120和照明驱动器130连接到控制器140,所述控制器140可以是例如处理器、微处理器、控制器、微控制器或类似器件。所述连接可以通过总线150或其他通信机构,例如串联、并联或其他类型的直接连接。控制器140通常控制和协调其所连接的其他设备的操作,例如成像器120、照明驱动器130以及“良好读取”驱动器160中的一个或更多个。“良好读取”驱动器160被可选地包括以驱动呼叫器162(或蜂鸣器、扬声器或其他声音指示器),以便当光学代码被成功读出时,产生听得见的“嘟嘟”声或其他指示。此外,或者可替换地,当代码已经被成功读出时,“良好读取”驱动器160驱动LED164或其他视觉指示器。其他设备或子系统,例如收银机或电子秤,也可以被连接到控制器140。而且,控制器140和/或总线150可以与其他控制器或计算机接合,例如收银机系统或退房终端。光学读码器100还包括存储器170,其可以利用一个或更多标准存储器器件实施。存储器器件可以包括,例如,RAM172、ROM174以及EEPROM器件,并且还可以包括磁性或光学存储设备,如硬盘驱动器、闪存、CD-ROM驱动器和DVD-ROM驱动器。光学读码器100还可以包括被耦接到内部存储器例如硬盘驱动器182的接口180。此外或可替换地,接口180可以被耦接到闪存、磁性软盘驱动器、光盘驱动器或其他存储器或驱动器,并且可以配置为外部驱动器实施方式,如基于USB、IEEE1194或ExpressCard连接。根据一个实施例,任意数量的程序模块被存储在驱动器(例如,驱动器182)和ROM174中,所述程序模块包括操作系统(OS)184、一个或多个应用程序或模块186(例如实施本文所述方法的指令)和数据188。程序模块的全部或部分还可以被缓存在RAM172中。任意合适的操作系统184可以被采用。程序模块186中的一个可以包括实施用于照明本文所述的光学读码器的扫描体积的方法的指令的集合。例如,程序模块186中的一个可以包括实施在图13A中示出的方法1300、图14中示出的方法1400以及在图15中示出的方法1500的指令的集合。数据188可以包括一个或多个配置设定或参数,例如与默认模式、物体检测模式或两者相关联的一个或更多个照明设定。数据188还可以包括来自成像器120的图像数据和被解码的光学代码数据。光学读码器100可以包括通过总线150彼此接合的若干其他组件,包括显示控制器和显示设备、输入控制器以及网络接口。显示控制器和显示设备可以被提供以展示数据、菜单和提示,并且除此以外,通过一个或更多显示设备与用户沟通,所述显示设备例如透射或反射型液晶显示器(LCD)、阴极射线管(CRT)显示器或其他合适的显示器。例如,正如将在下面更详细描述的,显示控制器和显示设备可以经配置显示允许用户选择一个或更多个照明设定的导航菜单系统或图形用户界面(GUI)。输入控制器可以经配置接收来自一个或更多输入设备例如键盘、定点设备或其他有线/无线输入设备的用户输入,所述输入设备允许用户例如选择一个或更多个照明设定,或以其他方式配置光学读码器100。其他的输入设备可以被包括,例如麦克风、触摸屏、触摸板以及跟踪球。虽然输入设备可以被集成到光学读码器100中并通过输入控制器耦接到处理器140,但输入设备还可以通过其他接口连接,例如通过包括一个或多个数据接口、总线接口、有线或无线网络适配器或用于发送和接收数据的调制解调器的连接器连接。因此,输入控制器可以包括硬件、软件和固件中的一种或更多种以实施一个或更多协议,例如与相应的层一起的堆栈协议。因此,连接器可以发挥串行端口(例如,RS232)、通用串行总线(USB)端口以及IR接口中的一个或更多个的作用。输入控制器还可以支持各种有线、无线、光学和其他通信标准。网络接口可以选择性地被提供以与一个或更多主机或其他设备(例如,计算机、销售点终端、销售点的计算机系统或收银机)通信。例如,由光学读码器100收集或解码的数据可以被传递给主计算机。根据一个实施例,网络接口包括通用的接口驱动器专用集成电路(UIDA)。UIDA的进一步细节可以在美国专利No.6877663中发现,其全部内容合并于此以供参考。网络接口可以促进与其他设备在短距离(例如,蓝牙TM)或几乎无限的距离(例如,互联网)上的有线或无线通信。在有线连接的情况下,可以利用任何协议提供数据总线,例如IEEE802.3(以太网)、高级技术附件(ATA)、个人计算机存储卡国际协会(ExpressCard)和USB。无线连接可以使用任何无线协议以低或高功率电磁波来发射数据,例如使用蓝牙TM、IEEE802.11a/b/g/n(或其他WiFi标准)、红外数据协会(IrDa)和射频识别(RFID)。光学读码器100还包括一个或更多电源190,其通过电源连接向光学读码器100的各个组件提供电力。根据其他实施例的光学读码器可以具有比所有这些组件更少的组件,可以包括其他组件,或两种情况兼具。例如,光学读码器可以包括多窗口扫描器,例如有时被称为双光学扫描器的两个窗口扫描器,所述两个窗口扫描器包括被布置在大致水平面上的下部窗口和被布置在大致垂直平面中的上部窗口,所述下部和上部窗口具有试图通过所述窗口读取被编码的符号的一个或更多个光学读码器。所述一个或更多个光学读码器可以包括一个或多个激光扫描器(例如,通过使激光点扫描光学代码而获得光学代码信息的飞点激光扫描器)或成像阅读器。光学读码器还可以包括便携式扫描器,例如手持式扫描器。此外,光学读码器可以与射频识别(RFID)阅读器或磁条阅读器相组合。根据第一实施例,光学读码器100包括柜台上扫描器,例如Magellan1100i柜台上呈现的定向(onmnidirectional)条形码阅读器或Magellan3200VSi柜台上垂直呈现的扫描器,这两者由俄勒冈州尤金的DatalogicADC公司制造。根据第二实施例,光学读码器100包括柜台内扫描器,例如Magellan3300HSi柜台内条形码阅读器,其由俄勒冈州尤金的DatalogicADC公司制造。图2示出根据一个实施例的读取来自产品或物体210的光学代码的光学读码器200的框图。光学读码器200类似于光学读码器100,不同的是,光学读码器200还包括数字信号处理器(DSP)220和透镜组件230。在图2中,为了简明起见,多个组件,例如控制器140,未被示出。DSP220和照明驱动器130通过总线150或其他通信机构连接到控制器150,例如直接连接。物体210通常包括光学代码,例如条形码212(PDF417)和条形码214(代码128)。照明源110可以包括任何合适的光源,例如LED、闪光灯闪光、白炽灯或荧光灯或卤素灯泡。透镜组件230可以包括用于将光聚焦到成像器120上的一个或更多透镜。例如,透镜组件230可以包括单个光学元件或可以包括带有公共轴的光学元件的阵列。透镜组件230还可以包括耦接到控制器140以控制光学变焦量的变焦透镜。成像器120形成物体210的电子图像。成像器120可以包括用于将各种波长的光学图像转换成电信号的范围广泛的图像感测设备。所述图像可以是由大约380nm到750nm范围内的波长组成的可见光图像,或者其可以包含在可见光范围之外(例如,红外光)的电磁光谱的波长或主要由在可见光范围之外的电磁光谱的波长组成。例如,成像器120可以是电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)成像器,这两者形成像素的一维或二维阵列,其共同构成图像的电子表示。每个像素位置存储表示图像在该位置处的光强度的数据。针对每个像素的光强度数据可以表示彩色(例如,红-绿-蓝)或单色的强度(例如,灰度)。在成像器120已经被暴露给由物体210反射的光后,来自全部像素或一部分像素的数据可以可选择的方式(其可以是逐行、逐列、或其他一些方式)被顺序读出。在被发送到DSP220之前,利用模拟数字转换器电路,像素强度数据可以任选地转换为数字格式。DSP220可以是例如真正的DSP架构,例如来自马萨诸塞州的诺伍德的AnalogDevices(模拟器件)公司的Blackfin处理器系列,或者是微控制器,例如来自英国剑桥的ARM有限公司的高速ARM处理器系列。DSP220以某种方式接合到成像器120,以便从成像器读取图像数据。简而言之,DSP220处理图像数据,以便尝试对已经被聚焦到成像器上的可读条形码图像进行解码。DSP220可以调节从成像器120接收的数据,以及可以生成主要识别对应于发光面积以及对应于黑暗面积的图像区域的输出。例如,根据若干技术中的任何技术,DSP220可以设定阈值,以便条形码的条形物或相对较暗的区域或其他目标被报告为黑暗的,而条形物或较暗的区域之间的空间或相对较亮的区域被报告为亮的。根据一个实施例,成像器120和DSP220可以被包含在相同的集成电路中。根据另一实施例,DSP220的功能可以由控制器140(图1)或能够执行指令的一个或更多其他逻辑机器实施。DSP220可以附加地或可替换地执行或促进其他功能,例如记录图像数据的帧,供稍后分析或测试。图像处理和解码的额外细节被描述如下。图3示出了根据一个实施例的DSP220的框图。优选地,只有对应于一个或更多子区域的由成像器120捕捉的图像数据的选择部分(例如,每第N行)或图像数据的子区域被存储和处理。可选地,所述选择部分或子区域可以被存储在存储器中,例如存储器170或182中。根据另一个实施例,由成像器120捕捉的全部图像数据可以被用于搜索和解码条形码(例如,利用任何合适的二维解码算法)。DSP220可以可选地包括或实施子区域或虚拟扫描线提取模块310,以便读取或集合来自成像器120的以相对于彼此的任意角度或以其他期望的扫描模式沿横跨图像的一个或更多线或其他定义的路径放置的样本或像素。子区域提取模块310可以定义和映射子区域于光栅图案上,从而允许落在子区域上的光栅的像素被识别和处理为可解码的数据,并且可以被存储供以后处理。仅存储对应于子区域的图像数据的选择部分降低了需要被存储和处理的数据总量。额外的虚拟扫描线处理技术可以被实施,例如在美国专利No.6142376中描述的虚拟扫描线处理技术,其全部内容合并于此以供参考。在某些实施例中,提取模块310可以被省略,例如当二维解码算法被使用时。边缘检测模块320使用任何合适的边缘检测技术识别被提取数据中的边缘过渡位置。例如,在物体210的图像已经被成像器120捕捉后,图像可以由特定数量的像素表示,其中的每个像素由特定值表示。对于灰度图像,其中的每个像素由8位表示,像素可以具有0到255之间的各种灰度的从0(黑色)到255(白色)范围内的值。虽然所述图像可以是灰度图像,但其还可以是彩色图像或黑白图像。此外,虽然每个像素可以由8位表示,但是每个像素可以由任何数量的位表示(例如10位或12位)。由于图像中的边缘通常具有较强的强度对比,所以强度从一个像素到下一个像素的增加(或减少)表示边缘。因此,许多边缘检测技术涉及计算像素值中的强度变化的导数(例如,第一像素与相邻像素或不止一个相邻像素之间的强度变化)。至于一阶导数,边缘过渡可以发生在本地的最大值或最小值。关于二阶导数,边缘发生在过零点。因此,边缘可以通过利用近似一阶或二阶导数的内核对图像数据进行卷积而被定位。基于边缘位置,一个或更多解码器330(例如,低级解码器,高级解码器或其任意组合)可以将边缘的序列和边缘之间的间距转换为主机350可用的数据。例如,低级解码器可以将边缘和边缘之间的间距的序列转换为条形码元素的集合,例如开始图案、停止图案以及码字,而高级解码器可以将条形码元素转换为被解码的字符,其可以是文字数字的。解码器的具体性质根据被用于对数据编码的特定符号而改变。例如,在PDF417符号表示法中,数据通过将数据转换为码字(即,高级编码)并且用具有条形物和间距的特定序列表示码字(即,低级编码)而被编码。因此,在PDF417符号表示法中,数据可以通过将条形物和间距的序列转换为码字(即,低级解码)以及将码字转换为数据(即,高级解码)而被解码。因此,在边缘检测模块320识别由成像器120捕捉的数据中的边缘后,边缘过渡的相对位置可以通过低级解码器被转换回码字,并且所述码字可以通过高级解码器被转换为主机350可用的数据。DSP220可以包括一组解码器330,以用于光学读码器200经配置要读取的每个符号。解码器330还可以将光学代码的部分区段组合以利用已知为缝合(stitching)的处理形成表示完整光学代码的数据,其进一步的细节可以在美国专利No.5493108中发现,其全部内容合并于此以供参考。DSP220可以包括后处理模块340,以在将数据发送到主机350之前进一步处理来自一个或更多解码器330的输出。例如,后处理模块340可以包括用于放大一个或更多空间频率的放大模块、滤波模块和/或计时器模块。计时器模块可以被用于指示何时停止尝试发现字符。例如,为了最大化吞吐量,计时器模块可以开始测量在某些情况下的时间间隔,例如,在开始解码来自图像帧的数据,或检测图像帧内潜在的光学代码的情况下,并且边缘检测模块320和/或解码器330可以在特定时间段后或在特定数量的数据帧已经被捕捉后,停止寻找字符。换句话说,计时器模块防止边缘检测模块以及解码器模块花费太多时间尝试对不可读或不可解码(或至少不容易读取或解码)或已经被解码的数据进行解码。根据一个实施例,光学读码器200将被解码的光学代码数据传送到主机350或其他设备(例如,计算机、销售点终端、销售点计算机系统或收银机)。所述传送可以点到点方式被执行,或可以在有线或无线网络上广播。主机350(或其他设备)可以通过一个或更多显示设备展示数据、提示符以及除此以外与用户通信。例如,主机350(或其他设备)可以通过显示器向用户展示被解码的数据,并且可以包括例如对应于被扫描的光学代码的物体类型(例如,产品类型)的数据以及与物体类型关联的数据(例如,产品价格)。与物体类型关联的数据可以被编码在光学代码中,或基于所述物体类型从本地或远程数据库存取。通过另一个示例的方式,主机350(或其他设备)可以促使被解码的数据被记录在有形介质上。例如,主机350(或其他设备)可以指示打印机打印物体类型和对应于物体类型的数据(例如,在收据上打印产品类型和关联的价格)。光学读码器200还可以在存储器170、存储器182或存储器170和182两者中存储被解码的光学代码数据。例如,如果光学读码器200以便携模式操作或主机350是不可用的,则被解码的数据可以被光学读码器200缓存,以供稍后以分批模式传送。此外,光学读码器200可以例如通过发出蜂鸣声和/或打开通常与光学读码器关联的LED而确认光学代码数据已被成功解码。现参考图4和5,将根据一个实施例说明光学读码器400的各种照明模式。在图4中示出的光学读码器400类似或等同于光学读码器100和光学读码器200中的一个或更多。为了简便起见,各个组件,例如存储器170未被示出或描述。光学读码器400具有带有前窗口122的外壳410,以及用于照明在窗口122前面的扫描体积420的一个或更多照明源110。从概念上讲,扫描体积420包括在窗口122前面的一部分空间,在该部分空间中,光学代码可以通过光学读码器400读取(例如,被检测和解码)。换句话说,扫描体积420可以被称为体积,在该体积内,具有相对高的成功扫描/读取的可能性。在控制器140指示成像器120捕捉或获取扫描体积420的图像后,扫描体积420景深的图像被第一镜面430向下反射到第二镜面432,侧面发射到第三镜面434,接着向下反射,其通过聚焦光学器件440(例如,透镜组件230)聚焦到成像阵列或成像器120上。示出的成像器120被安装在印刷电路板450上,其中所述印刷电路板被布置在阅读器外壳410的底部上。优选地,光学读码器400包括控制器140、DSP220或者用于控制成像器120的操作的控制器140和DSP220两者(DSP220也可以被安装在PCB450上)、照明源110以及其他阅读器组件。如图4所示,照明源110可以被安装在外壳410内,或可以被安装在外壳410的外部,例如在外壳410的外表面上或远离光学读码器400定位。例如,照明源110可以被安装到单独的台面或收银台的另一部分,并被定位为距离光学读码器400一定距离。图5示出了根据一个实施例的光学读码器400的两种照明模式的简化的状态图500。特别地,状态图500示出了物体检测模式510和默认模式520。当光学读码器400以默认模式520操作时,照明源110产生至少部分定义光学读码器400的第一景深的第一光学输出。当光学读码器400以物体检测模式510操作时,照明源110产生第二光学输出,其优选地将光学读码器400的景深从第一景深增大到大于第一景深的第二景深。在光学读码器400被打开后或光学读码器400被复位后(例如,用户按下光学读码器400上的复位按钮,或光学读码器400通过软件开始重新启动),光学读码器400以物体检测模式510操作,直到默认触发使得光学读码器400以默认模式520操作。默认触发可以是基于物体的,基于时间的,或基于物体和时间的。例如,默认触发可以包括在扫描体积420内不存在物体。换句话说,如果物体不在扫描体积内或光学读码器400未能在扫描体积内检测到物体,则光学读码器400可以从物体检测模式510转变为默认模式520。通过另一个示例的方式,默认触发可以由预定的时间段中扫描体积420内不存在物体而产生(或在预定的持续时间中无法在扫描体积中检测到的物体),例如在预定数量的图像帧或预定的时间段内。在光学读码器400转变到默认模式520后,光学读码器400以默认模式520操作,直到物体触发促使光学读码器400转变到物体检测模式510。所述物体触发可以是基于物体的、基于时间的或基于物体和时间两者的。例如,物体触发可以包括扫描体积420内物体的存在或在扫描体积420中物体的检测。换句话说,如果物体在扫描体积内(或光学读码器400在扫描体积420中检测到物体),则光学读码器400可以从默认模式520转变为物体检测模式510。通过另一个示例的方式,物体触发可以由预定持续时间中的扫描体积420内物体的存在而产生,例如在预定数量的图像帧或预定的时间段内。在光学读码器400转变到物体检测模式510后,光学读码器400以物体检测模式510操作,直到默认触发促使光学读码器400再次转变到默认模式520。当光学读码器400以物体检测模式510或默认模式520操作时,照明源110的状态或模式可以若干方式被设定,并可以取决于使用的照明类型。例如,当光学读码器400在物体检测模式510和默认模式520之间切换时,改变照明源110的光学输出可以包括改变驱动波形的脉冲宽度、改变用于驱动照明源110的电流量以及改变通过照明源110投射到扫描体积420中的光量中的一个或更多个。当光学读码器400在物体检测模式510和默认模式520之间切换时,改变照明源110的光学输出的各个示例将参考图6、7和8A描述。图6示出了根据一个实施例的用于驱动照明源110的照明驱动波形600和620。例如,根据一个实施例,照明源包括经配置用一系列照明脉冲照明扫描体积420的一个或更多个LED,其中每个照明脉冲均具有脉冲宽度。为了生成照明脉冲,照明驱动器(例如,照明驱动器130)用包括一系列电脉冲的波形驱动照明源110。参考图6,当光学读码器400以默认模式520操作时,照明驱动器130(图1)用照明驱动波形600驱动照明源110,并且当光学读码器400以物体检测模式510操作时,照明驱动器130用照明驱动波形620驱动照明源110。照明驱动波形600包括电脉冲602、604、606、608和610,其中的每个具有以预定频率614生成的固定脉冲宽度612。与此类似,照明驱动波形620包括电脉冲622、624、626、628和630,其中的每个具有以预定周期(频率)634生成的固定脉冲宽度632。每个脉冲的高度与驱动电流相对应(例如,LED驱动电流)。在电脉冲602-610和622-630中的每个电脉冲期间,照明源110均被打开,并且在电脉冲602-610与622-630中的每个之间,照明源110被关闭。当光学读码器400从物体检测模式510(即,波形620)转变到默认模式520(即,波形600)时,由于降低了照明源110被打开的时间的百分比,照明源110生成的照明强度减少(即,通过减少照明波形的占空比)。相反,当光学读码器400从默认模式520(即,波形600)转变到物体检测模式510(即,波形620)时,由于增加了照明源110被打开的时间的百分比,照明源110生成的照明强度增加(即,通过增大照明波形的占空比)。所述增加由照明源110生成的照明强度增加了光学读码器400的景深,并且所述减少由照明源110生成的照明强度减少了光学读码器400的景深。例如,如果波形600的电脉冲602-610具有在频率为60赫兹(Hz)处生成的70微妙的脉冲宽度,则当以默认模式520操作时,光学读码器400可以具有大约5英寸的景深。当光学读码器400转变到物体检测模式510时,假设波形620的电脉冲622-630具有在频率为60Hz处生成的140微妙的脉冲宽度,则景深可以增加到大约8英寸。根据特定实施例,波形600和620的脉冲宽度、频率或脉冲宽度和频率是可编程的。此外,根据特定实施例,波形600和620的脉冲宽度、频率或脉冲宽度和频率可以从一个脉冲到另一个脉冲改变。根据一个实施例,用照明驱动波形600和620驱动的照明源110包括一个或更多LED,其经配置用具有在大约620nm到大约750nm的波长带内的波长的光(在本文中,被称为红光)照明扫描体积420,并且优选地大约为632nm。根据另一个实施例,用照明驱动波形600和620驱动的照明源110包括一个或更多LED,其经配置用具有在大约380nm到大约750nm的波长带内的波长的光(在本文中,被称为白光)照明扫描体积420。根据另一个实施例,用照明驱动波形600和620驱动的照明源110包括一个或更多LED,其经配置用具有在大约750nm到大约300μm的波长带内的波长的光(在本文中,被称为红外光)照明扫描体积420,并且优选地大约为850nm。图7示出了根据另一个实施例的被用于驱动照明源110的照明驱动波形700和720。在参考图7描述的实施例中,照明源110包括一个或更多红外LED和一个或更多红光LED。可替换地,照明源110包括一个或更多红外LED和一个或更多白光LED。当光学读码器400以默认模式520操作时,红外LED保持关闭,而红光LED、白光LED或红光和白光LED两者均照明扫描体积420。当光学读码器400转变到物体检测模式510时,红外LED连同红光和/或白光LED一起被打开。换句话说,当光学读码器400以默认模式520操作时,照明驱动器130用照明驱动波形700驱动红光和/或白光LED(但不驱动红外LED)。当光学读码器400转变到物体检测模式510时,照明驱动器130用照明驱动波形720驱动红外LED和红光/白光LED两者。在可替换的实施例中,红外LED和红光/白光LED被具有不同脉冲宽度和可能的不同频率的照明驱动波形驱动(例如,红外LED可以用具有100%占空比的波形驱动,而红光和/或白光LED用照明驱动波形720驱动)。照明驱动波形700包括电脉冲702、704、706、708和710,其中的每个具有以预定频率714生成的固定脉冲宽度712。与此类似,照明驱动波形720包括电脉冲722、724、726、728和730,其中的每个具有以预定频率734生成的固定脉冲宽度732。每个脉冲的高度与驱动电流相对应(例如,LED驱动电流)。打开红外LED增加了光学读码器400的景深,而关闭红外LED减少了光学读码器400的景深。例如,如果波形700的电脉冲702-710(其驱动红光和/或白光LED)具有在60Hz的频率下生成的140微妙的脉冲宽度,则当以默认模式520操作时,光学读码器400可以具有大约4英寸的景深。当光学读码器400转变到物体检测模式510并打开红外LED时,景深可以增加到大约6英寸至大约8英寸。换句话说,即使波形720的电脉冲722-730具有类似或等同于波形700的脉冲宽度和频率(例如,在60Hz的频率下产生的140微秒的脉冲宽度),通过添加红外光照明,光学读码器400的景深被增加。根据特定的实施例,波形700和720的脉冲宽度、频率或脉冲宽度和频率是可编程的。此外,波形700和720的脉冲宽度、频率或脉冲宽度和频率可以被控制为从一个脉冲到另一个脉冲改变。优选地,红外LED经配置用红外光照明扫描体积420。红光LED经配置用红光照明扫描体积420。白光LED经配置用白光照明扫描体积420。图8A是根据一个实施例的用于照明源110的强度控制电路800的示意性框图。当光学读码器400在物体检测模式510与默认模式520之间转变时,代替或除了改变驱动波形的脉冲宽度,在参考图8A描述的实施例中,用于驱动照明源110的电流量被增加或减少。增加驱动电流量增加了光学读码器400的景深,而减少驱动电流量减少了光学读码器400的景深。当光学读码器400在物体检测模式510与默认模式520之间转变时,驱动波形的脉冲宽度和用于驱动照明源110的电流量两者可以被设定在给定的等级。强度控制电路800包括控制供应给照明源110的电流量的可编程电流源810。优选地,可编程电流源810与控制器140(例如,通过总线150)通信,以便当光学读码器400在物体检测模式510与默认模式520之间转变时,控制器140可以调节照明源110的光学输出。可编程电流源810可以若干不同方式实施。例如,可编程电流源810可以包括彼此并联连接的多个电阻器,所述电阻器经配置被切换到所述电路中或切换离开所述电路(例如,通过晶体管,所述晶体管的栅极可以耦合到控制器140),从而改变照明源110与地之间的总电阻。通过改变所述电阻,驱动照明源110的总电流也改变。因此,通过将所述电阻器切换到所述电路中以及切换离开所述电路,控制器140可以增加或减少由照明源110生成的照明强度。可编程电流源810的其他实施例可以由技术人员实施。图8B示出了根据一个实施例的用于照明源825、826、827和828的强度控制电路820的示意性框图。照明源825-828可以类似或等同于照明源110。控制器140(图1)可以被耦合到驱动电路820的输入端,以便当光学读码器400在物体检测模式510与默认模式520之间转变时,控制器140可以调节照明源825-828的光学输出。如图8B所示,电阻器839(例如,100千欧的电阻器)被连接在驱动电路820的输入端和地线之间。电容器838(例如,0.047μF的电容器)和电阻器838(例如,22.1千欧的电阻器)被串联连接在驱动电路820的输入端和运算放大器比较器831的同相输入端之间。电容器835(例如,330pF的电容器)和电阻器834(例如,10千欧的电阻器)被并联连接在比较器831的同相输入端和地线之间。比较器831的反相输入端通过电阻器836(例如,10千欧的电阻器)连接到电压源(例如,5伏的电压源)。比较器831的输出端被连接到晶体管830的基极(例如,BJTNPN型晶体管)。电阻器833(例如,100欧姆的电阻器)被连接在比较器831的反相输入端和晶体管830的发射极之间。电阻器832(例如,1欧姆的电阻器)被连接在晶体管830的发射极和地线之间,以及电容器829(例如,470pF的电容器)被连接在晶体管830的集电极和地线之间。照明源825-828被连接在电压源(Vcc)和晶体管830的集电极之间。电容器821(例如,220μF的极化电容器)、822(例如,220μF的极化电容器)、823(例如,1μF的极化电容器)和824(例如,150pF的电容器)被连接在电压源(Vcc)和地线之间。优选地,电阻器834和837中的一个或更多包括可编程电阻器,以便提供给照明源825-828的驱动电流可以被控制器140(图1)编程和改变。例如,一个合适的可编程电阻器是马萨诸塞州的诺伍德的AnalogDevices(模拟器件)公司提供的型号为AD5246的128位的I2C兼容数字电阻器。因此,如参考图6、7和8A所述,当光学读码器400在物体检测模式510和默认模式520之间切换时,改变照明源110的光学输出可以包括下列操作中的一个或更多:改变驱动波形的脉冲宽度、改变用于驱动照明源110的电流量、以及改变通过照明源110投射到扫描体积420中的红外光的量。再次参考图5,根据一个实施例,所述默认触发包括在扫描体积420内不存在物体(或在扫描体积420内无法检测到物体),并且所述物体触发包括在扫描体积420内存在物体(或检测到扫描体积420内的物体)。可以若干方式确定所述物体在扫描体积420内的不存在或存在。根据一个实施例,物体的不存在或存在通过将图像的亮度和预定的阈值比较而被确定。将图像的亮度和预定阈值比较以确定物体是否在扫描体积420中的各个示例将参考图13A-15更详细地描述。根据另一个实施例,通过处理与用于对应于光学代码的可解码数据的扫描体积420关联的图像数据而确定物体的不存在或存在。换句话说,如果不存在对应于光学代码的可解码数据,则可以假设没有物体在扫描体积420内。将参考图13A和图14更详细地描述针对相应于光学代码的可解码数据的用以确定在扫描体积420内是否存在物体的搜索的各种示例。根据又一个实施例,通过比较一个图像帧与另一个图像帧(例如,下一个连续的图像帧)以确定是否存在表示物体在扫描体积420内的不存在或存在的任何变化(例如,物体运动),从而确定所述物体的不存在或存在。将参考图13A和图14更详细描述将一个图像帧与另一个图像帧比较以确定物体是否在扫描体积420内的各个示例。根据又一个实施例,不同的设备(例如,不同于成像器的分离的设备),例如运动检测器或测距仪,被用来确定物体在扫描体积420内的存在或不存在。例如,运动检测器可以包括运动传感器(例如,红外传感器、超声传感器或微波传感器),其通过测量例如在扫描体积420内的光学或声音的变化而将运动检测转换为电信号。根据一个实施例,物体检测模式510、默认模式520或物体检测模式510和默认模式520两者是用户可配置的。例如,当光学读码器400以物体检测模式510操作时,由照明源110产生的光学输出优选为是可编程的,或可由用户配置的。同样,当光学读码器400以默认模式520操作时,由照明源110所产生的光学输出同样优选为是可编程的,或可由用户配置的。由于由照明源110产生的光学输出至少部分定义了光学读码器400的景深,所以调节照明源110的光学输出允许光学读码器400的景深被调整到特定的使用情况。物体检测模式510和/或默认模式520的可配置的性质例如通过下列方式实现:即当照明源110照明扫描体积420并且光学读码器400以物体检测模式510或默认模式520操作时,使物体检测模式510和/或默认模式520与至少部分定义光学读码器400的景深的一个或更多个用户可配置参数关联。根据一个实施例,与物体检测模式510和/或默认模式520关联的用户可配置参数包括驱动波形的脉冲宽度(参见例如图6)。换句话说,用户能够编程或配置与默认模式520关联的脉冲宽度612以及与物体检测模式510关联的脉冲宽度632。根据另一个实施例,与物体检测模式510和/或默认模式520关联的用户可配置参数包括用于驱动照明源110的电流的量。换句话说,当光学读码器400以默认模式520操作时,用户能够编程或配置用于驱动照明源110的电流的量,并且当光学读码器400以物体检测模式510操作时,用户能够编程或配置用于驱动照明源110的电流的量。根据又一个实施例,与物体检测模式510和/或默认模式520关联的用户可配置参数包括驱动波形的脉冲宽度和用于驱动照明源110的电流的量。根据又一个实施例,与物体检测模式510和/或默认模式520关联的用户可配置参数包括被照明源110投射到扫描体积420中的红外光的量。换句话说,当光学读码器400以物体检测模式510操作时,用户能够编程或配置驱动红外LED的波形的脉冲宽度(例如,与物体检测模式510关联的脉冲宽度732)。此外,或可替换地,当光学读码器400以物体检测模式510操作时,用户能够编程或配置用于驱动红外LED的电流的量。与物体检测模式510和/或默认模式520关联的可编程照明设置(例如,用户可配置参数)可以基于用户的情况而被配置或编程。例如,用户可以设定照明设置以最优化用户的视觉效果(例如,如果用户在坐着的时候使用光学读码器400,则将照明源设定到相对暗淡的强度水平)。通过另一个示例,用户可以设定照明设置,以维持适当的扫描速度(例如,具有相对高的成功扫描/读取的可能性的光学代码能够以多快的速度扫描所述扫描体积)。通过另一个示例的方式,用户可以设定照明设置,以维持第一读取通过率(例如,在被呈现给光学读码器400后,光学代码将在第一次通过期间被读取的可能性)。表1列出了用于与物体检测模式510和默认模式520关联的可编程照明设置(例如,用户可配置参数)的各种使用情况的示例。例如,用户可以将与物体检测模式510和默认模式520关联的照明设置设定为始终明亮的使用情况,这导致光学读码器400在物体检测模式510和默认模式520中都具有相对长的景深(DOF),例如为8英寸。换句话说,照明源110可以被照明驱动波形620(图6)或照明驱动波形720(图7)驱动。如果,例如,照明源110在始终照亮的使用情况下被具有相对宽的脉冲宽度的波形(例如,图6的波形620)驱动,则光学读码器400将具有相对长的景深和相对较慢的扫描速度,并且照明源110将相对明亮。因此,当用户在站立时使用光学读码器400时,可以使用始终明亮的使用情况。通过另一个示例的方式,用户可以将与物体检测模式510和默认模式520关联的照明设置设定为始终暗淡的使用情况,这导致光学读码器400在物体检测模式510和默认模式520中都具有相对短的景深,例如为4英寸。换句话说,照明源110可以被照明驱动波形600(图6)或照明驱动波形700(图7)驱动。如果,例如照明源110在始终暗淡的使用情况下被具有相对窄的脉冲宽度的波形(例如,图6的波形600)驱动,则光学读码器400将消耗更少的电力,具有相对短的景深和相对快的扫描速度,并且照明源110将相对暗淡。通常,照明驱动波形的脉冲宽度越窄,扫描速度越大,这是由于模糊量的减少。例如,假设期望的是提供物体通过扫描体积420的扫描速度为100英寸每秒,并且进一步假设光学代码的最小特征尺寸为10密耳,那么照明脉冲的持续时间应该不超过100μs,以便确保曝光时间中的光学模糊不超过光学代码的最小元素的宽度。驱动LED的电流量可以基于LED的占空比及其最大的额定电流设定。如果LED接近其最大可允许脉冲电流脉动,则LED脉冲宽度可以被最小化,从而最大化扫描速度。表格1通过另一个示例的方式,用户可以将与物体检测模式510和默认模式520关联的照明设置设定为始终中等强度的使用情况,这导致光学读码器400在物体检测模式510和默认模式520中都具有在长景深与短景深之间的景深,例如为6英寸。对于始终明亮的使用情况、始终暗淡的使用情况以及始终中等强度的使用情况(表格1的对角线设置),当光学读码器400在物体检测模式510与默认模式520之间切换时,光学读码器400的景深(以及照明源100感知的强度)不改变。在特定使用情况下,当光学读码器400在物体检测模式510与默认模式520之间切换时(例如,基于物体是否在扫描体积420内),可能期望改变光学读码器400的景深。例如,用户可以将与默认模式520关联的照明设置设定为相对短的景深,例如4英寸,以及将与物体检测模式510关联的照明设置设定为相对长的景深,例如8英寸。因此,光学读码器400将具有相对短的景深,直到物体例如光学代码在扫描体积420内被检测到,并且光学读码器400切换到物体检测模式510。在光学读码器400以物体检测模式510操作后,光学读码器400将具有相对长的景深,直到物体不再存在于扫描体积420内。因此,对于第一图像帧,光学读码器400将具有相对短的景深,例如4英寸,而对于第二和随后的图像帧,将具有相对长的景深,例如8英寸。将光学读码器400配置为在默认模式520中具有相对短的景深和在物体检测模式510中具有相对长的景深允许光学读码器400具有针对第二和随后的图像帧的相对长的景深,例如8英寸,以及具有在近场中的快速的扫描速度,并且(当处于默认模式520时)照明源110将相对暗淡。图9示出了根据一个实施例的光学读码器400的四种照明模式的简化的状态图900。特别地,状态图900示出了物体检测模式910、默认模式920、睡眠模式930以及致动模式940。物体检测模式910和默认模式920等同于参考图5、图6、图7和图8A所述的物体检测模式510和默认模式520,不同的是光学读码器400从物体检测模式910和默认模式920转变到睡眠模式930和致动模式940。致动触发使得光学读码器400从物体检测模式910或默认模式920转变到致动模式940。所述致动触发可以包括任意数量的事件,例如触发按钮或开关(例如,用户手动按下触发按钮或开关,所述触发按钮或开关可以被布置在图4中的外壳410上)的致动,从主计算机(例如,图3中的主机350)或设备接收命令,或对与特定光学代码相关联的数据进行解码,所述特定光学代码例如选择列表标签(例如,操作员可以从一列光学代码(例如,与各种水果关联的一列光学代码)中扫描特定的光学代码(例如,与苹果关联的光学代码))。光学读码器400以致动模式940操作,直到返回触发使得光学读码器400从致动模式940转变到物体检测模式910。返回触发包括,例如接收光学代码已被读取的指示(例如,一个或更多光学代码已被光学读码器400检测和解码)或在预定持续时间内(例如预定数量的图像帧或在预定时间段内)物体不在扫描体积420内。睡眠触发使得光学读码器400从物体检测模式910或默认模式920转变为睡眠模式930。睡眠触发包括,在预定的持续时间内(例如预定数量的图像帧或在预定时间段(例如,15秒到1小时)内)例如光学代码的物体不存在于扫描体积420内。光学读码器400以睡眠模式930操作,直到唤醒触发使得光学读码器400从睡眠模式930转变到物体检测模式910。唤醒触发可以包括,物体存在于扫描体积420内或环境光的变化(例如,环境光变化的百分比,例如5%至15%的用户可选择范围内的百分比)。参考图5描述光学读码器400如何确定物体(例如,光学代码)在扫描体积420内的存在或不存在的各个示例,例如监测扫描体积420的由物体引起的灰度变化。根据一个实施例,可以存在不止一种睡眠模式,例如低环境和高环境睡眠模式。图10示出了根据一个实施例的用于确定是进入低环境睡眠模式1020还是高环境睡眠模式1015的方法1000的流程图。在步骤1005处接收睡眠触发后,光学读码器400在步骤1010确定环境照度是否大于或等于预定阈值。在一个配置中,在256的灰度值(8位图像数据,其中较高的值表示较高的光强度)中,所述预定阈值被设定为大约40的值。环境照度可以通过成像器120或分离的光电传感器或光电检测器测量。如果在步骤1010中确定环境照度大于或等于预定阈值,则光学读码器400在步骤1015中进入高环境睡眠模式(例如,照明源110被关闭)。高环境睡眠模式在存在很高的环境照度的情况下可能是有用的,或当存在正常环境照度时,用以通过关闭照明源110而节省能源。另一方面,如果在步骤1010确定环境照度低于预定阈值,则光学读码器400在步骤1020进入低环境睡眠模式(参见例如图11的波形1140和图12的波形1240),以便更容易“唤醒”光学读码器400(例如,部分光线被投射到扫描体积中以帮助确定物体在扫描体积中的存在或不存在)。当光学读码器400以物体检测模式910、默认模式920、睡眠模式930或致动模式940操作时,照明源110的状态或模式可以若干方式被设定,并可以取决于使用的照明类型。例如,当光学读码器400在物体检测模式910、默认模式920、睡眠模式930与致动模式940之间切换时,改变照明源110的光学输出可以包括改变驱动波形的脉冲宽度、改变用于驱动照明源110的电流量以及改变由照明源110投射到扫描体积420中的红外光的量中的一个或更多。将参考图11和12描述当光学读码器400在物体检测模式910、默认模式920、睡眠模式930或致动模式940之间切换时,改变照明源110的光学输出的各个示例。图11示出了根据一个实施例的用于驱动照明源110的照明驱动波形1100、1120、1140和1160。例如,照明源可以包括经配置用一系列照明脉冲照明扫描体积420的一个或更多LED,其中每个照明脉冲具有脉冲宽度。为了生成照明脉冲,照明驱动器(例如,照明驱动器130)用包括一系列电脉冲的波形驱动照明源110。通过参考图11:·当光学读码器400以默认模式920操作时,照明驱动器130用照明驱动波形1100驱动照明源110;·当光学读码器400以物体检测模式910操作时,照明驱动器130用照明驱动波形1120驱动照明源110;·当光学读码器400以低环境睡眠模式操作时,照明驱动器130用照明驱动波形1140驱动照明源110;·当光学读码器400以致动模式940操作时,照明驱动器130用照明驱动波形1160驱动照明源110;以及·当光学读码器400以高环境睡眠模式操作时,照明源110关闭。照明驱动波形1100包括电脉冲1102、1104、1106、1108和1110,其中的每个具有以预定频率1114生成的固定脉冲宽度1112。与此类似,照明驱动波形1120包括电脉冲1122、1124、1126、1128和1130,其中的每个具有以预定频率1134生成的固定脉冲宽度1132。照明驱动波形1140包括电脉冲1142、1144、1146、1148和1150,其中的每个具有以预定频率1154生成的固定脉冲宽度1152。照明驱动波形1160包括电脉冲1162、1164、1166、1168和1170,其中的每个具有以预定频率1174生成的固定脉冲宽度1172。每个脉冲的高度相应于驱动电流(例如,LED驱动电流)。在一个示例中,如果波形1100的电脉冲1102-1110具有在60Hz的频率下生成的70微秒的脉冲宽度,则当以默认模式920操作时,光学读码器400被配置为具有大约5英寸的景深。当光学读码器400转变到物体检测模式910时,假设波形1120的电脉冲1122-1130具有在60Hz的频率下生成的140微秒的脉冲宽度,则景深可以增加到大约8英寸。当光学读码器400转变到低环境睡眠模式时,照明源110可以用波形1140驱动,在波形1140中,电脉冲1142-1150具有在60Hz的频率下生成的大约16-30微秒的脉冲宽度。在低环境睡眠模式中,光学读码器400监测扫描体积的指示物体的存在的灰度变化(例如,当在低环境睡眠模式时,光学读码器400可能不能读取光学代码)。换句话说,在光学读码器400处于低环境睡眠模式时,少量的光被投射到扫描体积中,以便当物体进入扫描体积内时,光学读码器400准备被“唤醒”。当光学读码器400转变到致动模式940时,假设波形1160的电脉冲1162-1170具有在60Hz的频率下生成的125微秒的脉冲宽度,则景深可以增加到大约8英寸。优选地,波形1160经配置优化被捕获的图像的对比度。根据特定的实施例,波形1100-1160的脉冲宽度、频率或脉冲宽度和频率是可编程的。此外,根据特定实施例,波形1100-1160的脉冲宽度、频率或脉冲宽度和频率从一个脉冲到另一个脉冲改变。根据一个实施例,用照明驱动波形1100-1160驱动的照明源110包括经配置用红光照明扫描体积420的一个或更多LED。根据另一个实施例,用照明驱动波形1100-1160驱动的照明源110包括经配置用白光照明扫描体积420的一个或更多LED。图12示出了根据另一个实施例的用于驱动照明源110的照明驱动波形1200、1220、1240和1260。在参考图12描述的实施例中,照明源110包括一个或更多个红外LED和一个或更多个红光LED。可替换地,照明源110包括一个或更多个红外LED和一个或更多个白光LED。当光学读码器400以默认模式920操作时,红外LED保持关闭,同时红光LED、白光LED或红光和白光LED两者照明扫描体积420。当光学读码器400转变到物体检测模式910时,红外LED连同红光和/或白光LED一起被打开。当光学读码器400转变到低环境睡眠模式时,红外LED被打开,并且红光和/或白光LED被关闭。当光学读码器400转变到致动模式940时,红外LED连同红光和/或白光LED一起被打开。换句话说,当光学读码器400以默认模式920操作时,照明驱动器130用照明驱动波形1200驱动红光和/或白光LED(但不驱动红外LED)。当光学读码器400转变到低环境睡眠模式时,照明驱动器130用照明驱动波形1240驱动红外LED(但不驱动红光/白光LED)。当光学读码器400转变到物体检测模式910时,照明驱动器130用照明驱动波形1220驱动红外LED和红光/白光LED两者。当光学读码器400转变到致动模式940时,照明驱动器130用照明驱动波形1260驱动红外LED和红光/白光LED两者。在可替换的实施例中,当光学读码器400转变到物体检测模式910或致动模式940时,红外LED和红光/白光LED可以被具有不同脉冲宽度和可能的不同频率的照明驱动波形驱动(例如,红外LED可以用具有100%占空比的波形驱动,而红光和/或白光LED用照明驱动波形1220驱动)。照明驱动波形1200包括电脉冲1202、1204、1206、1208和1210,其中的每个电脉冲具有以预定频率1214生成的固定脉冲宽度1212。与此类似,照明驱动波形1220包括电脉冲1222、1224、1226、1228和1230,其中的每个具有以预定频率1234生成的固定脉冲宽度1232。照明驱动波形1240包括电脉冲1242、1244、1246、1248和1250,其中的每个具有以预定频率1254生成的固定脉冲宽度1252。照明驱动波形1260包括电脉冲1262、1264、1266、1268和1270,其中的每个具有以预定频率1274生成的固定脉冲宽度1272。每个脉冲的高度对应于驱动电流(例如,LED驱动电流)。在一个示例中,如果波形1200的电脉冲1202-1210(其驱动红光和/或白光LED)具有在60Hz的频率下生成的140微秒的脉冲宽度,则当以默认模式920操作时,光学读码器400被配置为具有大约4英寸的景深。当光学读码器400转变到物体检测模式910并打开红外LED时,景深可以增加到大约6英寸到大约8英寸。当光学读码器400转变到低环境睡眠模式时,红光和/或红外LED可以用波形1240驱动,在波形1240中,电脉冲1242-1250具有在60Hz的频率下生成的大约30微秒的脉冲宽度。根据一个实施例,当在低环境睡眠模式期间,光学读码器400不驱动白光LED。在低环境睡眠模式中,光学读码器400监测扫描体积的指示物体的存在的灰度变化(例如,当在低环境睡眠模式中时,光学读码器400可能不能读取光学代码)。换句话说,在光学读码器400处于低环境睡眠模式中时,少量的光被投射到扫描体积中,以便当物体进入扫描体积内时,光学读码器400准备被“唤醒”。当光学读码器400转变到致动模式940并且用波形1260驱动红外LED和红光/白光LED时,假设波形1260的电脉冲1262-1270具有在60Hz的频率下生成的125微妙的脉冲宽度,则景深可以增加到大约8英寸。根据特定的实施例,波形1200-1260的脉冲宽度、频率或脉冲宽度和频率是可编程的。此外,根据特定实施例,波形120-1260的脉冲宽度、频率、或脉冲宽度和频率从一个脉冲到另一个脉冲改变。优选地,红外LED经配置用红外光照明扫描体积420。红光LED经配置用红光照明扫描体积420。白光LED经配置用白光照明扫描体积420。图13A示出了根据一个实施例的用于照明光学读码器例如光学读码器400的扫描体积的方法1300的流程图。在步骤1305,光学读码器400进入物体检测模式(例如,物体检测模式510或910)。例如,在光学读码器400启动或被复位之后,光学读码器400可以进入物体检测模式,或者光学读码器400可以从另一种操作模式,例如默认模式(例如,默认模式520或920)、睡眠模式(例如,睡眠模式930)或致动模式(例如,致动模式940)进入物体检测模式。在光学读码器400进入物体检测模式后,与光学读码器400关联的照明源(例如,照明源110)在步骤1310被设定为第一照明状态。例如,将照明源设定为第一照明模式可以包括:将驱动波形的脉冲宽度设定为第一预定脉冲宽度、将用于驱动照明源的电流量设定为第一预定电流以及将被照明源投射到光学读码器400的扫描体积中的红外光的量设定为第一预定水平中的一个或更多。在照明源在步骤1310被设定为第一照明模式后,照明源产生至少部分定义光学读码器400的第一景深的光学输出。参考图5-12描述在光学读码器400以物体检测模式操作时设定照明源的光学输出的各个示例。根据一个实施例,在照明源被设定为第一照明模式后,由照明源产生的光学输出是用户可编程的或可配置的。例如,第一照明模式可以具有与其关联的一个或更多用户可配置参数,例如驱动波形的脉冲宽度、用于驱动照明源的电流量、驱动波形的脉冲宽度和用于驱动照明源的电流量,或由照明源投射到光学读码器400的扫描体积中的红外光的量。根据一个实施例,用户可配置的参数被存储在存储器170和/或182中(参见图1)。通过存取和改变被存储的参数,用户可以修改用户可配置的参数。在步骤1315,光学读码器400监测扫描体积的关于是否在扫描体积中检测到例如光学代码等物体的指示。物体在扫描体积内的不存在或存在可以若干方式确定。根据一个实施例,通过将图像的亮度(其可以由模拟的增益系数调节)和预定的阈值比较以确定图像的亮度是否低于或等于预定的阈值,物体的存在或不存在被确定。如果图像亮度大于预定的阈值,则假设物体在扫描体积内。另一方面,如果图像亮度小于或等于预定的阈值,则假设物体不在扫描体积内。例如,图13B示出了当项目或物体不在扫描体积内时由光学读码器400的成像器捕捉到的图像1350,以及图13D示出了当物体(例如,其上具有光学代码的一次性杯子)在扫描体积内时由成像器捕捉到的图像1370。图像亮度可以若干方式与预定的阈值比较,例如使用光照度的直方图。例如,图13C示出了与图13B的图像1350关联的直方图1360,以及图13E示出了与图13D的图像1370关联的直方图1380。直方图1360和1380包括256个箱或桶(binsorbuckets)(取值范围从0到255),相应的图像1350和1370中的像素的强度水平被置于所述256个箱或桶中。例如,直方图1360在箱号18中具有82153个像素。换句话说,在具有强度水平18(相对暗的像素)的图像1350中具有82153个像素。使用光照度的直方图确定在扫描体积内是否检测到物体的一个方式包括:以定义的像素百分比例如0.5%确定当前箱的灰度,以及将确定的当前箱的灰度值和预定的阈值比较。如图13C所示,在0.5%的定义的像素百分比下的当前箱的灰度值是64,其可以通过以下方式确定,即对从最高到最低的像素的强度水平求和或相加直到达到在定义的百分比下的像素数量。例如,假设成像器包括8位1280x1024成像器,其为每个像素输出取值范围从0到255(其中255是饱和亮度情况)的强度值,并且定义的像素百分比被设定为0.5%,在每个箱中的像素数量(从最亮到最暗)被加起来,直到达到大约6554个像素(1280*1024*0.005)的总像素数。在定义的像素百分比下的当前箱是具有最小值(即,已被计数的在6554个像素中的最暗像素的强度水平)的箱号码,其在图13C中所示的直方图1360中是64。换句话说,在窗口1365(即在取值范围为从64到255的箱中)内具有大约6554个像素,并且处于定义的像素百分比的当前箱是被包括在窗口1365中的箱中的最小的箱号。在图13E中示出的直方图1380中,在0.5%的定义的像素百分比下的当前箱的灰度值是180。换句话说,在窗口1385内具有大约6554个像素,并且最小箱号是180。通过将在定义的像素百分比下的当前箱的灰度值和预定的阈值相比较以确定灰度值是否小于或等于预定的阈值,物体的不存在或存在可以被推断。例如,如果预定的阈值被设定为90,在定义的像素百分比下的当前箱的灰度值大于90的情况下,可以假设物体在图像内,而在定义的像素百分比下的当前箱的灰度值小于或等于90的情况下,可以假设物体不在图像内。参考在图13B中示出的图像1350,假设图像1350不包括物体,这是因为在0.5%的定义的像素百分比下的当前箱的灰度值是64,其小于90的阈值。相反,假设图13D中的图像1370包括物体,这是因为在0.5%的定义的像素百分比下的当前箱的灰度值是180,其大于90的阈值。在直方图1360和1380中示出的当前箱的灰度值是设计的示例,用以说明将当前箱的灰度值和预定的阈值相比较。预定的阈值可以被设定为更小的值,例如在大约35到大约50的范围内的值。根据另一个实施例,物体在扫描体积内的不存在或存在是通过处理与对应于光学代码的可解码数据的扫描体积关联的图像数据而被确定的。例如,如果没有对应于光学代码的可解码数据,则可以假设没有物体在扫描体积内。光学读码器400可以使用任意数量的方法搜索对应于扫描体积内的光学代码的可解码数据。根据一个实施例,获取或接收位于光学读码器400的扫描体积内的对应于例如光学代码等物体的扫描数据。所述扫描数据可以包括对应于光学读码器400的扫描区域或读取区域的源数据,例如来自扫描区域或读取区域的已获取的图像的图像数据或像素数据。换句话说,扫描数据表示自光学读码器400的扫描体积内的一个或更多物体(其可以包括光学代码)反射的光。例如,在操作员将物体放在扫描体积内(例如,扫描通过窗口的物体或反之亦然)之后,例如光学代码等物体的一个或更多图像可以被获取。在扫描数据被获取或接收后,扫描数据被处理,以便确定已获取或接收的数据(或其任何部分)是否包含对应于一个或更多光学代码的可解码数据。换句话说,所述扫描数据被处理以确定扫描数据是否包括任何光学代码。任何合适的技术可以被用于识别可解码的数据。例如,对应于图像的一个或更多个子区域(例如,虚拟扫描线)的像素数据被处理,以定位边缘过渡,并基于边缘过渡位置,尝试对像素数据进行解码(例如,使用低级解码器和/或高级解码器)。通过另一个示例的方式,二维解码算法可以被用于确定扫描数据是否包括对应于光学代码的可解码数据。任何合适的二维解码算法可以被使用。优选地,二维解码算法经配置处理图像数据以识别(以及可选地解码)在已获取的图像内的光学代码。关于二维解码算法以及示例性的二维解码算法的更多细节可以在与符号类型关联的国际标准中找到,例如可以从国际标准化组织(ISO)或瑞士日内瓦得到的ISO/IEC16022:2006,名称为“Informationtechnology-Automaticidentificationanddatacapturetechniques-DataMatrixbarcodesymbologyspecification(信息技术-自动识别和数据采集技术-数据矩阵条形码符号规范)”的国际标准。根据一个实施例,扫描数据在步骤1315未被解码。例如,扫描数据可以被处理以确定扫描数据是否包括或可能包括可解码的数据,例如当边缘过渡的相对位置和其间的间距产生至少一个有效字符、码字或开销字符(overheadcharacter)时,或当检测到最小数量的边缘过渡时。根据另一个实施例,利用合适的解码器在步骤1315解码扫描数据。通过多次执行步骤1315和1320,形成读取循环,其中光学读码器400尝试对光学读码器400的扫描体积内的光学代码进行解码。根据一个实施例,在照明源在步骤1310被设定为第一照明模式后,在多次执行步骤1315和1320形成的读取循环期间,照明源的光学输出不被光学读码器400改变或变更。而是,在步骤1330,光学读码器400改变照明源的光学输出(例如,在扫描体积内未检测出物体并且光学读码器400存在通过多次执行步骤1315和1320形成的读取循环之后)。如果扫描数据在步骤1315被解码,并且确定光学代码已经被读取(例如,一个或更多光学代码已经被检测到并被光学读码器400解码),则方法1300可以从步骤1315直接进行到步骤1325。根据又一个实施例,通过比较一个图像帧与另一个图像帧(例如,下一个连续的图像帧)以确定是否具有表示物体在扫描体积内的不存在或存在的任何变化(例如,物体从一个图像运动到下一个),所述物体的不存在或存在被确定。例如,一个图像帧(或其一部分)的高于特定的百分比例如0.5%的像素的灰度值可以和另一个图像帧(或其相应部分)比较。基于所述比较,可以确定是否具有指示扫描体积内物体的不存在或存在的任何变化。例如,对于要比较的图像,光学读码器400(例如,与光学读码器400关联的处理器)可以对具有在预定阈值以上的值的所有像素或一部分像素之间的绝对差值求和,对于8位成像器,所述预定阈值例如是40。换句话说,光学读码器400可以对所述差值求和,以便得出图像之间相似度的度量。如果图像是类似的,则绝对差值的和将很小。不过,如果图像是不同的(例如,由于物体的出现或消失或移动),则绝对差值的和将反映图像之间的差异。因此,如果绝对差值计算的和超过操作公差内的特定阈值(例如,特定百分比差异,例如15%到20%),则光学读码器400可以确定物体在(或不在)扫描体积内。根据又一个实施例,不同的设备(例如,不同于成像器的分离的设备),例如运动检测器或测距仪,被用来确定物体在扫描体积内的存在或不存在。例如,运动检测器可以包括通过测量例如在扫描体积内的光学或声音的变化而将运动检测转换为电信号的运动传感器(例如,红外传感器、超声传感器或微波传感器)。如果物体被检测到在扫描体积内,则光学读码器400继续监测扫描体积的关于物体例如光学代码是否被检测到在扫描体积中的指示(步骤1320)。另一方面,如果在扫描体积内检测不到物体(步骤1320),则光学读码器400自动转变到默认模式(步骤1325)。换句话说,光学读码器400在没有用户输入或交互作用的情况下转变到默认模式(例如,没有人的干扰或活动)。在光学读码器400进入默认模式后,与光学读码器400关联的照明源在步骤1330被设定为第二照明状态或模式。例如,将照明源设定为第二照明模式可以包括:将驱动波形的脉冲宽度设定为第二预定脉冲宽度、将用于驱动照明源的电流量设定为第二预定电流以及将被照明源投射到光学读码器400的扫描体积中的红外光的量设定为第二预定水平中的一个或更多。在照明源在步骤1330被设定为第二照明模式后,照明源产生第二光学输出,其优选地减少光学读码器400从第一景深到小于第一景深的第二景深的景深。当光学读码器400以默认模式操作时,设定照明源的光学输出的各个示例将参考图5-12描述。根据一个实施例,在照明源被设定为第二照明模式后,由照明源产生的光学输出是用户可编程的或可配置的。例如,第二照明模式可以具有与其关联的一个或更多个用户可配置参数,例如驱动波形的脉冲宽度、用于驱动照明源的电流量、驱动波形的脉冲宽度和用于驱动照明源的电流量,或由照明源投射到光学读码器400的扫描体积中的红外光的量。根据一个实施例,用户可配置的参数被存储在存储器170和/或存储器182中(请参见图1)。通过存取和改变被存储的参数,用户可以修改用户可配置的参数。在步骤1335,光学读码器400监测扫描体积的关于物体例如光学代码是否在扫描体积中被检测到的指示。物体在扫描体积内的不存在或存在可以类似或等同于参考步骤1315所述的方式确定。如果在扫描体积内未检测到物体,则光学读码器400继续监测扫描体积的关于物体例如光学代码是否被检测到在扫描体积中的指示(步骤1340)。另一方面,如果物体被检测到在扫描体积内(步骤1340),则光学读码器400自动转变到物体检测模式(步骤1305)。换句话说,光学读码器400在没有用户输入或交互作用的情况下转变到物体检测模式(例如,没有人的干扰或活动)。图14是基本是方法1300的镜像的方法1400的流程图。除了参考图13A描述的方法1300以外,只有当例如光学代码等物体在预定的持续时间内(例如预定数目的图像帧或预定的时间段内)不在扫描体积内时,方法1400才进入默认模式(步骤1325)。在光学读码器400在步骤1310被设定为第一照明模式后,光学读码器400在步骤1405初始化计时器。例如,光学读码器400可以将图像帧计数器或时钟设定为预定的值(例如,零)。如果未在扫描体积内检测出物体(步骤1320),则在光学读码器400自动转变到默认模式前(步骤1325),光学读码器400确定计时器是否已经期满(步骤1410)。图15是根据又一个实施例的用于照明光学读码器例如光学读码器400的扫描体积的方法1500的流程图。参考图15描述的照明控制算法优选使用脉冲宽度控制调节照明源的光学输出。在步骤1505,光学读码器400进入物体检测模式(例如,物体检测模式510或910)。例如,在光学读码器400启动或被复位之后,光学读码器400可以进入物体检测模式,或者光学读码器400可以从另一种操作模式,例如默认模式(例如,默认模式520或920)、睡眠模式(例如,睡眠模式930)或致动模式(例如,致动模式940)进入到物体检测模式。在光学读码器400进入物体检测模式后,与光学读码器400关联的照明源(例如,照明源110)在步骤1510被设定为第一照度等级。所述将照明源设定为第一照度等级的步骤包括将驱动波形的脉冲宽度设定为第一预定的脉冲宽度。在一个配置中,第一照度等级具有与其关联的用户可配置参数,例如驱动波形的脉冲宽度,以便用户可以对第一照度等级配置或编程。例如,用户可以从一列可用的亮度等级(例如,暗淡、中等、明亮、其他、高环境或低环境)中选择亮度等级。表格2示出了示例性的照明脉冲宽度控制真值表,其可以被存储在存储器170(参见图1)、存储器182或其他适合的存储器中的一个或更多个中。如果用户选择了作为第一照度等级的亮度等级,例如,光学读码器400在真值表(表2)中执行查找,并使得照明源被具有125微秒的脉冲宽度的波形驱动。如果用户不选择作为第一照度等级的亮度等级,则光学读码器400将第一照度等级设定为默认设置,例如中等亮度。照明脉冲宽度可以由处理器或控制器控制(例如图1中的控制器140),并且用于以选择的脉冲宽度驱动照明源的波形可以由处理器、控制器或可编程逻辑器件(PLD)生成。与各个亮度等级中的每个关联的脉冲宽度可以可选地可由用户配置。例如,如果在表格2中示出的照明脉冲宽度控制真值表被存储在非易失性存储器中,例如串行闪存中,则与各个亮度等级(例如,暗淡、中等、明亮、其他、高环境或低环境)中的每个关联的脉冲宽度可以通过向PLD中的适当的寄存器写入新的脉冲宽度而被改变。例如,如果用户想改变与从125微秒到70微秒的亮度等级关联的脉冲宽度,则用户可以输入新的脉冲宽度(例如,通过扫描光学代码配置,或经由光学读码器400的编程菜单),以及光学读码器400将新的亮度等级的值存储在真值表中。表格2当光学读码器400被设定为给定的照度等级时,光学读码器400的扫描体积内的光强度取决于若干因素,例如环境光、距扫描器窗口的距离、透镜系统的焦数(例如,依据透镜的焦距的入瞳的直径)以及物体表面的反射率。例如,表3示出了当与光学读码器400关联的照明源被设定为不同的照度等级(例如,“暗淡”、“中等”和“明亮”)时,距离扫描器窗口3英寸的照度(lux)的示例(假设没有环境光)。表格3中的照度值是当与光学读码器400关联的照明源(例如,包括12个LED的阵列)被1安培波形驱动时距离扫描器窗口(假设没有环境光)3英寸的照度(lux)的近似值,所述1安培波形在大约60Hz的频率下以所述的脉冲宽度(例如,60、125或200微秒)脉动。表格3在与光学读码器400关联的照明源被设定为第一照度等级后,光学读码器400在步骤1515初始化计时器。例如,光学读码器400可以将图像帧计数器或时钟设定为预定的值(例如,零)。在步骤1520,光学读码器400获取或接收扫描体积的图像(例如,通过经由成像器120捕捉下一个图像帧)。在步骤1525,光学读码器400将图像亮度和第一预定阈值(例如,阈值1)比较,以确定图像亮度是否小于或等于第一预定阈值。如果图像亮度大于第一预定阈值,则假设物体例如光学代码在扫描体积内,并且光学读码器400重复步骤1520(例如,获取另一个图像并再次执行步骤1525)。另一方面,如果图像亮度小于或等于第一预定阈值,则假设物体例如光学代码不在扫描体积内,并且方法1500进行到步骤1530。图像亮度可以若干方式与第一预定阈值比较,例如使用光照度的直方图。根据一个实施例,成像器(例如,成像器120)包括8位成像器,其为每个像素输出取值范围从0到255的强度值,其中0是没有光或昏暗的情况(最小强度)并且255是饱和情况(最大强度)。对于10位数值的成像器,每个像素值的范围是从0到1023的。对于每个捕捉到的图像,可以生成指示图像中相应于每个数字化的灰度值的像素数量的直方图。在特定实施例中,可能的值的总量通过某因数被缩放,以便降低直方图中的箱的总数。换句话说,直方图可以将多个数字化值合并到相同的域或箱中。例如,四个相邻的数字化值可以被合并到单个箱中,以便生成具有64个箱的直方图(与8位成像器的256个箱不同)。降低直方图中箱或域的数量有助于降低生成和存储直方图所需要的存储器的数量。根据一个实施例,成像器为每个图像帧生成直方图,并且和所捕捉的图像数据(例如,像素值的阵列)一起输出直方图数据。根据另一个实施例,通过使用已捕捉的图像数据的全部或一部分(例如,成像器输出的像素值),控制器(例如,控制器140)、处理器或类似装置生成用于选择图像帧的直方图。为在步骤1520被捕捉的图像生成直方图后,光学读码器400(例如,控制器140)将所述图像直方图和第一直方图阈值(例如第一阈值1)相比较,以确定被成像器传感器感测的图像是否具有在第一阈值之上、之下或等于第一阈值的亮度。如果图像亮度在第一直方图阈值之上,则假设物体例如光学代码在扫描体积内(例如,物体例如光学代码处于近场中),并且方法1500在步骤1520捕捉另一个图像帧。另一方面,如果图像亮度小于或等于第一直方图阈值,则假设物体例如光学代码不在扫描体积内(或至少不在扫描体积的近场内),并且方法1500进行到步骤1530。在一个配置中,在256灰度值(8位图像数据,其中较高的值表示较高的光强度)中,第一直方图阈值被设定为大约35到大约50的范围内的值,并且优选大约是36。虽然256灰度值作为示例给出,但光学读码器400可以计算和使用比256的灰度值更多或更少的灰度值。例如,第一直方图阈值可以每6位数据为一箱地被设定为9,其等同于以定义的像素的百分比的直方图的为36的8位灰度值(其中,灰度值越高,箱号越高),假设可能的灰度值的总数256被因数4缩放。第一直方图阈值可以是用户可编程或可配置的(例如,通过扫描光学代码配置或经由光学读码器400的编程菜单)。用于将图像直方图和第一直方图阈值比较的一个方式包括,确定处于第一直方图阈值或低于第一直方图阈值的图像直方图的光强度的百分比。如果处于第一直方图阈值或低于第一直方图阈值的光强度的百分比等于或大于选择的百分比,则假设物体例如光学代码不在扫描体积内(或至少不在扫描体积的近场),并且在假设在步骤1530确定计时器已经期满的情况下,照明源被设定为第二照度等级(例如,暗淡等级)。另一方面,如果处于第一直方图阈值或低于第一直方图阈值的光强度的百分比小于选择的百分比,则假设物体例如光学代码在扫描体积内,并且在步骤1520捕捉另一个图像。选择的百分比可以是任何合适的百分比,例如大约93%到大约99.5%,优选地大于99.3%。因此,例如,对于第一直方图阈值36以及选择的百分比98%,如果98%或更多的图像直方图的光强度处于或低于灰度值36,则方法1500进行到步骤1530。另一方面,如果小于98%的光强度处于或低于灰度值36,则方法1500进行到步骤1520。选择的百分比可以是用户可编程或可配置的(例如,通过扫描光学代码配置或经由光学读码器400的编程菜单)。例如,如果第一阈值1被设定为100,则在所述定义的像素百分比的当前箱的灰度值大于100的情况下,假设物体在图像内,并且在所述定义的像素百分比的当前箱的灰度值小于或等于100的情况下,假设物体不在图像内。图16B示出了与图16A中的图像1610关联的直方图1620,以及图16D示出了与图16C的图像1630关联的直方图1640。参考图16A和16B,针对步骤1525的目的,假设图像1610包括物体,这是因为如直方图1620所示,在0.5%的定义的像素百分比下的当前箱的灰度值为136,其大于为100的第一阈值1。因此,如果在步骤1520获取图像1610并且确定图像1610的亮度大于为100的第一阈值1(例如,current_bin/analog_gain1>阈值1),则针对步骤1525的目的,假设物体在扫描体积内,并且光学读码器400重复步骤1520(例如,获得另一图像并再次执行步骤1525)。相反,参考图16C和16D,针对步骤1525的目的,假设图像1630不包括物体,这是因为,如直方图1640所示,在0.5%的定义的像素百分比下的当前箱的灰度值为80,其小于为100的第一阈值1。因此,如果在步骤1520获取图像1630,并且确定图像1630的亮度小于或等于为100的第一阈值1(例如,current_bin/analog_gain1≤阈值1),则针对步骤1525的目的,假设物体不在扫描体积内,并且方法1500进行到步骤1530。在直方图1620和1640中示出的当前箱的灰度值是设计的示例,以便说明将当前箱的灰度值和预定阈值的比较。第一预定阈值(阈值1)可以被设定为更小的值,例如在大约35到大约50的范围内的值。用于将图像直方图和第一直方图阈值比较的另一个方式包括,利用图像直方图计算已捕捉的图像的平均灰度值,以及将所述平均灰度值和第一直方图阈值比较。所述平均灰度值可以由模拟增益因子调节。由于平均灰度值(其可以由模拟增益因子调节)统计地表示成像器与例如光学代码等物体之间的距离,所以将平均灰度值和第一直方图阈值比较有效地确定了物体是否被定位在扫描体积的特定部位,例如近场或远场。例如,如果图像的平均灰度值小于或等于为36的第一直方图阈值,则可以假定物体在扫描体积的远场(即,不是在近场的物体)。因此,如果图像的平均灰度值少于或等于第一直方图阈值,则方法1500进行到步骤1530。否则,方法1500进行到步骤1520。在步骤1530,在光学读码器400将照明源设定为第二照度等级前,光学读码器400确定计时器(例如,在步骤1515中被初始化的计时器)是否已经期满。如果确定计时器已经期满,则方法1500进行到步骤1535。否则,方法1500进行到步骤1520。换句话说,光学读码器400未将照明源设定为第二照度等级,除非图像亮度在预定的持续时间中处于或低于第一直方图阈值(步骤1525),例如预定数量的图像帧或预定的时间段。根据特定实施例,预定的持续时间是用户可编程或可配置的(例如,通过扫描光学代码配置或经由光学读码器400的编程菜单)。如果用户不选择预定的持续时间,则光学读码器400将预定的持续时间设定为默认设置,例如5秒。在步骤1535,光学读码器400将照明源设定为第二照度等级。将照明源设定为第二照度等级的步骤包括将驱动波形的脉冲宽度设定为第二预定的脉冲宽度。根据一个实施例,第二照度等级具有与其关联的用户可配置的参数,例如驱动波形的脉冲宽度,以便用户可以对第二照度等级配置或编程。例如,用户可以从一列可用的亮度等级中选择亮度等级(例如,暗淡、中等、明亮、其他或环境)。如果用户选择了作为第二照度等级的暗淡等级,则例如,光学读码器400在真值表(表2)中执行查找,并使得照明源被具有40微秒的脉冲宽度的波形驱动。如果用户不选择用于第二照度等级的亮度等级,则光学读码器400将第二照度等级设定为默认设置,例如中等亮度。照明脉冲宽度可以由处理器或控制器控制(例如图1中的控制器140),并且用于以可选择的脉冲宽度驱动照明源的波形可以由处理器、控制器或PLD生成。根据特定实施例,为了视觉舒适度,一个或更多的中间状态被插入在第一与第二照度等级之间。换句话说,假设第一照度等级被设定为明亮等级,并且第二照度等级被设定为暗淡等级,则在第一和第二照度等级之间的过渡可以是逐步的变化(例如,照度等级斜向上或向下)。全部内容合并于此作为参考的美国专利公开No.2007/0284447描述了各种方法,其随着时间推移逐步增加或减少用户可感知的照明源的强度,从而降低与各照度等级之间的过渡关联的用户的疲劳和/或刺激。在步骤1540,光学读码器400获取或接收扫描体积中的图像(例如,通过经由成像器120捕捉下一个图像帧)。在步骤1545,光学读码器400将图像亮度和第二预定阈值(例如,阈值2)比较,以确定图像亮度是否大于或等于第二预定阈值。如果图像亮度小于第二预定阈值,则假设例如光学代码等物体不在扫描体积内,并且光学读码器1540重复步骤1540(例如,获取另一个图像并再次执行步骤1545)。另一方面,如果图像亮度大于或等于第二预定阈值,则假设例如光学代码等物体在扫描体积内,并且方法1500进行到步骤1505。根据一个实施例,利用光线照度的直方图,将图像亮度和第二预定阈值比较。所述直方图可以由成像器或控制器(例如,控制器140)、处理器或类似装置基于捕捉到的图像数据的全部或一部分而生成(例如,由成像器输出的像素值)。在步骤1540,针对被捕捉的图像生成直方图后,光学读码器400(例如,控制器140)将所述图像直方图和第二直方图阈值比较(例如,第二阈值2)以确定被成像器传感器感测的图像是否具有在第二阈值之上、之下或等于第二阈值的亮度。如果图像亮度低于第二直方图阈值,则假设物体例如光学代码不在扫描体积内,并且方法1500在步骤1540捕捉另一个图像帧。另一方面,如果图像亮度大于或等于第二直方图阈值,则假设物体例如光学代码在扫描体积内(例如,如光学代码等物体处于近场中),并且方法1500进行到步骤1505。根据一个实施例,在256个灰度值(其中较高的值表示较高的光强度)中,第二直方图阈值被设定为在大约20到大约35的范围内的值,并且优选大约是28。虽然256灰度值作为示例给出,但光学读码器400可以计算和使用比256个灰度值更多或更少的灰度值。例如,第二直方图阈值可以被设定为7,其等同于在定义的像素百分比下的直方图的为28的8位灰度值(其中,灰度值越高,箱号越高),假设256个可能的灰度值的总数被因数4缩放。根据特定实施例,第二直方图阈值是用户可编程或可配置的(例如,通过扫描光学代码配置或经由光学读码器400的编程菜单)。用于将图像直方图和第二直方图阈值比较的一个示例性方式包括:确定处于第一直方图阈值或低于第一直方图阈值的图像直方图的光强度的百分比。如果处于所述第二直方图阈值或在所述第二直方图阈值之上的光强度的百分比等于或大于选择的百分比,则假设物体例如光学代码在扫描体积内(例如,物体例如光学代码处于近场中),并且光学读码器400在步骤1505进入物体检测模式(例如,物体检测模式510或910),并且照明源在步骤1510被设定为第一照度等级(例如,明亮等级)。另一方面,如果处于第二直方图阈值或高于第二直方图阈值的光强度的百分比小于选择的百分比,则假设物体例如光学代码不在扫描体积内,并且另一个图像在步骤1540被捕捉。选择的百分比可以是任何合适的百分比,例如大约90%到大约99.7%,优选地,大于95%。因此,例如,利用第二直方图阈值28以及选择的百分比98%,如果98%或更大的图像直方图的光强度等于或高于灰度值28,则方法1500进行到步骤1505。另一方面,如果少于98%的光强度等于或高于灰度值28,则方法1500进行到步骤1540。根据特定实施例,选择的百分比是用户可编程或可配置的(例如,通过扫描光学代码配置或经由光学读码器400的编程菜单)。例如,如果第二阈值2被设定为70,则如果在定义的像素百分比下的当前箱的灰度值大于或等于70,则为了步骤1545的目的,假设物体在图像内,并且如果在定义的像素百分比下的当前箱的灰度值小于70,则假设物体不在图像内。图17B示出了与图17A中的图像1710关联的直方图1720。为了步骤1545的目的,假设图像1710不包括物体,这是因为,如直方图1720所示,在0.5%的定义的像素百分比下的当前箱的灰度值为54,其小于70的第二阈值2。因此,如果在步骤1540获取图像1710并且确定图像1710的亮度小于为70的第二阈值2(例如,current_bin/analog_gain1<阈值2),则为了步骤1545的目的,假设物体不在扫描体积内,并且光学读码器400重复步骤1540(例如,获得另一图像并再次执行步骤1545)。相反,如果图像1630(图16C)在步骤1540被捕捉,则为了步骤1545的目的,假设图像1630不包括物体,这是因为,如直方图1640所示,在0.5%的定义的像素百分比下的当前箱的灰度值为80,其大于为70的第二阈值2。因此,如果在步骤1540获取图像1630,并且确定图像1630的亮度大于或等于为70的第二阈值2(例如,current_bin/analog_gain1≥阈值2),则为了步骤1545的目的,假设物体在扫描体积内,并且方法1500进行到步骤1505。在直方图1640和1720中示出的当前箱的灰度值是设计的示例,以便说明当前箱的灰度值和预定阈值的比较。第二预定阈值(阈值2)可以被设定为更小的值,例如在大约20到大约35的范围内的值。表4列出了与第一照度等级(1510)和第二照度等级(1535)关联的可编程照明设置(例如,用户可配置的参数)的各种使用情况的示例。表格4本文所述的光学读码器(例如,光学读码器100、200和400)优选地包括若干用户可配置的参数,例如可编程的照明设置。例如,当光学读码器400以各种模式中的一个操作(例如,物体检测模式,默认模式,致动模式以及睡眠模式)时,由照明源产生的光学输出可以是用户可编程或可配置的。通过另一个示例的方式,当光学读码器400以各种模式中的一个操作时,脉冲宽度和用于驱动照明源的驱动电流的量可以是用户可编程或可配置的。通过又一个示例的方式,如参考图15所述,第一和第二直方图阈值以及与其关联的选择的百分比可以是用户可编程或可配置的。如前所述,光学读码器400可以通过扫描光学代码配置而被编程或配置。例如,用户可配置的参数可以由光学读码器400从一个或更多光学代码配置(例如,具有用户可配置参数、指令或在其中编码的命令的光学代码)读取。美国专利No.4866257;4861972;以及6612495,其全部内容合并于此以供参考,公开了关于光学读码器如何可以通过扫描光学代码配置或从主计算机下载信息而被配置的示例。可替换地,光学读码器400可以通过进入编程模式(例如,通过浏览光学读码器400的编程菜单)而被编程或配置。例如,显示控制器和显示装置可以经配置显示可浏览的菜单系统或图形用户界面(GUI),该图形用户界面(GUI)允许用户选择和修改(例如,通过用户输入设备)照明设置或其他用户可配置的参数。显示和用户输入设备可以是光学读码器400的一部分,或可以与外部设备关联,所述外部设备例如个人计算机、个人数字助理(PDA)或智能手机。如果外部设备被使用,则照明设置或其他用户可配置的参数可以从外部设备传输到在某些稍后的点处的一个或更多光学读码器。照明设置或其他用户可配置的参数还可以从光学读码器400发送到外部设备以便存储,并且可以备份到其他光学读码器。光学读码器400与外部设备之间的通信可以是有线或无线的,并且可以通过任何合适的数字通信介质包括短距离网络(例如个人局域网)以及长距离网络(例如因特网)来传输数据。此外,或可替换地,具有存储于其上的一个或更多用户可配置的参数的可移动存储器,例如闪存,可以被耦合到光学读码器400,以便在没有使用网络接口的情况下,光学读码器400可以接收用户可配置的参数。再次参考图4,光学读码器400具有与其关联的扫描体积420。从概念上讲,扫描体积420包括在窗口122前面的一部分空间,在所述窗口中,光学代码可以被光学读码器400读取(例如,被检测和解码)。许多因素影响扫描体积420的整体尺寸和形状,例如照明扫描体积的光的强度和类型,与光学读码器400关联的景深(例如,到窗口122的距离,在所述窗口中,光学代码足以被聚焦解码),以及与光学读码器400关联的视场(在景深的远聚焦极限距离)。例如,通过改变照明源110的光学输出,例如通过增加或减少驱动波形的脉冲宽度,通过增加或减少用于驱动照明源110的电流量或通过增加或减少由照明源110投射到扫描体积420中的红外光量,扫描体积420的整体尺寸可以被增加或减少。如果不止一个成像器位于窗口122后面,则光学读码器400可以具有与其关联的多个景深和视场。此外,如果一组N个改向镜(其中N≥1)被提供和配置以将不止一个感兴趣的区域焦距到成像器上,则每个成像器可以包含具有对应的视场的多个视点。换句话说,取代在特定方向(例如,大致平行于X轴)通过窗口查看,扫描器可以利用改向镜在多个方向上有效地通过窗口查看。例如,为了增加扫描体积420,与窗口122关联的扫描器可以包括有效允许扫描器一次在三个方向(例如,平行于X轴,在X轴之上的某角度,用以在垂直向上的方向上扩大扫描体积420,以及在X轴之下的某角度,用以在垂直向下的方向上扩大扫描体积420)上查看的一组改向镜。换句话说,在扫描器的成像器上形成的图像可以被有效分为三个区段。一个区段可以在平行于X轴的方向上通过窗口122查看,另一个区段可以在X轴之上的方向上通过窗口122查看,并且剩下的区段可以在X轴之下的方向上通过窗口122查看。具有多个图像区域的光学读码器的进一步的细节可以在美国申请公开No.2007/0297021中发现,其全部内容合并于此以供参考。虽然本文所述的照明光学读码器的扫描体积的讨论可能参考了不采用改向镜的单个成像器加以说明,但是本文所述的用于照明光学读码器的扫描体积的系统和方法同样适用包括多个成像器的光学读码器,其中的每个成像器可采用一个或更多改向镜。总之,多个成像器和改向镜有助于定义比由不具有改向镜的单个成像器定义的扫描体积更大的扫描体积。例如,扫描体积可以具有更大的尺寸,并且能够读取在扫描体积内具有不同取向的物体上的光学代码,这是因为扫描器能从不同的视点有效查看物体(例如,在扫描体积内没有旋转物体的情况下,光学读码器能够在物体的不同侧面上读取光学代码,这是因为光学读码器能够看到在扫描体积内的物体的顶部,底部和一个或更多侧面)。扫描体积420通常不被尖锐的分界线紧紧束缚。例如,随着移动物体远离理想的聚焦点,在景深内的物体(例如光学代码)的图像数据的锐度逐渐降低。进一步地,视场通常增加聚焦光学系统440的距离。因此,从概念上讲,扫描体积包括靠近光学读码器的一部分空间,在所述空间中,光学代码可以被光学读码器400读取(例如,被检测和解码)。换句话说,扫描体积可以被称为一种体积,在该体积中,具有相对高的成功扫描/读取的可能性。景深和视场概念的高水平概述将参考图18和19连同景深和视场如何相互影响以形成扫描体积的讨论加以描述。图18示出了与单透镜光学读码器关联的示例性景深1800的示意图。景深1800是沿透镜1820的光学轴线1810的距离,其中例如光学代码等物体出现在聚焦中(或至少足以聚焦以检测光学代码的边缘过渡)。被定位在距离透镜1820大约某距离1830的例如光学代码等物体将在距离透镜1820大约某距离1835处被最佳地聚焦。因此,成像器120可以位于大致平行于透镜1820的平面上,并被定位为距离透镜1820大约距离1835。位于距离透镜1820大约距离1840处(即,景深1800的近极限)的物体将在距离透镜1820大约距离1845处被最佳地聚焦。不过,物体在距离透镜1820大约距离1835处(即成像器120的位置)将足以被聚焦以用于解码目的。进一步地,位于距离透镜1820大约距离1850处(即,景深1800的远极限)的物体将在距离透镜1820大约距离1855处被最佳地聚焦。不过,物体在距离透镜1820大约距离1835处(即成像器120的位置)将足以被很好地聚焦以用于解码目的。光圈尺寸或光圈直径1860有助于定义景深1800(即,景深1800的近极限与远极限之间的距离)。例如,减少光圈直径1860增加了景深1800,但还降低了通过透镜1820传输的光量。再次参考图4,扫描体积420被与每个成像器关联的景深束缚在一个方面中。景深本身是透镜与物体之间距离、透镜焦距、光学代码元件尺寸、透镜的光圈直径以及照明的强度和类型的函数。因此,关于与窗口122关联的成像器120,被定位在景深的近极限与远极限之间(并且面向窗口122)的物体上的光学代码足以被聚焦以检测光学代码的边缘过渡。图19示出了与光学读码器关联的示例性景深1900的示意图。视场是正交于透镜的光学轴线的横向范围,其中被定位为距透镜特定距离的物体在光学读码器的成像器上聚焦。成像器的整体尺寸以及成像器相对于透镜的位置,透镜的焦距以及物体距透镜的距离定义了视场。例如,被定位为距透镜1910距离1920并且在正交方向上自透镜1910的光学轴线1915延伸距离1930的成像器120具有距透镜1910距离1925的穿过透镜1910的针孔1940的视场1900。因此,距透镜1910距离1925的物体1960将占用成像器120的全部范围。由于与成像器120关联的尺寸通常是固定的,所以成像器120穿过透镜1910的针孔1940的视场将根据物体距透镜1910的距离而改变(例如,在小于距离1925的距离处,视场变得更小)。因此,视角1950在对可以由成像器120通过透镜1910捕捉的图像的角度范围的描述中也可以是有用的。再次参考图4,扫描体积420被在与每个扫描器关联的景深的远极限处的视场束缚在另一方面中。因此,关于与窗口122关联的成像器120,在被定位在由景深的远极限处的视场束缚的面积内的任何位置中的物体上的光学代码被成像器120捕捉,并足以聚焦以检测其边缘过渡。虽然景深和视场(在景深的远极限)是影响扫描体积的整体大小的两个因素,但其他因素也影响检测光学代码的边缘过渡的能力(并且因而影响扫描体积的整体尺寸),例如照明光学代码的光的强度和类型。实施例可以被提供为计算机程序产品,其包括:非暂时性机器可读存储介质,在其上存储有可以用于对计算机(或其他电子设备)编程以执行本文所述过程或方法的指令(以压缩或非压缩形式)。机器可读存储介质可以包括但不限于:硬盘驱动器、软盘、光盘、CD-ROM、DVD、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、闪存、磁卡或光学卡、固态存储器设备或适于存储电子指令的其他类型的介质/机器可读介质。进一步地,实施例还可以被提供为计算机程序产品,其包括:暂时性机器可读信号(以压缩或非压缩形式)。无论是否使用载波调制,机器可读信号的示例均包括但不限于,可以将计算机系统或保持或运行计算机程序的机器配置为存取的信号,包括通过互联网或其他网络下载的信号。例如,软件的分发可以通过CD-ROM或通过互联网下载。虽然本文公开的实施例已经结合包括1-D代码(例如UPC,以及EAN/JAN条形码)和2-D代码(例如PDF417和Maxicode)的光学代码或条形码进行了讨论,但应当理解,本文所描述的实施例对于使用任何类型的代码或符号(包括指纹采集)的阅读器都是有用的,并且本文所述内容不应被解释为将本公开限制为光学代码或任何其他特定类型的代码。因此,应该意识到,鉴于本文的教义,特定实施例能够实现特定优势,以示例性的方式但不限于包括下列中的一个或更多个:(1)提供用于照明光学读码器的扫描体积的系统和方法;(2)提供包括可编程照明设置的光学读码器;(3)提供光学读码器,其基于使用情况和扫描器模式使用不同的可编程照明以优化用户的视觉效果;(4)提供光学读码器,其基于使用情况和扫描器模式使用不同的可编程照明以维持扫描速度;(5)提供光学读码器,其基于使用情况和扫描器模式使用不同的可编程照明以保持第一读取通过率;(6)提供一种光学读码器,其(a)具有包含相对暗淡的照度设置的默认模式,所述默认模式允许光学代码被读取,但具有图像帧的降低的景深,其中物体被检测,以及(b)可以全工作范围从下一个图像帧读取光学代码;(7)提供光学读码器,其具有覆盖检测图像帧的可定制工作范围;(8)提供光学读码器,所述光学读码器具有默认状态,在所述默认状态中,照度具有短脉冲宽度(暗淡)或仅仅是红光,以改善视觉效果(例如,不是太明亮),同时如果光学代码被扫描通过近场中的扫描体积,则所述光学读码器能够读取光学代码,并且其中由于与近场相比,在远场的视场更大,因此光学读码器能够在远场读取具有第二帧或随后的帧的光学代码;(9)提供光学代码阅读器,其使用更长的照度脉冲或当检测到光学代码时,打开额外的红外照明,以便光学代码可以在整个工作范围内被读取;(10)提供光学代码阅读器,如果在固定的持续时间内,例如十帧内,在扫描体积内没有物体存在,则所述光学读码器返回到默认状态;(11)提供光学读码器,其基于扫描模式应用不同的脉冲宽度或不同的LED组合;(12)提供光学读码器,其优化了视觉亮度并向用户提供关于亮度、景深和扫描速度的灵活性;(13)提供节约能源的光学读码器;(14)提供了包括在正常扫描照度等级与睡眠照度等级(关闭)之间附加的照度等级的光学读码器;(15)提供具有易于在现场配置的扫描体积的光学读码器;(16)提供具有可变扫描体积的光学读码器,所述可变扫描体积可以在任何时间被调节以响应于改变的环境;以及(17)提供包括多个照明模式的光学读码器,其中的每个可以由用户配置。上述使用的术语和说明仅仅通过说明的方式加以阐述,并不意味着限制。技术人员应当明白,在没有偏离本发明基本原理的情况下,可以对上述实施例的细节做出许多改变。很显然,在本文中的任何句子或段落中公开的主题可以与本文中的任何其他句子或段落中的一个或更多个主题组合,只要这种组合不是相互排斥或不可操作的。