• 
    

    
    

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

      基于LabVIEW-VISA 方式的串口通信研究

      2015-08-26 06:39:26魏義虎
      電子設計工程 2015年24期
      關鍵詞:字符串緩沖區(qū)串口

      魏義虎, 陳 雷

      (軍械工程學院 彈藥工程系, 河北 石家莊 050003)

      串口通信作為串行通信的一種實現(xiàn)方式,其歷史可追溯到1969 年。 時至今日,速度更高的USB、IEEE1394 新型接口已更多的應用于串行通信,然而串口接口簡單、使用方便、可靠性高、適用于低速傳輸,作為為數(shù)不多的以電平為直接信號載體的計算機接口,仍然有廣闊的發(fā)揮作用的空間。

      LabVIEW 建立在以圖形數(shù)據(jù)流代替文本式程序代碼進行編程的G 語言基礎上[1],編程簡單、高效。 自帶VISA 函數(shù),可以方便地編寫串口通信程序,但程序的合理編寫以串口原理為基礎,需要注意的細節(jié)較多。 文中在介紹必要的串口通信原理基礎上,對編寫程序需要注意的問題進行了詳細說明。

      1 串口通信基本原理

      1.1 串口通信協(xié)議

      串行通信協(xié)議面向鏈路層,分為同步和異步通信協(xié)議兩大類。 串口通信使用起止式異步傳輸協(xié)議。 串行傳輸面向比特,把一次發(fā)送的若干比特稱作一幀。 異步傳輸指發(fā)送方可以在任何時刻發(fā)送若干幀,接收方不知道數(shù)據(jù)會在什么時候到達,幀與幀之間的間隔不固定。 幀的結構按照傳輸?shù)南群箜樞蚍譃槠鹗嘉?、?shù)據(jù)位、奇偶校驗位、停止位。 每個異步傳輸?shù)膸家砸粋€起始位開頭,它不包含數(shù)據(jù)信息,用來通知接收方數(shù)據(jù)已經(jīng)到達,給接收方響應、接收和緩存數(shù)據(jù)的時間。 一般串口傳送的數(shù)據(jù)是字符型[2],采用ASCII 編碼,數(shù)據(jù)位即字符對應的ASCII 碼值的5-8 位二進制數(shù),按照從低位到高位順序傳輸。 奇偶校驗位是否采用及采用何種校驗,由雙方約定。 停止位表示本次數(shù)據(jù)傳輸完畢。 沒有傳送數(shù)據(jù)的線路為邏輯1。起始位為0,線路由1 變?yōu)?。數(shù)據(jù)位隨數(shù)據(jù)信息而變化。 停止位為1, 使線路保持1 直到下一幀起始位到達。以傳送字符“a”為例,其ASCII 碼值為十進制“97”,轉換成二 進 制 為 “01100001”, 按 照 先 低 位 后 高 位 的 順 序 為“10000110”。 其幀結構如圖1。

      圖1 字符a 的幀結構Fig. 1 Frame Structure of character a

      發(fā)送方和接收方必須使用相同的傳輸速度, 即比特率,指的是串口通信每一秒所傳輸?shù)臄?shù)據(jù)比特數(shù), 單位是bit/s。如每幀為10 比特, 比特率為9 600 bit/s, 則每秒可以傳送960個字符。

      1.2 RS-232 信號線定義和電氣特征

      EIA RS-232 串行通信接口標準面向物理層,完整信號包含25 根線, 包括UART 傳輸?shù)谋匾盘柡完P于調(diào)制解調(diào)器的控制信號。 在計算機工業(yè)發(fā)展過程中,25 線逐漸簡化為9線。 其中常用的信號線為:S-GND 信號地;TxD(Transmitted Data)、RxD (Received Data) 為 串 口 數(shù) 據(jù) 線;CTS (Clear to send)、RTS(Request to send)為串口控制線。 發(fā)送方的CTS 與接收方的RTS、發(fā)送方的RTS 與接收方的CTS 相連接。 接收方緩沖區(qū)有空間時,將本方RTS 置為有效,此時發(fā)送方檢測到自己的CTS 有效,說明接收方希望發(fā)起一次傳輸,于是開始發(fā)送。接收方緩沖區(qū)填滿時,將本方RTS 置為無效,此時發(fā)送方檢測到自己的CTS 無效, 說明接收方希望停止傳輸,于是停止發(fā)送。 對于一般的UART 傳輸, 可以進一步簡化為TxD、RxD、S-GND 三線接法。 需要注意的是發(fā)送方與接收方的S-GND 直接連接,TxD、RxD 交叉連接。

      RS-232 以正負電平表示邏輯值。 在數(shù)據(jù)線上, 邏輯1為-3~-15 V,邏輯0 為+3~+15 V;在控制和狀態(tài)線上,信號有效為+3~+15 V,信號無效為-3~-15 V。±(3-15)V 以外的電平無意義。這與TTL 用高低電平表示邏輯值不同。所以,計算機接口與TTL 設備進行串口通信時, 需要進行電平和邏輯轉換。 目前常用MAX232 進行EIA 與TTL 雙向電平轉換。

      2 LabVIEW 使用VISA 串口函數(shù)編程方法

      2.1 串口通信函數(shù)介紹

      VISA 是測試程序與數(shù)據(jù)傳輸總線的中間層, 為應用程序和儀器總線的通信建立了通道。 VISA 是應用于儀器編程的標準I/O 應用程序接口,本身不具有儀器編程能力,是調(diào)用低層驅動器的高層API,使用時需要安裝VISA 驅動程序[3]。

      以LabVIEW 2011 為例,VISA 串口編程函數(shù)位于程序框圖界面的“函數(shù)—》儀器I/O—》串口”,常用其中7 個函數(shù):“VISA 配置串口”用于選擇通信端口、設置比特率、數(shù)據(jù)位數(shù)、校驗方式、流控制等;“VISA 串口字節(jié)數(shù)”用于獲取發(fā)送到接收緩沖區(qū)中的字節(jié)數(shù)量; “VISA 寫入”將傳輸緩沖區(qū)中的數(shù)據(jù)寫入配置串口時指定的設備或接口;“VISA 讀取”在指定的串口接收緩沖區(qū)按照指定字節(jié)數(shù)讀取數(shù)據(jù); “VISA 設置I/O 緩沖區(qū)大小”、“VISA 清空I/O 緩沖區(qū)” 分別用于設置接收及傳輸緩沖區(qū)的大小或將其清空;“VISA 關閉” 用于關閉串口。

      2.2 一般編程方法

      通常,按照配置串口、設置發(fā)送/傳輸緩沖區(qū)、VISA 寫入或VISA 讀取、關閉串口的流程,再結合事件、循環(huán)、條件、順序等程序結構和具體數(shù)據(jù)操作處理等即可編寫符合用戶意圖的串口通信程序。 配置串口時,要將發(fā)送方和接收方的比特率、數(shù)據(jù)位數(shù)、奇偶校驗等設置為相同值,即將雙方傳輸速率和幀格式設置一致。 將“串口字節(jié)數(shù)”輸出連接“串口讀取”的字節(jié)總數(shù)接線端,即按照接收字節(jié)數(shù)量進行讀取。

      2.3 編程常見問題

      1)數(shù)據(jù)格式與字符串之間的格式轉換

      一般,串口傳送的是字符串型數(shù)據(jù)。 如需要傳輸?shù)臄?shù)據(jù)不是字符格式, 要使用相應轉換函數(shù)將數(shù)據(jù)轉換為字符格式,否則程序提示“已連接兩個不同類型的接線端”。 例如,數(shù)值數(shù)據(jù)可以先使用字符串/數(shù)值轉換函數(shù)轉換為字符串,再進行串口發(fā)送。

      2)將串口設置等模塊放置在循環(huán)之外

      如果串口通信處于循環(huán)結構中,為減輕內(nèi)存壓力,可以將具體發(fā)送、讀取操作保留在循環(huán)中,而把配置串口、設置緩沖區(qū)、關閉串口等操作放置在循環(huán)結構之外,避免頻繁重復執(zhí)行,以降低內(nèi)存開銷,優(yōu)化程序。

      3)丟失數(shù)據(jù)現(xiàn)象

      有時串口接收數(shù)據(jù)不完整或為空,可能是由于串口是底層硬件,數(shù)據(jù)從軟件到串口,及從串口到軟件需要一個時間。數(shù)據(jù)還沒有全部傳送到接收緩沖區(qū)時,讀取程序就把部分已接收的數(shù)據(jù)讀出,從而出現(xiàn)接收數(shù)據(jù)不完整的現(xiàn)象。 調(diào)試中,在“VISA 讀取”之前設置若干ms 的延時,使數(shù)據(jù)傳輸完全,從而讀取完整。 也可能是因為接收緩沖區(qū)被填滿,但讀取程序還沒有處理完數(shù)據(jù),此時再接收數(shù)據(jù),新的幀就會丟失。 可以通過設置流控制使發(fā)送方和接收方進行交流協(xié)調(diào)。 在串口線采用三線接法時, 可在配置串口流控制接線端選擇“XON/XOFF”軟件流控制方式。通常使用0x17 作為XON,0x19 作為XOFF,通過數(shù)據(jù)線TxD、RxD 傳輸。 發(fā)送XON,相當于置RTS有效;接收XON,相當于檢測到CTS 有效。 發(fā)送XOFF,相當于置RTS 無效;接收XOFF,相當于檢測到CTS 無效。 接收方緩沖區(qū)填滿時,向發(fā)送方發(fā)送XOFF,發(fā)送方接收到XOFF,說明接收方希望停止傳輸,于是停止發(fā)送。

      3 應用實例

      光源以平行光束不定時地照射垂直于水平面的靶板,4個光電傳感器分布在以靶板中心為圓心的圓周上0°、90°、180°、270°位置,光斑直徑略大于圓直徑,光源距靶板400 m。被照射的傳感器產(chǎn)生光電效應,經(jīng)調(diào)理輸出高電平,未被照射的傳感器輸出低電平。 4 路傳感器的輸出組成4 位的高低電平序列,被靶端微機經(jīng)數(shù)據(jù)I/O 卡采集為1D 布爾數(shù)組,等效于范圍從0000 到1111 的二進制數(shù),該數(shù)值可反映光斑的大致位置。 將此位置信息從靶端微機串口發(fā)送,經(jīng)電臺無線傳輸,光源端微機自動進行串口讀取,并將位置信息還原和顯示。

      圖2 串口通信應用實例示意圖Fig. 2 Sketch map of the serial port communication application example

      串口通信要求數(shù)據(jù)格式為字符串型, 故將1D 布爾數(shù)組轉換為數(shù)值, 進而由數(shù)值轉換為字符串。 由于傳輸距離為400 m,故串口通信采用無線傳輸。 靶端微機串口與發(fā)送電臺采用三線接法,TxD、RxD、S-GND 對應連接。光源端微機串口和接收電臺也采用三線接法, 但要注意與前者不同,S-GND直接連接,TxD、RxD 交叉連接。 靶端串口發(fā)送程序見圖3。

      圖3 靶端串口發(fā)送程序Fig. 3 Serial port transmitting programme of target side

      串口通信中設置“XON/XOFF”及在“串口讀取”前設置適當延時。 串口讀取后將代表光斑位置的字符串逆向還原為布爾數(shù)組,利用數(shù)組索引各傳感器信號,分別驅動4 個指示燈。指示燈分布與傳感器空間分布一致。循環(huán)查詢“VISA 串口字節(jié)數(shù)”與0 比較的結果,大于0 時,自動執(zhí)行串口讀取、數(shù)據(jù)處理、控制指示燈指示位置等操作。 光源端串口接收、處理顯示程序見圖4,顯示界面見圖5。

      從圖5 可以看到,“右”傳感器被照射時,4 路傳感器輸出等效為二進制數(shù) “1000”, 轉換為十進制 “8”, 串口接收為“0001”,顯示界面“右”指示燈亮。 “左、下”傳感器被照射時,4路傳感器輸出等效為二進制數(shù)“0011”,轉換為十進制“3”,串口接收為“1100”,顯示界面“左、下”指示燈亮。

      圖4 光源端串口接收、處理顯示程序Fig. 4 Serial port receiving,handling and displaying programme of light source side

      圖5 顯示界面Fig. 5 Displaying interface

      4 結 論

      在LabVIEW 環(huán)境下,以VISA 串口函數(shù)為主體,結合事件、循環(huán)、條件等程序結構和各種數(shù)據(jù)操作,再配合信號線連接及無線傳輸?shù)扔布?,可以簡便、靈活、高效地編寫串口傳輸程序,實現(xiàn)串口通信。

      [1] 李江全,劉恩博,胡蓉,等. LabVIEW虛擬儀器數(shù)據(jù)采集與串口通信測控應用實戰(zhàn)[M]. 北京:人民郵電出版社,2010.

      [2] Peter W.Gofton. Mastering Serial Communications[M]. 北京:電子工業(yè)出版社,1995.

      [3] 呂向鋒,高洪林,等. 基于LabVIEW串口通信的研究[J]. 國外電子測量技術,2009,28(12):27-30,42.

      [4] 孫麗芹,王海龍,張景順,等. 一種基于LabVIEW的串口數(shù)據(jù)傳輸方法[J]. 通信技術,2013,46(4):139-141.

      [5] 劉金梅,王東穎,劉立超,等. 基于LabVIEW串口通信的多路數(shù)據(jù)采集系統(tǒng)設計[J]. 北華航天工業(yè)學院學報,2012,22(4):16-18.

      [6] 施雅婷,郭前崗,周西峰. 一種改進的LabVIEW串口通信系統(tǒng)的實現(xiàn)[J]. 電子測試,2010(8):64-68.

      猜你喜歡
      字符串緩沖區(qū)串口
      嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設計與實現(xiàn)
      淺談AB PLC串口跟RFID傳感器的通訊應用
      USB接口的多串口數(shù)據(jù)并行接收方法探索
      基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
      地礦測繪(2015年3期)2015-12-22 06:27:26
      關鍵鏈技術緩沖區(qū)的確定方法研究
      一種新的基于對稱性的字符串相似性處理算法
      基于并行控制的FPGA多串口拓展實現(xiàn)
      依據(jù)字符串匹配的中文分詞模型研究
      地理信息系統(tǒng)繪圖緩沖區(qū)技術設計與實現(xiàn)
      AVS標準中的視頻碼流緩沖區(qū)校驗模型分析
      電視技術(2012年1期)2012-06-06 08:13:58
      绥滨县| 冷水江市| 武冈市| 麦盖提县| 阿尔山市| 将乐县| 洛阳市| 泸水县| 仁化县| 德昌县| 兰州市| 新营市| 泽普县| 务川| 岚皋县| 海口市| 博罗县| 饶平县| 太保市| 武宁县| 正蓝旗| 离岛区| 万盛区| 沭阳县| 元氏县| 绥阳县| 南平市| 密云县| 汉寿县| 保定市| 隆子县| 闸北区| 江孜县| 红桥区| 封开县| 大港区| 镇赉县| 昌都县| 扎兰屯市| 丹巴县| 乌鲁木齐市|