毕业设计(论文)-PC COM口与CA-210色彩分析仪的通讯软件.doc_第1页
毕业设计(论文)-PC COM口与CA-210色彩分析仪的通讯软件.doc_第2页
毕业设计(论文)-PC COM口与CA-210色彩分析仪的通讯软件.doc_第3页
毕业设计(论文)-PC COM口与CA-210色彩分析仪的通讯软件.doc_第4页
毕业设计(论文)-PC COM口与CA-210色彩分析仪的通讯软件.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南昌航空工业学院2006学士学位论文pc com口与ca-210色彩分析仪的通讯软件 1 引言1.1 绪论目前,随着计算机行业的飞速发展,pc机得到了广泛普及,而且其性能不断上升的同时,价格却不断下降,因此,在很多场合用它来做上位机是一个性价比很高的选择。为了及时通过通信执行上位机指令或将相应数据传给上位机。本文所编写的通讯软件可以应用于计算机的数据采集。1.2 课题主要内容本文所要设计的软件主要是通过计算机与单片机下位机的互联,ca-210色彩分析仪将从lcos所接收到的数据,使用rs-232-c串口线,通过串口将数据发往pc,pc通过使用mscomm控件由串口接收数据,实现计算机的数据采集,然后将数据实时显示在计算机上,直观显示数据,从而提高生产测试效率。1.3 课题主要意义彩色液晶显示器已经越来越多地用于计算机显示终端。但彩色液晶显示器在色彩还原、对比、视角等光色性能上目前与彩色显像管仍有差异。液晶显示器发光屏的光学特性为液晶透射特性,与lcos显像管荧光粉的漫射发光特性明显不同。目前,采用色彩分析仪测量彩色显像管光色特性,如测量彩色液晶显示器的色品坐标和亮度。由于以上提到的系统的局限性。现在需要一种能够对lcos背投电视进行白平衡调整的仪器。本课题正是在这一背景下面提出的。并分为三个部分。它的最终研究结果将为计算机的数据采集,lcos电视的光色测量。对促进我国lcos背投电视的发展也具有明显的社会意义和经济意义 2 白平衡调整的整体框图2.1 硬件组成白平衡的硬件由lcos液晶电视、ca-210色彩分析仪、rs-232-c串口线、计算机组成。首先把电视的总线接口和色彩分析仪端口相连,其中另一路用来测试lcos的色彩信号直接发送到色彩分析仪里面。再用色彩分析仪的一个串口端和pc的下位机相连。即实现pc和色彩分析仪的实时通信。要注意,在这里是一个串口通信。他们之间的通信协议要我们自己来定。即可以用vc来实现他们的通信协议。另外,我们要用rs-232实现pc和ca-210色彩分析仪的互联。如图2-1所示。图2-1 白平衡调整整体框图对于白平衡调整的硬件来说,首先pc发送校零指令给ca-210色彩分析仪,如果校零错误,则对校零错误进行提示,如果校零成功,则启动ca-210色彩分析仪进行测量。然后将数据发往pc。如图22所示。图2-2 白平衡调整的硬件流程2.2 lcos液晶电视lcos液晶电视使用的技术是结合了半导体与lcd技术,具有高解析度、高亮度的特性,产品结构简单。现有lcos光学引擎在产品重量、亮度上仍不甚理想。 2.2.1 lcos投影技术投影机技术基本显影原理相仿,主要是由卤素灯、氙气灯等发光,集光至面板,将面板的影像经反射或透射投射出影像,再经过分光、合光系统,最后将影像投射到屏幕显像。lcos(liquid crystal on silicon) 为投影技术的新兴技术。1lcos面板:lcos面板的结构有些类似tft lcd,一样是在上下二层基板中间散布spacer加以隔绝后,再填充液晶于基板间形成光阀,藉由电路的开关以推动液晶分子的旋转,以决定画面的明与暗。lcos面板的上基板是ito导电玻璃,下基板是则单晶硅cmos基板,lcos面板最大的特色在于下基板的材质是单晶硅,因此拥有良好的电子移动率,而且单晶硅可形成较细的线路,因此与现有的htps lcd及dlp投影面板相较,lcos是比较容易达成高解析度的投影技术。lcos面板结构如图2-3所示。图2-3 lcos面板结构2、lcos光学引擎架构在这些不同的技术中,可分为三片式及单片式二大类,说明如下:(1)三片式光学引擎lcos光学引擎目前以三片式为主,三片式是将光源经分光棱镜将光束分为红、蓝、绿光后,再分别将光束投射入三片lcos面板,将投射出的三色影像经过合光系统加以结合形成彩色影像。就nikon设计的ibm 4-cube光学引擎架构来看,由于三片式lcos光学引擎除了需要三片面板外,并结合多项的分光、合光光学系统,因此体积较大、成本也较高,除此之外,三片式光学引擎还有colorlink采用的colorquard架构、philips的prism架构,致伸发展的dichroic-pbs架构,及unaxis的colorcorner架构等。ibm 4-cube光学引擎架构如下图24所示。图2-4 ibm 4-cube光学引擎架构(2)单片式光学引擎单片式color wheel光学引擎则是以快速旋转的colorswitch将白光形成循序的红、蓝、绿光,并将三原色光与驱动程式产生的红、蓝、绿画面,同步形成分色影像,再藉由人眼视觉暂留的特性,最后在人脑产生彩色的投影画面。类似的技术有:displaytech发表的field sequential color、philip所采用的scrolling color-rotating prism架构、及jvc采用的spatial color-hologram架构。单片式的最大优点就是因为面板数仅需一片,加上分光、合光的系统架构比较简单,而且光学引擎的空间也相对较小。然而目前在技术上面临一些困难,以color wheel而言,白光经偏极化后的光源仅为先前的1/3,亮度明显降低;此外,由于lcos面板得在红、蓝、绿画面快速的切换下合成影像,因此对面板的反应速度的要求更高。2.2.2 lcos投影技术特色与lcd、dlp投影机技术相较,lcos投影技术具高解析度、高亮度、成本低。1、高解析度lcos投影技术最大的特色在于其面板的下基板采用单晶硅cmos基板,由于下基板的材质是单晶硅,拥有良好的电子移动率,而且单晶硅可形成较细的线路,因此比较容易达成高解析度的面板。2、高亮度lcos为反射式技术,不会像htps lcd光学引擎会因为光线穿透面板而大幅降低光利用率,因此光利率可提高至40%,与穿透式的htps lcd的3%相较,可减少耗电,并可产生较高的亮度。3、低成本lcos光学引擎因为产品零件简单,因此具有低成本的优势。然而lcos技术本身,仍有许多技术问题有待克服,例如:黑白对比不佳、三片式lcos光学引擎体积较大。2.2.3 lcos产业现况及发展趋势以目前主要的投影机技术lcd、dlp、lcos而言,lcos属于新兴的投影技术。相对于目前的主流技术lcd及近期相当热门的dlp面板投影技术而言,lcos仍难与其抗衡,不过因具有高解析度、以降低成本的低价的优势,lcos仍是相当被看好的投影技术之一。lcos在技术克服后,将是相当具有竞争优势的投影技术。不过在目前的情况下,lcos有朝二极发展;大尺寸的背投影电视、与小尺寸的高阶可携式产品。有机会成为前投影机的主要技术之一。虽然lcos面板技术相当具有潜力,不过就技术现况来看,lcos虽然在解析度上优于lcd及dlp技术,然而在重量、亮度及对比上均较为不如,因此,目前lcos在前投影机产品中较不具竞争力,不过在画面质量上要求较高,对于体积较大的背投影电视而言,提供了lcos较佳的成长空间。2.4 ca-210色彩分析仪ca-210色彩分析仪速度大,用于亮度和色度的测量,专为测量液晶体显示器而设计;其测量速度最高可达每秒20次;也可以测量低至0.1cd/m2的低亮度,适用于gamma参数测量,用于测量和调整特性曲线;其精度高白色 0.002 rgb单色 0.004,符合cie1931标准观察者的xyz滤色片,短至30+-10mm的测量距离,能够建立更小型的测量系统特殊的光学设计,使得测量角仅在2.5度内,消除了不同lcd测量角度下的影响4位数字显示色度测量结果,使得读取的测量结果更精确。如下图27。图2-7 ca-210色彩分析仪ca-210色彩分析仪用适用于lcd面板,lcd监视器,lcd tv色彩调整和检测,色彩色度的质量控制,白平衡调试。ca-210色彩分析仪的光路系统特性:ca-210 使用了特别的光路系统,适合测量lcos光路系统的主要部件是物镜、光纤、芯片透镜、传感器。从光源发出的光线被聚焦在光纤模块的接受窗上,然后在模块内混合并被分成三份,接着被引导到传感器上。这里,光线是利用芯片透镜聚焦到传感器上的。图2-8 ca-210光学系统 低亮度测量再低亮度下要获得精确的测量值,最关键的步骤是减少在引导到传感器过程中光线的损失。在通常的系统中,采集的光线穿过物镜,然后直接聚焦在三块传感器上。但是,这种方法有一个问题,就是光线也会聚焦到传感器以外的区域,所以光线损失比较大。ca-210 使用了光纤,所以相比与以前,在传送到传感器的过程中,光线的损失减少了。采集的光线先被聚焦在光纤模块的接受窗上,然后通过光纤直接传到芯片透镜上,再依靠它将光线聚焦到传感器上。这样,传送过程中的损失降低到了最少,使得在低亮度下获得精确的测量值变成可能。图2-9 光学系统的测量 窄视角/通用视角当一个人观看显示屏时,他接受光线是一个相对较窄的角度。因此,为了得到与人眼相对应的亮度与色度测量值,测量设备有相同的窄视角是必要的。另外,由于lcos特征,在不同视角下会得到不同的测量值。ec61747-6(定义了lcos方法),规定了测量lcos备的视角必须在5以内(视角在图中为1、2、3、1、2、3)。ca-210 的视角为5,所以符合iec 标准的要求。对于以前的测量仪器,当测量头放置后,所测量的轴会垂直于被测物体的表面,测量位置的不同不会导致视角的差别(如图中1、2、3),但我们观察被测物体表面相关于法线的视角(如图中虚线),最大的角度(如图中1、3)是不同的。在测量区域的边缘,视角以外的光线也被采集到了。ca-210 使用了特殊的光路系统,当测量口径为27mm 时,采集光线的角度关于被测物体表面上每一点的法线对称。由于ca-210 的视角为5,采集的光线相对于表面法线2.5(如图所示)。图2-10 窄视角和通用视角的测量2.4 rs-232-c串口2.4.1 rs-232-c概述rs-232-c标准是美国eia(电子工业协会)于bell等公司一起开发并于1969年公布的通信协议。它适合于数据传输速率在020 000bit/s范围内的通信。itu(国际电信同盟)和ccitt(国际电话与电报顾问委员会)发布了一个类似的标准v.28。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。 由于通信设备厂商都生产与rs-232-c制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用,它不仅已被内置于每一台计算机,同时也已被内置于从微控制器到主机的多种类型的计算机及其相连的设备。rs-232常用于连接到一个modem,其他拥有rs-232接口的设备包括打印机、数据采集模块、测试装置和控制回路。另外,rs-232也可以直接应用于任何类型的计算机之间的简单连接上。rs-232有几个优点1. rs-232应用广泛。每一台pc都有一个或多个rs-232端口。更新的计算机现在支持其他诸如usb这样的串行接口,但是rs-232可以做很多usb无法进行的工作。在微控制器中,接口芯片使得一个5v串口转换成rs-232变得非常容易。2. 连接距离可以达到50100英尺。usb连接最长可以达到16英尺,pc机的并行打印机接口与主机之间的距离可以达到1015英尺,或者利用ieee-1284b型驱动器可以达到30英尺。如果rs-232端口与modem相连,则可以在世界范围内接收和传送数据。3.对于双向连接,只需要3条导线。而并行连接一般需要8条数据线、两条或者更多的控制线信号线和几条接地线,这使得连接成本也比较高。终端与计算机之间的通信或计算机与计算机之间的通信,通称为数据通信。数据通信发送方为信源,接收方为信宿。连接信源和信宿的通道为通信通道或通信线路,由于在通信过程中没有人的直接参与,因此必须通过相同的传输规则才可以使得通信双方协调、稳定、可靠地工作。数据通信技术综合了计算机和通信技术,一个数据通信系统的基本构成如下图示26所示。图26 数据通信系统的基本构成数据通信发送方为信源,接收方为信宿。连接信源和信宿的通道为通信通道(简称信道)或通信线路,它可以是电缆、电话线等。数据通信与电话通信不同,由于在通信过程中没有人的直接参与,因此必须通过相同的传输规则才可以使得通信双方协调、稳定、可靠地工作。数据电路加上传输控制规则称为数据链路。在数据通信系统中,用于接收和发送数据的设备称为数据终端设备dte。dte既可以是一台计算机,也可以是一台只接受数据的打印机。用来连接与数据通信网络的设备称为数据通信设备dce或称为数据电路终结设备。dce可以是一个调制解调器,也可以是一个简单的线路驱动器。目前最广泛使用的数据传输信道就是模拟电话线路。计算机所能处理的数字信号不能直接进入这样的信道,它们必须经过一个中间连接设备modem, modem是最重要的dce设备之一,用它来实现数字信号到模拟信号、模拟信号到数字信号的相互转换。在讨论rs-232-c接口标准的内容之前,应说明两点:首先,rs-232-c标准最初是远程通信连接数据终端设备dte与数据通信设备dce而制定的。因此标准的制定,并未考虑计算机系统的应用要求。但目前它又广泛地被用于计算机与终端或外设之间的近端连接标准。显然,这个标准的有些规定和计算机系统不是一致的,甚至是相矛盾的。有了对这种背景的了解,对rs-232-c标准与计算机不兼容的地方就不难理解了。其次,rs-232-c标准只提到的“发送”和“接收”都是站在dte立场上,而不是站在dce的立场来定义的。由于在计算机系统中,往往是cpu和i/o设备之间传送信息,两者都是dte,因此双方都能发送和接收。2.4.2 rs-232-c的接口信号rs-232-c标准接口有25条线、4条数据线、11条控制线、3条定时线、7条备用和未定义线。常用的只有9根,它们是:(1)联络控制信号线数据装置准备号(data set ready-dsr),其状态为有效(on),表明modem处于可以使用的状态。数据终端准备好(data terminal ready-dtr),其状态为有效(on),表明数据终端可以使用。这两个信号有时连到电源上,一上电就立即有效。这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。请求发送(request to send-rts),用来表示dte请求dce发送数据,即当终端要发送数据时,使该信号有效(on状态),向modem请求发送。它用来控制modem是否要进入发送状态。允许发送(clear to send-cts),用来表示dce准备好接收dte发来的数据,是对请求发送信号有效(on)状态,当modem已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线txd发送数据。这对rts/cts请求应答联络信号时用于半双工modem系统中发送方式和接收方式之间的切换。在全双工系统中作发送方式和接收方式之间的切换,在全双工系统中,因配置双向通道,故不需要rts/cts联络信号,使其变高。接收信号检出(receive line detection-rlsd),用来表示dce已接通通信链路,告知dte准备接收数据。当本地的modem收到由通信链路另一端(远地)的modem送来的载波信号时,使rlsd信号有效,通知终端准备接收,并且由modem将接收下来的载波信号解调成数字量数据后,沿接收数据线rxd送到终端。此线也叫做数据载波检出线。振铃指示(ringing-ri)当modem收到交换台送来的振铃呼叫信号时,使该信号有效(on状态),然后通知终端,已被呼叫。(2)数据发送与接收发送数据(transmitted data-txd)通过txd终端将串行数据发送到modem(dtedce)。接收数据(received data-rxd)通过rxd线终端接收从modem发来的串行数据(dcedte)。(3)地线有两根线sg、pg信号地和保护地信号线,无方向。上述控制信号线何时有效,何时无效的顺序表示了接口信号的传送过程。例如,只有当dsr和dtr都处于有效(on)状态时,才能在dte和dce之间进行传送操作。若dte要发送数据,则预先将dtr线置成有效(on)状态,等cts线上收到有效(on)状态的回答后,才能在txd线上发送串行数据。这种顺序的规定对半双工的通信线路特别有用,因为半双工的通信才能确定dce已由接收方向改为发送方向,这时线路才能开始发送。2.4.3 rs-232-c基本接线方法rs-232-c接口有9针和25针的连接器两种,表1简介了两种类型的连接器的针脚与信号对应关系及功能说明,其中rts(kequest to send)用来表示dte请求dce发送数据;cts(clear to send)允许发送,用来表示dce准备好接收dte发来的数据,是对rts的响应信号;bcd表示dce已接通通信链路,告知dte准备接收数据。rtscts只用于半双工,不适用于全双工。表2介绍了rs-232-c串口通信基本接线方法,其中最简单的连接方法为:同一串口的接收脚和发送脚直接相连,即2脚和3脚相连。表1 rs-232-c常用信号脚说明9针串口25针串口针号功能说明缩写针号功能说明缩写1数据载波检测dcd8数据载波检测dcd2接收数据rxd3接收数据rxd3发送数据txd2发送数据txd4数据终端准备dtr20数据终端准备dtr5信号地gnd7信号地gnd6数据设备准备号dsr6数据设备准备号dsr7请求发送rts4请求发送rts8清除发送cts5清除发送cts9振铃指示dell22振铃指示dell 表2 rs-232-c 接口连接针脚连接9针9针25针25针9针25针233222322333557757串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连都可以实现数据的传输。同一个串口的接收脚和发送脚直接用线相连,对9针串口和25针串口,均是2与3脚直接相连。 对于本论文所要涉及的com口,即串行通讯端口。微机上的com口多为9针,最大速率115200bps。通常用于连接鼠标(串口)及通讯设备(如连接外置式modem进行数据通讯)等。但目前主流的主板一般都只带1个串口,甚至不带。3 mscomm控件3.1 mscomm控件的介绍mscomm是微软提供的,功能较完善,而且可以对中文进行处理,mscomm通过串口端口发送和接收数据,为应用程序提供串行通信功能。mscomm控件进行串口编程的基本步骤:(1) 在建立的程序工程中插入microsoft communications control控件;(2) 添加mscomm控件id的控制变量(或者对象);(3) 添加串口进行初始化,设置mscomm控件的属性;(4) 添加串口事件的消息处理函数oncomm()函数,在函数中根据应用需要,编写数据处理代码;(5) 编写串口发送等其他代码;(6) 关闭串口;mscomm提供了一系列标准通信命令的使用接口;利用它可以建立与串口的连接,并可以通过串口连接到其他通信设备,发出命令,交换数据以及监视和响应串行连接中发生的事件和错误。mscomm控件可用于创建电话拨号程序、串口通信程序和功能完备的终端程序。具体来说,mscomm控件提供了两种处理通信问题的方法:一是事件驱动法,二是查询法。1.事件驱动方式事件驱动方式是处理串行端口交互作用的一种非常有效的方法。在许多的情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者carrier detect(cd)或request to send (rts)线上一个字符到达或一个变化发生时。在这些情况下,可以利用mscomm控件的oncomm事件捕获并处理这些通信事件。oncomm事件还可以检查和处理通信错误。在编程过程中,就可以在oncomm事件处理函数中加入自己的代码。这种方法的优点时程序响应及时,可靠性高。每个mscomm控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个mscomm。2.查询方式查询方式实质上也是属于事件驱动方式,但在有些情况下,这种方式显得更为便捷,在程序的每个关键功能之后,可以通过检查commevent属性的值来查询事件和错误,只要commevent属性的值有了变化,就表明一个通信事件或一个错误发生。如果应用程序较小,并且时自成一体的,这种方法可能时更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接受一个字符都产生事件,因为惟一等待接受的字符时调制解调器的“确定”响应信息。在pc串行端口通信时,使用了十几条进行信号传输。利用mscomm控件开发串口通信软件,至少需要了解以下五条线的名称及其作用,这5条线的高低电平状态分别对应mscomm控件相应属性的true/false值。l dtr线: 用于传输pc发往串口modem等设备的信号,该信号表示pc是否已经准备好。l rts线: 用于传输pc发往串口modem等设备的信号,该信号表示pc是否允许modem发数据。l dsr线: 用于传输串口modem等设备发往pc的信号,该信号表示modem等设备是否已经做好操作准备。l cts线: 用于传输串口modem等设备发往pc的信号,该信号表示modem是否已经允许发送数据。l cd线: 用于传输串口modem等设备发往pc的信号,该信号表示modem已经和远方的设备建立了联系。3.2 mscomm控件的属性mscomm控件有很多重要的属性,但首先必须熟悉几个属性:commport设置并返回通信端口号;settings以字符串的形式设置并返回数据传输数率、奇偶校验、数据比特、停止比特;portopen设置并返回通信端口的状态;也可以打开和关闭端口;input从接收缓冲区返回和删除字符;output向传输缓冲区写一个字符串。下面分别描述mscomm控件的属性:(1) commport属性void setcommport(short nnewvalue);short getcommport();这一属性用于设置并返回连接的串行端口号,windows将会利用该串口和外界通信.在设计时,nnewvalue可以设置成从116的任何数(默认值为1).但是如果用portopen属性打开一个并不存在的端口时, mscomm控件会产生错误68(设备无效)。 注意:必须在打开端口之前设置commport属性。 (2) settings属性 void setsettings(lpctstr lpsznewvalue);string getsettings(0);该属性用于设置并返回数据传输速率、奇偶校验、数据比特、停止比特参数。当端口打开时,如果value非法,则mscomm控件产生错误380(非法属性值)。其中lpsznewvalue用字符串表示,由四个设置值组成,有如下的组成格式: “bbbb,p,d,s”这里bbbb为数据传输速率,p为奇偶校验,d为数据比特数,s为停止比特数,value的默认值时:“9600,n8,1”,注意:只有当通信的双方的settings属性值都一样时,通信连接才能生效。(3) inputmode属性void setinputmode(long nnewvalue);long get inputmode();inputmode属性值用于设置或者返回传输数据的类型,当其值为0时,通过input 属性以文本方式取回数据;当其值为1时,通过input属性以二进制方式检取回数据。(4) inputlen属性 void setinputlen(short nnewvalue);short getinputlen();inputlen属性值用于设置并返回input属性从接收缓冲区读取的字符数. nnewvalue是short型数值,说明input属性从接收缓冲区读取的字符数。 inputlen属性的默认值是0。当设置inputlen为0时,使用input将使mscomm控件读取接收缓冲区中全部的内容。若接收缓冲区中inputlen字符无效, input属性返回一个零长度字符串(“”) ,在使用input属性前,用户可以选择检查inbuffercount属性来确定缓冲区中是否已有需要数目的字符。该属性在从输出格式为定长数据的机器读取数据时非常有用。(5) inbuffersize属性void setinbuffersize(short nnewvalue);short getinbuffersize();inbuffersize属性用于设置或返回输入缓冲区的大小,默认值为1024字节。(6) inbuffercount属性void setinbuffercount(short nnew);short getinbuffercount();inbuffercount属性用于返回输入缓冲区内的等待读取的字节个数,可以通过该属性值为0来清除接收缓冲区。(7) input属性variant getinput();input属性表示从接收缓冲区移走一串字符,将缓冲区中收到的数据读入变量.属性值为variant型变量。该属性在端口未打开时不可用,在运行时时只读。注意:当inputmode属性值为0时(文本模式),变量中含string型数据。当inputmode属性值为1(二进制模式时),变量中含byte型数组数据。(8) portopen属性void setportopen(bool bnew value);bool getportopen();portopen属性用于打开或者关闭端口.如果bnew value设为true,可以打开端口;设为false时可以关闭端口。一般情况下在程序开始时打开端口,在程序结束时关闭端口。当应用程序终止时, mscomm控件将自动关闭串口。在打开端口前,确定commport属性设置为正确的端口号。而且,用户的串口设备必须支持settings属性中的设置,如果硬件设备比支持settings属性中的一些设置,则硬件工作或许不正确。(9) outbuffersize属性void setoutbuffersize(short nnewvalue);outbuffersize属性用于设置或者返回发送缓冲区的大小,值为整型表达式,表示传输缓冲区的字节数,默认值为512字节,对发送缓冲区设置得越大,应用程序可以使用得内存就越少。然而,如果发送缓冲区太小,缓冲区将会溢出,除非使用握手协议。(10) outbuffercounter属性 void setoutbuffersize(short nnewvalue);short getoutbuffersize();outbuffercounter属性用于返回发送缓冲区内等待发送得字节数,可以通过设置该属性为0来清空发送缓冲区。(11) output属性 void setoutput(const variant&new value);output属性用于向发送缓冲区写数据流。属性为variant变量。该属性在端口未打开时不可用,在运行时是只写得。注意:output属性可以发送文本数据或二进制数据。传输文本数据时,应该将字符型数据放入variant型标量中;传输二进制数据(即按字节传送)时,应该将字节型数据放入variant型变量中,如果通常给应用程序发送ansi字符串,可以以文本方式发送。如果数据包含了内嵌控制字符、null字符等,必须将其作为二进制传递过去。(12) commevent属性 short getcommevent();如果在通信过程中发生错误或事件,将会引发oncomm事件并且改变其属性值。commevent属性值反映错误或者事件类型,通信程序在设计中可以根据该属性值来执行不同的操作。该属性在端口未打开时不可用,在运行时是只读的。(13) dtrenable属性void setdtrenable(bool bnew value); bool getdtrenable();dtrenable属性确定再通信是否使dtr(data terminal ready)线有效,dtr使计算机发送到调制解调器的信号,表明计算机在等待数据传输。(14) rtsenable属性void setrtsenable(bool bnewvalue); bool getrtsenable();rtsenable属性确定是否使rts(request to send);线有效,一般情况下,由计算机发送rts信号到连接的调制解调器,请求允许发送数据。(15) eofenable属性void seteofenable(bool bnewvalue); bool geteofenable();eofenable属性确定在输入过程中mscomm控件是否寻找文件结尾(eof)字符。如果找到eof字符,将停止输入并激活oncomm事件,此时commevent属性设置为comeveof,这里bnewvalue为布尔表达式,当确定找到eof字符时,oncomm事件是否被激活,当bnewvalue的设置值true时,eof字符找到时oncomm事件被激活,否则当value值设为false(缺省)时,eof字符找到时oncomm事件不被激活。(16) cdholding属性void setcdholding(bool bnewvalue); bool getcdholding();通过查询carrier detect(cd)线的状态确定当前是否有传输。carrier detect是从调制解调器发送到相联计算机的一个信号,指示调制解调器正在联机。该属性在设计时无效,在运行时为只读。属性的设置值为:当bnewvalue为true时,carrier detect线为高电平;当bnewvalue为false,carrier detect线为低电平。注意当carrier detect线为高电平(cdholdingtrue)且超时时,mscomm控件设置commevent属性为comeventcdto(carrrier dectect 超时错误),并产生oncomm事件。(17) dsrholding属性void setdsrholding(bool bnewvalue);bool getdsrholding(); 确定data set ready(dsr)线的状态。data set ready信号由调制解调器发送到相连计算机,指示作好操作准备。该属性在设计时无效,在运行时为只读。dsrholding属性返回为true时,表示data set ready线高,dsrholding属性在返回值为false时,表明data set ready线低。当data set ready线为高电平(dsrholdingtrue)且超时,mscomm控件设置commevent属性为comeventdsrto(数据准备超时)并产生oncomm事件。当为data terminal equipment(dte)机器写data set ready/data terminal ready握手例程时该属性时十分有用的。3.3 mscomm控件的优点mscomm控件可以通过串口发送和接收数据,为应用程序提供串行通信功能。使用非常方便。在此次设计的通讯软件中,通过使用mscomm控件来接收数据的,也可以通过windows api编程来控制串口,从而接受数据,不过需要进行编程,而mscomm控件将通信的大部分底层都封装在控件内部,应用程序只需要获取和设置相应的mscomm控件属性就可以,从而简化了编程工作。4 pc与ca-210色彩分析仪通讯软件的设计 整个白平衡调整软件的结构包括通信端口参数设置,色彩基准设置,接收ca-210数据进行分析处理,数据实时显示四个部分。系统图4-1所示。图4-1 白平衡调整软件结构图软件实现了设置通信口,设置基准色彩,实时显示测试数据,直观显示数据差异。本文包括设置通信参数口和接收数据。串口的工作流程如下图4-2所示。图4-2 串口的工作流程由ca-210色彩分析仪将数据发送给pc com口,com口接收数据,指定字节的长度,在本文中字节长度为16位,如果接收的数据超过指定的长度,重新接收一组数据。否则将数据放入缓冲区,如果缓冲区存在有效数据,则读出有效数据,再接收下一组数据,否则放弃该组数据,重新接收一组数据。4.1设置通信参数口打开microsoft visual c+ 6.0出现如图4-3界面。图4-3 microsoft visual c+ 6.0的主界面点击图4-3中文件菜单,选择新建,即设置一个新的工程,则弹出如图4-4对话框。工程名取为ca120。图4-4 设置工程对话框点击确定键后,弹出图4-5对话框,选择创建的应用程序类型。图4-5选择创建的应用程序类型选择d基本对话框单击完成,进入编辑对话框界面,添加如图4-6所示。图4-6 编辑串口参数设置对话框通信设置参数包括串口选择,波特率选择,奇偶校验,数据位,停止位,由于大多数计算机最多带有两个com接口,所以串口参数选择位com1和com2,在软件中我们用1代表com1,用2代表com2。波特率即信号单元变化的频率,一般其值设为9600,19200,38400。奇偶校验其值一般设为n,o,d。n为不进行奇偶校验,o为进行奇校验,d为进行偶校验。数据位其值一般设为8,7,6。停止位一般设为2,1。pc通过串口接收由ca-210色彩分析仪发送过来的数据,因此pc的串口参数设置必须和ca-210色彩分析仪的设置相匹配。由于ca-210色彩分析仪波特率设为9600,数据位为7,停止位为2,奇偶校验为偶校验时,com口所接受到的数据最稳定。因此pc的串口参数设置为9600,7,2,d。串口参数设置对话框的id为comdlg,类名取为comsettings。其源文件comsettings.cpp代码为实现图4-5对话框的功能如下所示:#include stdafx.h#include ca120.h#include omsettings.h#ifdef _debug#define new debug_new#undef this_filestatic char this_file = _file_;#endif/ comsettings dialogcomsettings:comsettings(cwnd* pparent /*=null*/): cdialog(comsettings:idd, pparent)/afx_data_init(comsettings)m_strbaudrate = _t(); /波特率的字符变量m_strcomsel = _t(); /串口的字符变量m_strdatabit = _t(); /数据位的字符变量m_strpairty = _t(); /奇偶的字符变量m_strstopbit = _t(); /停止位的字符变量/afx_data_initvoid comsettings:dodataexchange(cdataexchange* pdx)cdialog:dodataexchange(pdx);/afx_data_map(comsettings)ddx_control(pdx, idc_stopbit, m_ctrlstopbit);ddx_control(pdx, idc_pairty, m_ctrlpairty);ddx_control(pdx, idc_databit, m_ctrldatabit);ddx_control(pdx, idc_baudrate, m_ctrlbaudrate);ddx_control(pdx, idc_comsel, m_ctrlcomsel);ddx_cbstring(pdx, idc_baudrate, m_strbaudrate);ddx_cbstring(pdx, idc_comsel, m_strcomsel);ddx_cbstring(pdx, idc_databit, m_strdatabit);ddx_cbstring(pdx, idc_pairty, m_strpairty);ddx_cbstring(pdx, idc_stopbit, m_strstopbit);/afx_data_mapbegin_message_map(comsettings, cdialog)/afx_msg_map(comsettings)/afx_msg_mapend_message_map()/ comsettings message handlersvoid comsettings:onok() updatedata(true); /程序会对控件对应的变量值进行刷新m_ncom = m_ctrlcomsel.getcursel() + 1; /得到选中下拉列表框中数据的索引值m_strcomsettings = m_strbaudrate +, + m_strpairty +, + m_strdatabit +, + m_strstopbit; /将串口参数设置传递给变量m_strcomsettingscdialog:onok();bool comsettings:oninitdialog() cdialog:oninitdialog();/ todo: add extra initialization herem_ctrlcomsel.setcursel(0); /设置组合框显示串口选择的第一项内容m_ctrlbaudrate.setcursel(0);m_ctrlpairty.setcursel(0);m_ctrldatabit.setcursel(1); /设置组合框显示数据位的第二项内容m_ctrlstopbit.setcursel(0); return true; / return true unless you set the focus to a control / exception: ocx property pages should return 运行后得到如下图4-7对话框:图4-7 串口参数设置对话框4.2 接收数据pc通过mscomm控件从串口接收数据,其接收数据的主界面如下图4-8所示。图4-8 软件的主界面主界面实现的功能和编程的代码包括几个部分,对通信串口进行初始化,接受数据,处理数据,对数据直观显示。而本文所要涉及是前两个部分,即对通信串口进行初始化和接受数据。主界面的类名为ca120view,在其源文件ca120view.cpp中,对串口初始化的函数名取为initcommset()。m_comca120为主界面的全局变量。设置输入缓冲区的大小,单位为bytes,语句为m_comca120.setinbuffersize(1024)。设置发送缓冲区的大小,单位为bytes,语句为m_comca120.setoutbuffersize(512)。设置输入方式为二进制,语句为m_comca120.setinputmode(1)。读取缓冲区中的全部内容,语句为m_comca120.setinputlen(0)。清除接收缓冲区中的内容,释放缓冲区,语句为m_comca120.setinbuffercount(0)。接收缓冲区收到的每一个字符都会使mscomm控件产生oncomm事件。语句为m_comca120.setinbuffercount(0)。对于pc com口与ca-210色彩分析仪的通讯,最关键的使要接收到ca-210发来的数据,实现接收数据的功能,使用如下代码:variant variant_inp; /定义一个variant型变量colesafearray safearray_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论