• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      共焦掃描成像系統(tǒng)中串口通信的C#實現(xiàn)*

      2011-05-28 03:32:34
      關(guān)鍵詞:窗體針孔串口

      林 睿

      (重慶工商大學(xué)計算機科學(xué)與信息工程學(xué)院,重慶 400067)

      共焦掃描成像因為橫向分辨率比普通顯微系統(tǒng)高并且具有良好的光學(xué)層析能力,在三維顯微成像中具有獨特優(yōu)勢,因此在現(xiàn)代醫(yī)學(xué)、材料學(xué)、生物學(xué)和半導(dǎo)體芯片檢測等亞微米技術(shù)領(lǐng)域有著廣泛的應(yīng)用[1-5]。在研制共焦掃描成像系統(tǒng)中,對圖像信號進行采集并傳輸?shù)接嬎銠C中進行處理是一項關(guān)鍵技術(shù),由于系統(tǒng)中采集的是靜態(tài)圖像[2],數(shù)據(jù)處理量不是很高,因而可以采用串行通信作為數(shù)據(jù)傳輸通信方式[3]。

      在Windows環(huán)境下開發(fā)串行通信程序[6]可以利用Windows API通信函數(shù)或者利用第三方編寫的串口類或者利用串口通信組件,如ActiveX控件MSComm。隨著.Net Framework的普及,通過.Net Framework平臺進行串口設(shè)備開發(fā)在軟件升級過程中起著越來越重要的作用?;?Net Framework的Visual CJHJ 2008的串口類(SerialPort類)[7]方便地實現(xiàn)了串口通訊所需要的多種功能,能賦予串口通信程序設(shè)計較大的靈活性,是今后串口通信的一個重要發(fā)展方向。提出了一種利用CJHJ中的SerialPort類進行RS232串口通信的方法,以完成對共焦成像系統(tǒng)的軟件升級。

      1 共焦掃描成像系統(tǒng)

      1.1 共焦掃描成像原理[4]

      共焦掃描成像系統(tǒng)(圖1)利用放置在光源后的照明針孔和放置在探測器前的探測針孔實現(xiàn)點照明和點探測,來自光源的光通過照明針孔發(fā)射出的光聚焦在樣品焦平面的某個點上,該點所發(fā)射的熒光成像在探測針孔上,照明針孔與探測針孔對被照射點或被探測點來說是共軛的,因此被探測點即共焦點,被探測點所在的平面即共焦平面。如果被探測點不在焦點,那么該點所發(fā)射的熒光成像在針孔的前面或后面某個位置,而在針孔所在的探測面上僅僅形成彌散斑,此時通過針孔為探測器探測到的光能量很少,也就是說非焦點信號強度遠遠低于焦點信號強度。在共焦掃描成像中,只有一個物點參與成像,排除了臨近物點的影響,因此分辨率可以突破瑞利衍射極限。計算機以像點的方式將被探測點顯示在計算機屏幕上,為了產(chǎn)生一幅完整的圖像,由光路中的掃描系統(tǒng)在樣品焦平面上掃描(X-Y掃描),從而產(chǎn)生一幅完整的共焦圖像。只要載物臺沿著Z軸上下移動,將樣品新的一個層面移動到共焦平面上,樣品的新層面又成像在顯示器上,隨著Z軸的不斷移動,就可得到樣品不同層面連續(xù)的光切圖像。

      圖1 共焦掃描成像系統(tǒng)

      1.2 系統(tǒng)基本結(jié)構(gòu)

      共焦掃描成像系統(tǒng)結(jié)構(gòu)[4,5]如圖1所示,系統(tǒng)由光學(xué)系統(tǒng)、圖像數(shù)據(jù)采集與傳輸系統(tǒng)、系統(tǒng)掃描控制單元和計算機組成。光學(xué)系統(tǒng)主要由激光器、成像(聚光)透鏡、光電倍增管PMT組成。圖像數(shù)據(jù)采集和傳輸系統(tǒng)由計算機(上位機)和單片機(MCU)系統(tǒng)(下位機)組成。系統(tǒng)掃描控制單元利用單片機(MCU)驅(qū)動步進電機帶動載物臺沿預(yù)定軌跡運動,實現(xiàn)逐點掃描。計算機(上位機)通過RS232串口即DB9串口實現(xiàn)對下位機(MCU)的控制及圖像數(shù)據(jù)的后期處理。

      2 RS232串口通信系統(tǒng)及CJHJ中的串口類

      確保計算機與單片機之間具有優(yōu)良的數(shù)據(jù)傳輸通道,對于整個共焦掃描成像系統(tǒng)快速獲得物平面高質(zhì)量的圖像至關(guān)重要,因此采用成熟的RS232串口技術(shù)可確保數(shù)據(jù)傳輸?shù)恼_性和可靠性。而在串口通信軟件升級中采用Visual CJHJ 2008的SerialPort類進行通信軟件開發(fā),因為SerialPort類封裝了使用RS232開發(fā)串口通信軟件的細節(jié),做到了.Net Framework與串口設(shè)備的無縫連接,因而能實現(xiàn)串口讀寫數(shù)據(jù)的可靠性,保證了通信的正確性和可靠性。

      2.1 RS232串口的信號線定義及連接方法[6]

      串行通信接口標(biāo)準(zhǔn)經(jīng)過使用和發(fā)展,目前已經(jīng)有多種,但都是在RS232標(biāo)準(zhǔn)的基礎(chǔ)上經(jīng)過改進而形成的。RS232通信協(xié)議適合于數(shù)據(jù)傳輸速率在0~200 00 bit/s范圍內(nèi)的通信。由于RS232并未定義連接器的物理特性,因此,出現(xiàn)了DB25(25針)、DB15(15針)和DB9(9針)為主的各種類型的連接器。目前,個人計算機中多以DB9為主要的串行通信接口,因而在共焦掃描成像系統(tǒng)中考慮以DB9為主進行串口通信開發(fā)。

      RS232通信協(xié)議是DTE(數(shù)據(jù)終端設(shè)備)和DCE(數(shù)據(jù)通信設(shè)備)之間的一個接口協(xié)議,RS232標(biāo)準(zhǔn)指出DTE應(yīng)該擁有一個插頭(針輸出),DCE擁有一個插座(孔輸出)。目前的個人計算機的DB9串口為一個9針插頭(圖2)。各針腳功能分別為:DCD——數(shù)據(jù)載波檢測;RxD——串口數(shù)據(jù)輸入;TxD——串口數(shù)據(jù)輸出;DTR——數(shù)據(jù)終端就緒;SG——信號地;DSR——數(shù)據(jù)發(fā)送就緒;RTS——發(fā)送數(shù)據(jù)請求;CTS——清除發(fā)送;RI——振鈴指示。

      在通信速率低于20 kb/s時,RS232所直接連接的最大物理距離為15 m。通信雙方可以直接連接,這種情況下,只需使用少數(shù)幾根信號線。最簡單的情況,在通信中根本不需要RS232的控制聯(lián)絡(luò)信號,只需3根線(發(fā)送線、接收線、信號地線)便可實現(xiàn)全雙工異步串行通信,如圖3(a)所示。用跳線使串口的第2、3針連接,可以在本地計算機上實現(xiàn)串口通信,所以,通過串口的第2、3針的連接可以對程序進行檢測,如圖3(b)所示。

      2.2 CJHJ中的串口類 SerialPort[7]

      Visual CJHJ 2008類庫包含了SerialPort類,可以方便地實現(xiàn)所需要串口通訊的多種功能,基本技術(shù)為:(1)命名空間。System.IO.Ports命名空間包含了控制串口重要的SerialPort類,該類提供了同步 I/O和事件驅(qū)動的I/O、對管腳和中斷狀態(tài)的訪問以及對串行驅(qū)動程序?qū)傩缘脑L問,所以在程序代碼起始位置需加入 Using System.IO.Ports。

      (2)串口的通訊參數(shù)。串口通訊最常用的參數(shù)就是通訊端口號及通訊格式即:波特率、數(shù)據(jù)位長度、停止位和校驗位。

      a.通訊端口號。在SerialPort類中用PortName屬性獲取或設(shè)置通信端口,包括但不限于所有可用的COM端口,該屬性返回類型為String,通常情況下,PortName正常返回的值為COM1、COM2等,SerialPort類最大支持的端口數(shù)多于16,方便了用戶串口設(shè)備的配置。

      b.通訊格式。SerialPort類對分別用BaudRate、DataBits、Parity、StopBits屬性設(shè)置通訊格式中的波特率、數(shù)據(jù)位長度、奇偶校驗檢查協(xié)議和停止位。BaudRate和DataBits是整型int數(shù)據(jù),BaudRate屬性的默認值為9600 bps。DataBits屬性的值范圍是從5到8,默認值為8。Parity和StopBits是枚舉類型數(shù)據(jù),Parity類型中枚舉了Odd、Even、Mark、None、Space,默認值為 None;StopBits枚舉了 None、One、OnePointFive、Two,默認值為 One。

      (3)串口的操作。

      a.通信端口號的獲取。SerialPort類中用GetPortNames()方法獲取當(dāng)前計算機的串行端口名稱數(shù)組。

      b.串口的打開和關(guān)閉。SerialPort類中用Open()和Close()方法就可以實現(xiàn)串口的打開和關(guān)閉。

      c.串口數(shù)據(jù)的發(fā)送和的讀取。SerialPort類中調(diào)用重載的Write()和WriteLine()方法發(fā)送數(shù)據(jù)。WriteLine()可發(fā)送字符串并在字符串末尾加入換行符。而用ReadLine()則可以一直讀取到輸入緩沖區(qū)中的NewLine值,屬性NewLine定義ReadLine和WriteLine方法的行尾,默認為換行符。

      事件。從SerialPort對象接收數(shù)據(jù)時,將在輔助線程上引發(fā)Data

      事件。串行接收事件可以由SerialData枚舉中的任何項引起,SerialData枚舉類型有兩個值為Chars(表示接收到了一個字符并將其放入了輸入緩沖區(qū))和Eof(表示接收到了文件結(jié)束字符并將其放入了輸入緩沖區(qū))。DataReceived事件還可以由接收到了由屬性ReceivedBytesThreshold設(shè)置的輸入緩沖區(qū)中的字節(jié)數(shù)引發(fā)。

      BytesThreshold屬性用于獲取或設(shè)置DataReceived事件發(fā)生前內(nèi)部輸入緩沖區(qū)中的字節(jié)數(shù)。

      (5)串口對象的初始化。SerialPort類提供了七個重載的構(gòu)造函數(shù),既可以對已經(jīng)實例化的SerialPort對象設(shè)置上述相關(guān)屬性的值,也可以使用構(gòu)造函數(shù)SerialPort(String,Int32,Parity,Int32,StopBits)指定的端口名稱、波特率、奇偶校驗位、數(shù)據(jù)位和停止位初始化SerialPort類的新實例。

      3 CJHJ中串口通訊的實現(xiàn)

      3.1 軟件的設(shè)計

      串口通訊的工作流程是:首先配置串口參數(shù),再打開串口;然后接收和發(fā)送數(shù)據(jù),最后關(guān)閉串口。

      在Visual CJHJ 2008環(huán)境下,建立實現(xiàn)本機串口通信測試的主窗體Form1,如圖4(a)所示。依照串口通訊的工作流程,窗體上依次放置5個按鈕分別是配置串口、打開串口、發(fā)送信息、接收信息和關(guān)閉串口,其中打開串口、發(fā)送信息、接收信息按鈕的Enabled屬性設(shè)置為false,隨著配置串口按鈕的點擊依次將其Enabled屬性設(shè)置為true。窗體上放置兩個文本編輯框textBox1和textBox2,分別顯示用于發(fā)送和接收到信息的內(nèi)容。

      串口參數(shù)的設(shè)置在子窗體Form2中進行,在配置串口按鈕點擊后,子窗體彈出,如圖4(b)所示。子窗體Form2上放置3個組合框ComboBox分別設(shè)置可用串口、標(biāo)準(zhǔn)停止位和奇偶效驗。其中可用串口的下拉列表的值可在Form2顯示時的事件中添加如下代碼獲得:

      圖4 C#串口通信測試軟件界面

      ComboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());

      為了能將子窗體Form2上的串口參數(shù)傳到主窗體Form1上,需要在Form1的類定義處添加5個公有靜態(tài)變量ComName、BaudRate、BitLength、PARITY、STOPBIT分別存放端口名稱、波特率、數(shù)據(jù)位、奇偶校驗位和停止位的參數(shù)值。在子窗體Form2上的設(shè)置完成按鈕的Click事件中添加以下代碼:

      這樣即可對主窗體Form1中的串口對象進行設(shè)置。

      3.2 功能模塊的實現(xiàn)

      (1)打開串口。在主窗體Form1的類中的串口對象SerialPort1定義為:

      System.IO.Ports.SerialPort SerialPort1=new SerialPort();

      在打開串口按鈕的Click事件中添加以下代碼:

      (2)發(fā)送信息。當(dāng)發(fā)送信息按鈕激活后,在主窗體的文本編輯框textBox1中輸入要發(fā)送的信息,再點擊發(fā)送信息按鈕完成信息向串口的發(fā)送,其Click事件代碼如下:

      private void SendMessage_Click(object sender,EventArgs e)

      {SerialPort1.WriteLine(textBox1.Text);//發(fā)送一行信息到串口

      ReadMessage.Enabled=true;}//激活接收信息按鈕

      (3)接收信息。當(dāng)接收信息按鈕激活后,點擊該按鈕,將已送到串口的信息讀取到主窗體的textBox2中進行顯示,其Click事件代碼如下:

      (4)關(guān)閉串口。關(guān)閉串口的代碼非常簡單,只需要執(zhí)行SerialPort1.Close()即可。

      4 結(jié)論

      在Visual C#2008中開發(fā)的串口通信測試軟件能成功地實現(xiàn)串口通信,表明提出的利用CJHJ實現(xiàn)共焦掃描成像系統(tǒng)的串口通信是一個可行的方案,因而利用CJHJ對共焦掃描成像系統(tǒng)進行軟件升級是可行的。

      [1]楊莉松,王桂英,王建崗,等.共焦掃描成像研究[J].中國激光,1999,26(10):931-934

      [2]唐志列,梁瑞生,朱小松,等.偏振共焦掃描激光顯微鏡的成像特性研究[J].光學(xué)學(xué)報,1999,19(8):1118-1122

      [3]蔡振治,遲澤英,陳文建,等.RS-232串口通信技術(shù)在光纖共焦掃描顯微成像系統(tǒng)中的應(yīng)用[J].光電子技術(shù)與信息,2004,17(4):58-62

      [4]BRAKENHOFF G J.激光共焦顯微成像的最新進展及其在生命科學(xué)研究中的應(yīng)用[J].生命科學(xué),2009,21(2):191-197

      [5]李海燕,張琢,浦昭邦,等.共焦顯微掃描探測技術(shù)的發(fā)展[J].光學(xué)技術(shù),2008,34(1):94-97

      [6]李現(xiàn)勇.Visual C++串口通信技術(shù)與工程實踐[M].北京:人民郵電出版社,2002

      猜你喜歡
      窗體針孔串口
      一起來探案
      淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
      汽車電泳漆膜的縮孔與針孔
      試談Access 2007數(shù)據(jù)庫在林業(yè)檔案管理中的應(yīng)用
      檔案天地(2019年5期)2019-06-12 05:12:02
      針孔問題該如何處理
      USB接口的多串口數(shù)據(jù)并行接收方法探索
      基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
      地礦測繪(2015年3期)2015-12-22 06:27:26
      決戰(zhàn)前夜
      基于LayeredWindow的異形窗體局部刷新
      中文信息(2014年2期)2014-03-06 23:49:14
      基于并行控制的FPGA多串口拓展實現(xiàn)
      湟中县| 鸡泽县| 蛟河市| 乌拉特前旗| 天镇县| 石家庄市| 青铜峡市| 敦煌市| 凤阳县| 南阳市| 铅山县| 东乡| 盐源县| 西峡县| 城步| 潜江市| 大连市| 黑山县| 祁连县| 历史| 丹棱县| 临安市| 汝阳县| 达孜县| 石渠县| 江山市| 嘉黎县| 吉木萨尔县| 孟村| 广昌县| 万源市| 合山市| 洪湖市| 毕节市| 秭归县| 读书| 胶州市| 南宁市| 古浪县| 雷山县| 惠东县|