版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、pc com口與ca-210色彩分析儀的通訊軟件 1 引言1.1 緒論目前,隨著計算機行業(yè)的飛速發(fā)展,pc機得到了廣泛普及,而且其性能不斷上升的同時,價格卻不斷下降,因此,在很多場合用它來做上位機是一個性價比很高的選擇。為了及時通過通信執(zhí)行上位機指令或將相應數(shù)據(jù)傳給上位機。本文所編寫的通訊軟件可以應用于計算機的數(shù)據(jù)采集。1.2 課題主要內容本文所要設計的軟件主要是通過計算機與單片機下位機的互聯(lián),ca-210色彩分析儀將從lcos所接收到的數(shù)據(jù),使用rs-232-c串口線,通過串口將數(shù)據(jù)發(fā)往pc,pc通過使用mscomm控件由串口接收數(shù)據(jù),實現(xiàn)計算機的數(shù)據(jù)采集,然后將數(shù)據(jù)實時顯示在計算機上,直觀
2、顯示數(shù)據(jù),從而提高生產測試效率。1.3 課題主要意義彩色液晶顯示器已經越來越多地用于計算機顯示終端。但彩色液晶顯示器在色彩還原、對比、視角等光色性能上目前與彩色顯像管仍有差異。液晶顯示器發(fā)光屏的光學特性為液晶透射特性,與lcos顯像管熒光粉的漫射發(fā)光特性明顯不同。目前,采用色彩分析儀測量彩色顯像管光色特性,如測量彩色液晶顯示器的色品坐標和亮度。由于以上提到的系統(tǒng)的局限性。現(xiàn)在需要一種能夠對lcos背投電視進行白平衡調整的儀器。本課題正是在這一背景下面提出的。并分為三個部分。它的最終研究結果將為計算機的數(shù)據(jù)采集,lcos電視的光色測量。對促進我國lcos背投電視的發(fā)展也具有明顯的社會意義和經濟意
3、義 2 白平衡調整的整體框圖2.1 硬件組成白平衡的硬件由lcos液晶電視、ca-210色彩分析儀、rs-232-c串口線、計算機組成。首先把電視的總線接口和色彩分析儀端口相連,其中另一路用來測試lcos的色彩信號直接發(fā)送到色彩分析儀里面。再用色彩分析儀的一個串口端和pc的下位機相連。即實現(xiàn)pc和色彩分析儀的實時通信。要注意,在這里是一個串口通信。他們之間的通信協(xié)議要我們自己來定。即可以用vc來實現(xiàn)他們的通信協(xié)議。另外,我們要用rs-232實現(xiàn)pc和ca-210色彩分析儀的互聯(lián)。如圖2-1所示。圖2-1 白平衡調整整體框圖對于白平衡調整的硬件來說,首先pc發(fā)送校零指令給ca-210色彩分析儀,
4、如果校零錯誤,則對校零錯誤進行提示,如果校零成功,則啟動ca-210色彩分析儀進行測量。然后將數(shù)據(jù)發(fā)往pc。如圖22所示。圖2-2 白平衡調整的硬件流程2.2 lcos液晶電視lcos液晶電視使用的技術是結合了半導體與lcd技術,具有高解析度、高亮度的特性,產品結構簡單?,F(xiàn)有l(wèi)cos光學引擎在產品重量、亮度上仍不甚理想。 2.2.1 lcos投影技術投影機技術基本顯影原理相仿,主要是由鹵素燈、氙氣燈等發(fā)光,集光至面板,將面板的影像經反射或透射投射出影像,再經過分光、合光系統(tǒng),最后將影像投射到屏幕顯像。lcos(liquid crystal on silicon) 為投影技術的新興技術。1lco
5、s面板:lcos面板的結構有些類似tft lcd,一樣是在上下二層基板中間散布spacer加以隔絕后,再填充液晶于基板間形成光閥,藉由電路的開關以推動液晶分子的旋轉,以決定畫面的明與暗。lcos面板的上基板是ito導電玻璃,下基板是則單晶硅cmos基板,lcos面板最大的特色在于下基板的材質是單晶硅,因此擁有良好的電子移動率,而且單晶硅可形成較細的線路,因此與現(xiàn)有的htps lcd及dlp投影面板相較,lcos是比較容易達成高解析度的投影技術。lcos面板結構如圖2-3所示。圖2-3 lcos面板結構2、lcos光學引擎架構在這些不同的技術中,可分為三片式及單片式二大類,說明如下:(1)三片式
6、光學引擎lcos光學引擎目前以三片式為主,三片式是將光源經分光棱鏡將光束分為紅、藍、綠光后,再分別將光束投射入三片lcos面板,將投射出的三色影像經過合光系統(tǒng)加以結合形成彩色影像。就nikon設計的ibm 4-cube光學引擎架構來看,由于三片式lcos光學引擎除了需要三片面板外,并結合多項的分光、合光光學系統(tǒng),因此體積較大、成本也較高,除此之外,三片式光學引擎還有colorlink采用的colorquard架構、philips的prism架構,致伸發(fā)展的dichroic-pbs架構,及unaxis的colorcorner架構等。ibm 4-cube光學引擎架構如下圖24所示。圖2-4 ibm
7、 4-cube光學引擎架構(2)單片式光學引擎單片式color wheel光學引擎則是以快速旋轉的colorswitch將白光形成循序的紅、藍、綠光,并將三原色光與驅動程式產生的紅、藍、綠畫面,同步形成分色影像,再藉由人眼視覺暫留的特性,最后在人腦產生彩色的投影畫面。類似的技術有:displaytech發(fā)表的field sequential color、philip所采用的scrolling color-rotating prism架構、及jvc采用的spatial color-hologram架構。單片式的最大優(yōu)點就是因為面板數(shù)僅需一片,加上分光、合光的系統(tǒng)架構比較簡單,而且光學引擎的空間也
8、相對較小。然而目前在技術上面臨一些困難,以color wheel而言,白光經偏極化后的光源僅為先前的1/3,亮度明顯降低;此外,由于lcos面板得在紅、藍、綠畫面快速的切換下合成影像,因此對面板的反應速度的要求更高。2.2.2 lcos投影技術特色與lcd、dlp投影機技術相較,lcos投影技術具高解析度、高亮度、成本低。1、高解析度lcos投影技術最大的特色在于其面板的下基板采用單晶硅cmos基板,由于下基板的材質是單晶硅,擁有良好的電子移動率,而且單晶硅可形成較細的線路,因此比較容易達成高解析度的面板。2、高亮度lcos為反射式技術,不會像htps lcd光學引擎會因為光線穿透面板而大幅降
9、低光利用率,因此光利率可提高至40%,與穿透式的htps lcd的3%相較,可減少耗電,并可產生較高的亮度。3、低成本lcos光學引擎因為產品零件簡單,因此具有低成本的優(yōu)勢。然而lcos技術本身,仍有許多技術問題有待克服,例如:黑白對比不佳、三片式lcos光學引擎體積較大。2.2.3 lcos產業(yè)現(xiàn)況及發(fā)展趨勢以目前主要的投影機技術lcd、dlp、lcos而言,lcos屬于新興的投影技術。相對于目前的主流技術lcd及近期相當熱門的dlp面板投影技術而言,lcos仍難與其抗衡,不過因具有高解析度、以降低成本的低價的優(yōu)勢,lcos仍是相當被看好的投影技術之一。lcos在技術克服后,將是相當具有競爭
10、優(yōu)勢的投影技術。不過在目前的情況下,lcos有朝二極發(fā)展;大尺寸的背投影電視、與小尺寸的高階可攜式產品。有機會成為前投影機的主要技術之一。雖然lcos面板技術相當具有潛力,不過就技術現(xiàn)況來看,lcos雖然在解析度上優(yōu)于lcd及dlp技術,然而在重量、亮度及對比上均較為不如,因此,目前l(fā)cos在前投影機產品中較不具競爭力,不過在畫面質量上要求較高,對于體積較大的背投影電視而言,提供了lcos較佳的成長空間。2.4 ca-210色彩分析儀ca-210色彩分析儀速度大,用于亮度和色度的測量,專為測量液晶體顯示器而設計;其測量速度最高可達每秒20次;也可以測量低至0.1cd/m2的低亮度,適用于gam
11、ma參數(shù)測量,用于測量和調整特性曲線;其精度高白色 0.002 rgb單色 0.004,符合cie1931標準觀察者的xyz濾色片,短至30+-10mm的測量距離,能夠建立更小型的測量系統(tǒng)特殊的光學設計,使得測量角僅在2.5度內,消除了不同lcd測量角度下的影響4位數(shù)字顯示色度測量結果,使得讀取的測量結果更精確。如下圖27。圖2-7 ca-210色彩分析儀ca-210色彩分析儀用適用于lcd面板,lcd監(jiān)視器,lcd tv色彩調整和檢測,色彩色度的質量控制,白平衡調試。ca-210色彩分析儀的光路系統(tǒng)特性:ca-210 使用了特別的光路系統(tǒng),適合測量lcos光路系統(tǒng)的主要部件是物鏡、光纖、芯片
12、透鏡、傳感器。從光源發(fā)出的光線被聚焦在光纖模塊的接受窗上,然后在模塊內混合并被分成三份,接著被引導到傳感器上。這里,光線是利用芯片透鏡聚焦到傳感器上的。圖2-8 ca-210光學系統(tǒng) 低亮度測量再低亮度下要獲得精確的測量值,最關鍵的步驟是減少在引導到傳感器過程中光線的損失。在通常的系統(tǒng)中,采集的光線穿過物鏡,然后直接聚焦在三塊傳感器上。但是,這種方法有一個問題,就是光線也會聚焦到傳感器以外的區(qū)域,所以光線損失比較大。ca-210 使用了光纖,所以相比與以前,在傳送到傳感器的過程中,光線的損失減少了。采集的光線先被聚焦在光纖模塊的接受窗上,然后通過光纖直接傳到芯片透鏡上,再依靠它將光線聚焦到傳感
13、器上。這樣,傳送過程中的損失降低到了最少,使得在低亮度下獲得精確的測量值變成可能。圖2-9 光學系統(tǒng)的測量 窄視角/通用視角當一個人觀看顯示屏時,他接受光線是一個相對較窄的角度。因此,為了得到與人眼相對應的亮度與色度測量值,測量設備有相同的窄視角是必要的。另外,由于lcos特征,在不同視角下會得到不同的測量值。ec61747-6(定義了lcos方法),規(guī)定了測量lcos備的視角必須在5以內(視角在圖中為1、2、3、1、2、3)。ca-210 的視角為5,所以符合iec 標準的要求。對于以前的測量儀器,當測量頭放置后,所測量的軸會垂直于被測物體的表面,測量位置的不同不會導致視角的差別(如圖中1、
14、2、3),但我們觀察被測物體表面相關于法線的視角(如圖中虛線),最大的角度(如圖中1、3)是不同的。在測量區(qū)域的邊緣,視角以外的光線也被采集到了。ca-210 使用了特殊的光路系統(tǒng),當測量口徑為27mm 時,采集光線的角度關于被測物體表面上每一點的法線對稱。由于ca-210 的視角為5,采集的光線相對于表面法線2.5(如圖所示)。圖2-10 窄視角和通用視角的測量2.4 rs-232-c串口2.4.1 rs-232-c概述rs-232-c標準是美國eia(電子工業(yè)協(xié)會)于bell等公司一起開發(fā)并于1969年公布的通信協(xié)議。它適合于數(shù)據(jù)傳輸速率在020 000bit/s范圍內的通信。itu(國際
15、電信同盟)和ccitt(國際電話與電報顧問委員會)發(fā)布了一個類似的標準v.28。這個標準對串行通信接口的有關問題,如信號線功能、電器特性都作了明確規(guī)定。 由于通信設備廠商都生產與rs-232-c制式兼容的通信設備,因此,它作為一種標準,目前已在微機通信接口中廣泛采用,它不僅已被內置于每一臺計算機,同時也已被內置于從微控制器到主機的多種類型的計算機及其相連的設備。rs-232常用于連接到一個modem,其他擁有rs-232接口的設備包括打印機、數(shù)據(jù)采集模塊、測試裝置和控制回路。另外,rs-232也可以直接應用于任何類型的計算機之間的簡單連接上。rs-232有幾個優(yōu)點1. rs-232應用廣泛。每
16、一臺pc都有一個或多個rs-232端口。更新的計算機現(xiàn)在支持其他諸如usb這樣的串行接口,但是rs-232可以做很多usb無法進行的工作。在微控制器中,接口芯片使得一個5v串口轉換成rs-232變得非常容易。2. 連接距離可以達到50100英尺。usb連接最長可以達到16英尺,pc機的并行打印機接口與主機之間的距離可以達到1015英尺,或者利用ieee-1284b型驅動器可以達到30英尺。如果rs-232端口與modem相連,則可以在世界范圍內接收和傳送數(shù)據(jù)。3.對于雙向連接,只需要3條導線。而并行連接一般需要8條數(shù)據(jù)線、兩條或者更多的控制線信號線和幾條接地線,這使得連接成本也比較高。終端與計
17、算機之間的通信或計算機與計算機之間的通信,通稱為數(shù)據(jù)通信。數(shù)據(jù)通信發(fā)送方為信源,接收方為信宿。連接信源和信宿的通道為通信通道或通信線路,由于在通信過程中沒有人的直接參與,因此必須通過相同的傳輸規(guī)則才可以使得通信雙方協(xié)調、穩(wěn)定、可靠地工作。數(shù)據(jù)通信技術綜合了計算機和通信技術,一個數(shù)據(jù)通信系統(tǒng)的基本構成如下圖示26所示。圖26 數(shù)據(jù)通信系統(tǒng)的基本構成數(shù)據(jù)通信發(fā)送方為信源,接收方為信宿。連接信源和信宿的通道為通信通道(簡稱信道)或通信線路,它可以是電纜、電話線等。數(shù)據(jù)通信與電話通信不同,由于在通信過程中沒有人的直接參與,因此必須通過相同的傳輸規(guī)則才可以使得通信雙方協(xié)調、穩(wěn)定、可靠地工作。數(shù)據(jù)電路加上
18、傳輸控制規(guī)則稱為數(shù)據(jù)鏈路。在數(shù)據(jù)通信系統(tǒng)中,用于接收和發(fā)送數(shù)據(jù)的設備稱為數(shù)據(jù)終端設備dte。dte既可以是一臺計算機,也可以是一臺只接受數(shù)據(jù)的打印機。用來連接與數(shù)據(jù)通信網絡的設備稱為數(shù)據(jù)通信設備dce或稱為數(shù)據(jù)電路終結設備。dce可以是一個調制解調器,也可以是一個簡單的線路驅動器。目前最廣泛使用的數(shù)據(jù)傳輸信道就是模擬電話線路。計算機所能處理的數(shù)字信號不能直接進入這樣的信道,它們必須經過一個中間連接設備modem, modem是最重要的dce設備之一,用它來實現(xiàn)數(shù)字信號到模擬信號、模擬信號到數(shù)字信號的相互轉換。在討論rs-232-c接口標準的內容之前,應說明兩點:首先,rs-232-c標準最初是
19、遠程通信連接數(shù)據(jù)終端設備dte與數(shù)據(jù)通信設備dce而制定的。因此標準的制定,并未考慮計算機系統(tǒng)的應用要求。但目前它又廣泛地被用于計算機與終端或外設之間的近端連接標準。顯然,這個標準的有些規(guī)定和計算機系統(tǒng)不是一致的,甚至是相矛盾的。有了對這種背景的了解,對rs-232-c標準與計算機不兼容的地方就不難理解了。其次,rs-232-c標準只提到的“發(fā)送”和“接收”都是站在dte立場上,而不是站在dce的立場來定義的。由于在計算機系統(tǒng)中,往往是cpu和i/o設備之間傳送信息,兩者都是dte,因此雙方都能發(fā)送和接收。2.4.2 rs-232-c的接口信號rs-232-c標準接口有25條線、4條數(shù)據(jù)線、1
20、1條控制線、3條定時線、7條備用和未定義線。常用的只有9根,它們是:(1)聯(lián)絡控制信號線數(shù)據(jù)裝置準備號(data set ready-dsr),其狀態(tài)為有效(on),表明modem處于可以使用的狀態(tài)。數(shù)據(jù)終端準備好(data terminal ready-dtr),其狀態(tài)為有效(on),表明數(shù)據(jù)終端可以使用。這兩個信號有時連到電源上,一上電就立即有效。這兩個設備狀態(tài)信號有效,只表示設備本身可用,并不說明通信鏈路可以開始進行通信了,能否開始進行通信要由下面的控制信號決定。請求發(fā)送(request to send-rts),用來表示dte請求dce發(fā)送數(shù)據(jù),即當終端要發(fā)送數(shù)據(jù)時,使該信號有效(on
21、狀態(tài)),向modem請求發(fā)送。它用來控制modem是否要進入發(fā)送狀態(tài)。允許發(fā)送(clear to send-cts),用來表示dce準備好接收dte發(fā)來的數(shù)據(jù),是對請求發(fā)送信號有效(on)狀態(tài),當modem已準備好接收終端傳來的數(shù)據(jù),并向前發(fā)送時,使該信號有效,通知終端開始沿發(fā)送數(shù)據(jù)線txd發(fā)送數(shù)據(jù)。這對rts/cts請求應答聯(lián)絡信號時用于半雙工modem系統(tǒng)中發(fā)送方式和接收方式之間的切換。在全雙工系統(tǒng)中作發(fā)送方式和接收方式之間的切換,在全雙工系統(tǒng)中,因配置雙向通道,故不需要rts/cts聯(lián)絡信號,使其變高。接收信號檢出(receive line detection-rlsd),用來表示dce
22、已接通通信鏈路,告知dte準備接收數(shù)據(jù)。當本地的modem收到由通信鏈路另一端(遠地)的modem送來的載波信號時,使rlsd信號有效,通知終端準備接收,并且由modem將接收下來的載波信號解調成數(shù)字量數(shù)據(jù)后,沿接收數(shù)據(jù)線rxd送到終端。此線也叫做數(shù)據(jù)載波檢出線。振鈴指示(ringing-ri)當modem收到交換臺送來的振鈴呼叫信號時,使該信號有效(on狀態(tài)),然后通知終端,已被呼叫。(2)數(shù)據(jù)發(fā)送與接收發(fā)送數(shù)據(jù)(transmitted data-txd)通過txd終端將串行數(shù)據(jù)發(fā)送到modem(dtedce)。接收數(shù)據(jù)(received data-rxd)通過rxd線終端接收從modem發(fā)
23、來的串行數(shù)據(jù)(dcedte)。(3)地線有兩根線sg、pg信號地和保護地信號線,無方向。上述控制信號線何時有效,何時無效的順序表示了接口信號的傳送過程。例如,只有當dsr和dtr都處于有效(on)狀態(tài)時,才能在dte和dce之間進行傳送操作。若dte要發(fā)送數(shù)據(jù),則預先將dtr線置成有效(on)狀態(tài),等cts線上收到有效(on)狀態(tài)的回答后,才能在txd線上發(fā)送串行數(shù)據(jù)。這種順序的規(guī)定對半雙工的通信線路特別有用,因為半雙工的通信才能確定dce已由接收方向改為發(fā)送方向,這時線路才能開始發(fā)送。2.4.3 rs-232-c基本接線方法rs-232-c接口有9針和25針的連接器兩種,表1簡介了兩種類型的
24、連接器的針腳與信號對應關系及功能說明,其中rts(kequest to send)用來表示dte請求dce發(fā)送數(shù)據(jù);cts(clear to send)允許發(fā)送,用來表示dce準備好接收dte發(fā)來的數(shù)據(jù),是對rts的響應信號;bcd表示dce已接通通信鏈路,告知dte準備接收數(shù)據(jù)。rtscts只用于半雙工,不適用于全雙工。表2介紹了rs-232-c串口通信基本接線方法,其中最簡單的連接方法為:同一串口的接收腳和發(fā)送腳直接相連,即2腳和3腳相連。表1 rs-232-c常用信號腳說明9針串口25針串口針號功能說明縮寫針號功能說明縮寫1數(shù)據(jù)載波檢測dcd8數(shù)據(jù)載波檢測dcd2接收數(shù)據(jù)rxd3接收數(shù)據(jù)
25、rxd3發(fā)送數(shù)據(jù)txd2發(fā)送數(shù)據(jù)txd4數(shù)據(jù)終端準備dtr20數(shù)據(jù)終端準備dtr5信號地gnd7信號地gnd6數(shù)據(jù)設備準備號dsr6數(shù)據(jù)設備準備號dsr7請求發(fā)送rts4請求發(fā)送rts8清除發(fā)送cts5清除發(fā)送cts9振鈴指示dell22振鈴指示dell 表2 rs-232-c 接口連接針腳連接9針9針25針25針9針25針233222322333557757串口傳輸數(shù)據(jù)只要有接收數(shù)據(jù)針腳和發(fā)送針腳就能實現(xiàn):同一個串口的接收腳和發(fā)送腳直接用線相連,兩個串口相連或一個串口和多個串口相連都可以實現(xiàn)數(shù)據(jù)的傳輸。同一個串口的接收腳和發(fā)送腳直接用線相連,對9針串口和25針串口,均是2與3腳直接相連。 對
26、于本論文所要涉及的com口,即串行通訊端口。微機上的com口多為9針,最大速率115200bps。通常用于連接鼠標(串口)及通訊設備(如連接外置式modem進行數(shù)據(jù)通訊)等。但目前主流的主板一般都只帶1個串口,甚至不帶。3 mscomm控件3.1 mscomm控件的介紹mscomm是微軟提供的,功能較完善,而且可以對中文進行處理,mscomm通過串口端口發(fā)送和接收數(shù)據(jù),為應用程序提供串行通信功能。mscomm控件進行串口編程的基本步驟:(1) 在建立的程序工程中插入microsoft communications control控件;(2) 添加mscomm控件id的控制變量(或者對象);(3
27、) 添加串口進行初始化,設置mscomm控件的屬性;(4) 添加串口事件的消息處理函數(shù)oncomm()函數(shù),在函數(shù)中根據(jù)應用需要,編寫數(shù)據(jù)處理代碼;(5) 編寫串口發(fā)送等其他代碼;(6) 關閉串口;mscomm提供了一系列標準通信命令的使用接口;利用它可以建立與串口的連接,并可以通過串口連接到其他通信設備,發(fā)出命令,交換數(shù)據(jù)以及監(jiān)視和響應串行連接中發(fā)生的事件和錯誤。mscomm控件可用于創(chuàng)建電話撥號程序、串口通信程序和功能完備的終端程序。具體來說,mscomm控件提供了兩種處理通信問題的方法:一是事件驅動法,二是查詢法。1.事件驅動方式事件驅動方式是處理串行端口交互作用的一種非常有效的方法。在
28、許多的情況下,在事件發(fā)生時需要得到通知,例如,在串口接收緩沖區(qū)中有字符,或者carrier detect(cd)或request to send (rts)線上一個字符到達或一個變化發(fā)生時。在這些情況下,可以利用mscomm控件的oncomm事件捕獲并處理這些通信事件。oncomm事件還可以檢查和處理通信錯誤。在編程過程中,就可以在oncomm事件處理函數(shù)中加入自己的代碼。這種方法的優(yōu)點時程序響應及時,可靠性高。每個mscomm控件對應著一個串行端口。如果應用程序需要訪問多個串行端口,必須使用多個mscomm。2.查詢方式查詢方式實質上也是屬于事件驅動方式,但在有些情況下,這種方式顯得更為便捷
29、,在程序的每個關鍵功能之后,可以通過檢查commevent屬性的值來查詢事件和錯誤,只要commevent屬性的值有了變化,就表明一個通信事件或一個錯誤發(fā)生。如果應用程序較小,并且時自成一體的,這種方法可能時更可取的。例如,如果寫一個簡單的電話撥號程序,則沒有必要對每接受一個字符都產生事件,因為惟一等待接受的字符時調制解調器的“確定”響應信息。在pc串行端口通信時,使用了十幾條進行信號傳輸。利用mscomm控件開發(fā)串口通信軟件,至少需要了解以下五條線的名稱及其作用,這5條線的高低電平狀態(tài)分別對應mscomm控件相應屬性的true/false值。l dtr線: 用于傳輸pc發(fā)往串口modem等設
30、備的信號,該信號表示pc是否已經準備好。l rts線: 用于傳輸pc發(fā)往串口modem等設備的信號,該信號表示pc是否允許modem發(fā)數(shù)據(jù)。l dsr線: 用于傳輸串口modem等設備發(fā)往pc的信號,該信號表示modem等設備是否已經做好操作準備。l cts線: 用于傳輸串口modem等設備發(fā)往pc的信號,該信號表示modem是否已經允許發(fā)送數(shù)據(jù)。l cd線: 用于傳輸串口modem等設備發(fā)往pc的信號,該信號表示modem已經和遠方的設備建立了聯(lián)系。3.2 mscomm控件的屬性mscomm控件有很多重要的屬性,但首先必須熟悉幾個屬性:commport設置并返回通信端口號;settings以
31、字符串的形式設置并返回數(shù)據(jù)傳輸數(shù)率、奇偶校驗、數(shù)據(jù)比特、停止比特;portopen設置并返回通信端口的狀態(tài);也可以打開和關閉端口;input從接收緩沖區(qū)返回和刪除字符;output向傳輸緩沖區(qū)寫一個字符串。下面分別描述mscomm控件的屬性:(1) commport屬性void setcommport(short nnewvalue);short getcommport();這一屬性用于設置并返回連接的串行端口號,windows將會利用該串口和外界通信.在設計時,nnewvalue可以設置成從116的任何數(shù)(默認值為1).但是如果用portopen屬性打開一個并不存在的端口時, mscomm控
32、件會產生錯誤68(設備無效)。 注意:必須在打開端口之前設置commport屬性。 (2) settings屬性 void setsettings(lpctstr lpsznewvalue);string getsettings(0);該屬性用于設置并返回數(shù)據(jù)傳輸速率、奇偶校驗、數(shù)據(jù)比特、停止比特參數(shù)。當端口打開時,如果value非法,則mscomm控件產生錯誤380(非法屬性值)。其中l(wèi)psznewvalue用字符串表示,由四個設置值組成,有如下的組成格式: “bbbb,p,d,s”這里bbbb為數(shù)據(jù)傳輸速率,p為奇偶校驗,d為數(shù)據(jù)比特數(shù),s為停止比特數(shù),value的默認值時:“9600,n
33、8,1”,注意:只有當通信的雙方的settings屬性值都一樣時,通信連接才能生效。(3) inputmode屬性void setinputmode(long nnewvalue);long get inputmode();inputmode屬性值用于設置或者返回傳輸數(shù)據(jù)的類型,當其值為0時,通過input 屬性以文本方式取回數(shù)據(jù);當其值為1時,通過input屬性以二進制方式檢取回數(shù)據(jù)。(4) inputlen屬性 void setinputlen(short nnewvalue);short getinputlen();inputlen屬性值用于設置并返回input屬性從接收緩沖區(qū)讀取的字符
34、數(shù). nnewvalue是short型數(shù)值,說明input屬性從接收緩沖區(qū)讀取的字符數(shù)。 inputlen屬性的默認值是0。當設置inputlen為0時,使用input將使mscomm控件讀取接收緩沖區(qū)中全部的內容。若接收緩沖區(qū)中inputlen字符無效, input屬性返回一個零長度字符串(“”) ,在使用input屬性前,用戶可以選擇檢查inbuffercount屬性來確定緩沖區(qū)中是否已有需要數(shù)目的字符。該屬性在從輸出格式為定長數(shù)據(jù)的機器讀取數(shù)據(jù)時非常有用。(5) inbuffersize屬性void setinbuffersize(short nnewvalue);short getin
35、buffersize();inbuffersize屬性用于設置或返回輸入緩沖區(qū)的大小,默認值為1024字節(jié)。(6) inbuffercount屬性void setinbuffercount(short nnew);short getinbuffercount();inbuffercount屬性用于返回輸入緩沖區(qū)內的等待讀取的字節(jié)個數(shù),可以通過該屬性值為0來清除接收緩沖區(qū)。(7) input屬性variant getinput();input屬性表示從接收緩沖區(qū)移走一串字符,將緩沖區(qū)中收到的數(shù)據(jù)讀入變量.屬性值為variant型變量。該屬性在端口未打開時不可用,在運行時時只讀。注意:當input
36、mode屬性值為0時(文本模式),變量中含string型數(shù)據(jù)。當inputmode屬性值為1(二進制模式時),變量中含byte型數(shù)組數(shù)據(jù)。(8) portopen屬性void setportopen(bool bnew value);bool getportopen();portopen屬性用于打開或者關閉端口.如果bnew value設為true,可以打開端口;設為false時可以關閉端口。一般情況下在程序開始時打開端口,在程序結束時關閉端口。當應用程序終止時, mscomm控件將自動關閉串口。在打開端口前,確定commport屬性設置為正確的端口號。而且,用戶的串口設備必須支持settin
37、gs屬性中的設置,如果硬件設備比支持settings屬性中的一些設置,則硬件工作或許不正確。(9) outbuffersize屬性void setoutbuffersize(short nnewvalue);outbuffersize屬性用于設置或者返回發(fā)送緩沖區(qū)的大小,值為整型表達式,表示傳輸緩沖區(qū)的字節(jié)數(shù),默認值為512字節(jié),對發(fā)送緩沖區(qū)設置得越大,應用程序可以使用得內存就越少。然而,如果發(fā)送緩沖區(qū)太小,緩沖區(qū)將會溢出,除非使用握手協(xié)議。(10) outbuffercounter屬性 void setoutbuffersize(short nnewvalue);short getoutbu
38、ffersize();outbuffercounter屬性用于返回發(fā)送緩沖區(qū)內等待發(fā)送得字節(jié)數(shù),可以通過設置該屬性為0來清空發(fā)送緩沖區(qū)。(11) output屬性 void setoutput(const variant&new value);output屬性用于向發(fā)送緩沖區(qū)寫數(shù)據(jù)流。屬性為variant變量。該屬性在端口未打開時不可用,在運行時是只寫得。注意:output屬性可以發(fā)送文本數(shù)據(jù)或二進制數(shù)據(jù)。傳輸文本數(shù)據(jù)時,應該將字符型數(shù)據(jù)放入variant型標量中;傳輸二進制數(shù)據(jù)(即按字節(jié)傳送)時,應該將字節(jié)型數(shù)據(jù)放入variant型變量中,如果通常給應用程序發(fā)送ansi字符串,可以以文本方式
39、發(fā)送。如果數(shù)據(jù)包含了內嵌控制字符、null字符等,必須將其作為二進制傳遞過去。(12) commevent屬性 short getcommevent();如果在通信過程中發(fā)生錯誤或事件,將會引發(fā)oncomm事件并且改變其屬性值。commevent屬性值反映錯誤或者事件類型,通信程序在設計中可以根據(jù)該屬性值來執(zhí)行不同的操作。該屬性在端口未打開時不可用,在運行時是只讀的。(13) dtrenable屬性void setdtrenable(bool bnew value); bool getdtrenable();dtrenable屬性確定再通信是否使dtr(data terminal ready)
40、線有效,dtr使計算機發(fā)送到調制解調器的信號,表明計算機在等待數(shù)據(jù)傳輸。(14) rtsenable屬性void setrtsenable(bool bnewvalue); bool getrtsenable();rtsenable屬性確定是否使rts(request to send);線有效,一般情況下,由計算機發(fā)送rts信號到連接的調制解調器,請求允許發(fā)送數(shù)據(jù)。(15) eofenable屬性void seteofenable(bool bnewvalue); bool geteofenable();eofenable屬性確定在輸入過程中mscomm控件是否尋找文件結尾(eof)字符。如果
41、找到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)線的狀態(tài)確定當前是否有傳輸。carrier detect是從
42、調制解調器發(fā)送到相聯(lián)計算機的一個信號,指示調制解調器正在聯(lián)機。該屬性在設計時無效,在運行時為只讀。屬性的設置值為:當bnewvalue為true時,carrier detect線為高電平;當bnewvalue為false,carrier detect線為低電平。注意當carrier detect線為高電平(cdholdingtrue)且超時時,mscomm控件設置commevent屬性為comeventcdto(carrrier dectect 超時錯誤),并產生oncomm事件。(17) dsrholding屬性void setdsrholding(bool bnewvalue);bool
43、getdsrholding(); 確定data set ready(dsr)線的狀態(tài)。data set ready信號由調制解調器發(fā)送到相連計算機,指示作好操作準備。該屬性在設計時無效,在運行時為只讀。dsrholding屬性返回為true時,表示data set ready線高,dsrholding屬性在返回值為false時,表明data set ready線低。當data set ready線為高電平(dsrholdingtrue)且超時,mscomm控件設置commevent屬性為comeventdsrto(數(shù)據(jù)準備超時)并產生oncomm事件。當為data terminal equip
44、ment(dte)機器寫data set ready/data terminal ready握手例程時該屬性時十分有用的。3.3 mscomm控件的優(yōu)點mscomm控件可以通過串口發(fā)送和接收數(shù)據(jù),為應用程序提供串行通信功能。使用非常方便。在此次設計的通訊軟件中,通過使用mscomm控件來接收數(shù)據(jù)的,也可以通過windows api編程來控制串口,從而接受數(shù)據(jù),不過需要進行編程,而mscomm控件將通信的大部分底層都封裝在控件內部,應用程序只需要獲取和設置相應的mscomm控件屬性就可以,從而簡化了編程工作。4 pc與ca-210色彩分析儀通訊軟件的設計 整個白平衡調整軟件的結構包括通信端口參數(shù)
45、設置,色彩基準設置,接收ca-210數(shù)據(jù)進行分析處理,數(shù)據(jù)實時顯示四個部分。系統(tǒng)圖4-1所示。圖4-1 白平衡調整軟件結構圖軟件實現(xiàn)了設置通信口,設置基準色彩,實時顯示測試數(shù)據(jù),直觀顯示數(shù)據(jù)差異。本文包括設置通信參數(shù)口和接收數(shù)據(jù)。串口的工作流程如下圖4-2所示。圖4-2 串口的工作流程由ca-210色彩分析儀將數(shù)據(jù)發(fā)送給pc com口,com口接收數(shù)據(jù),指定字節(jié)的長度,在本文中字節(jié)長度為16位,如果接收的數(shù)據(jù)超過指定的長度,重新接收一組數(shù)據(jù)。否則將數(shù)據(jù)放入緩沖區(qū),如果緩沖區(qū)存在有效數(shù)據(jù),則讀出有效數(shù)據(jù),再接收下一組數(shù)據(jù),否則放棄該組數(shù)據(jù),重新接收一組數(shù)據(jù)。4.1設置通信參數(shù)口打開microso
46、ft visual c+ 6.0出現(xiàn)如圖4-3界面。圖4-3 microsoft visual c+ 6.0的主界面點擊圖4-3中文件菜單,選擇新建,即設置一個新的工程,則彈出如圖4-4對話框。工程名取為ca120。圖4-4 設置工程對話框點擊確定鍵后,彈出圖4-5對話框,選擇創(chuàng)建的應用程序類型。圖4-5選擇創(chuàng)建的應用程序類型選擇d基本對話框單擊完成,進入編輯對話框界面,添加如圖4-6所示。圖4-6 編輯串口參數(shù)設置對話框通信設置參數(shù)包括串口選擇,波特率選擇,奇偶校驗,數(shù)據(jù)位,停止位,由于大多數(shù)計算機最多帶有兩個com接口,所以串口參數(shù)選擇位com1和com2,在軟件中我們用1代表com1,用
47、2代表com2。波特率即信號單元變化的頻率,一般其值設為9600,19200,38400。奇偶校驗其值一般設為n,o,d。n為不進行奇偶校驗,o為進行奇校驗,d為進行偶校驗。數(shù)據(jù)位其值一般設為8,7,6。停止位一般設為2,1。pc通過串口接收由ca-210色彩分析儀發(fā)送過來的數(shù)據(jù),因此pc的串口參數(shù)設置必須和ca-210色彩分析儀的設置相匹配。由于ca-210色彩分析儀波特率設為9600,數(shù)據(jù)位為7,停止位為2,奇偶校驗為偶校驗時,com口所接受到的數(shù)據(jù)最穩(wěn)定。因此pc的串口參數(shù)設置為9600,7,2,d。串口參數(shù)設置對話框的id為comdlg,類名取為comsettings。其源文件coms
48、ettings.cpp代碼為實現(xiàn)圖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(comsetting
49、s)m_strbaudrate = _t(); /波特率的字符變量m_strcomsel = _t(); /串口的字符變量m_strdatabit = _t(); /數(shù)據(jù)位的字符變量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_
50、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, i
51、dc_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); /程序會對控件對
52、應的變量值進行刷新m_ncom = m_ctrlcomsel.getcursel() + 1; /得到選中下拉列表框中數(shù)據(jù)的索引值m_strcomsettings = m_strbaudrate +, + m_strpairty +, + m_strdatabit +, + m_strstopbit; /將串口參數(shù)設置傳遞給變量m_strcomsettingscdialog:onok();bool comsettings:oninitdialog() cdialog:oninitdialog();/ todo: add extra initialization herem_ctrlcomsel
53、.setcursel(0); /設置組合框顯示串口選擇的第一項內容m_ctrlbaudrate.setcursel(0);m_ctrlpairty.setcursel(0);m_ctrldatabit.setcursel(1); /設置組合框顯示數(shù)據(jù)位的第二項內容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 串口參數(shù)設置對話框
54、4.2 接收數(shù)據(jù)pc通過mscomm控件從串口接收數(shù)據(jù),其接收數(shù)據(jù)的主界面如下圖4-8所示。圖4-8 軟件的主界面主界面實現(xiàn)的功能和編程的代碼包括幾個部分,對通信串口進行初始化,接受數(shù)據(jù),處理數(shù)據(jù),對數(shù)據(jù)直觀顯示。而本文所要涉及是前兩個部分,即對通信串口進行初始化和接受數(shù)據(jù)。主界面的類名為ca120view,在其源文件ca120view.cpp中,對串口初始化的函數(shù)名取為initcommset()。m_comca120為主界面的全局變量。設置輸入緩沖區(qū)的大小,單位為bytes,語句為m_comca120.setinbuffersize(1024)。設置發(fā)送緩沖區(qū)的大小,單位為bytes,語句為
55、m_comca120.setoutbuffersize(512)。設置輸入方式為二進制,語句為m_comca120.setinputmode(1)。讀取緩沖區(qū)中的全部內容,語句為m_comca120.setinputlen(0)。清除接收緩沖區(qū)中的內容,釋放緩沖區(qū),語句為m_comca120.setinbuffercount(0)。接收緩沖區(qū)收到的每一個字符都會使mscomm控件產生oncomm事件。語句為m_comca120.setinbuffercount(0)。對于pc com口與ca-210色彩分析儀的通訊,最關鍵的使要接收到ca-210發(fā)來的數(shù)據(jù),實現(xiàn)接收數(shù)據(jù)的功能,使用如下代碼:variant variant_inp; /定義一個variant型變量colesafearray safearray_inp; long len,k;byt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國碳捕獲與利用 (CCU)行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025年全球及中國棉紡在線單錠測試系統(tǒng)行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 外債借款合同標準模板-
- 二零二五年度高性能纖維材料采購合同2篇
- 終身學習者的修煉之路
- 2025年度農業(yè)灌溉水溝改造升級工程合同范本3篇
- 二零二五年度蟲草采摘與加工服務合同3篇
- 二零二五年度賓館客房衛(wèi)生清潔外包合同樣本3篇
- 金融機構安保業(yè)務合同管理的關鍵點
- 2025年度個人房屋防水維修服務協(xié)議
- 2025地下停車位使用權買賣合同 標準版模板
- 餐飲行業(yè)優(yōu)化食品供應鏈管理計劃
- 微信小程序用戶服務協(xié)議和隱私政策-帶目錄
- 江蘇省徐州市、宿遷市2025年高三下期末測試化學試題含解析
- 要分手費的分手協(xié)議書(標準)
- 2024夏季廣東廣州期貨交易所招聘高頻難、易錯點500題模擬試題附帶答案詳解
- 浙江省2024年高考化學模擬試題(含答案)2
- 2024新人教七年級英語上冊 Unit 2 Were Family!(大單元教學設計)
- 碳排放管理員 (碳排放核查員)技能考核內容結構表三級、技能考核要素細目表三級
- DB12T 1339-2024 城鎮(zhèn)社區(qū)公共服務設施規(guī)劃設計指南
- 電競賽事策劃全解析
評論
0/150
提交評論