999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于.NET2.0串行端口資源的PC機與FCS實驗系統串口通信的設計

2008-12-31 00:00:00
電腦知識與技術 2008年29期

摘要:.NET2.0新增SerialPort類為串口通信提供了強大的工具。該文重點闡述將DCS改造為FCS實驗裝置后,上位機是如何利用這一工具實現與控制系統之間的數據通信,從而證明采用C#串行通信類可以使串行通信程序的設計具有更強的實用性和靈活性,使串口數據傳輸變得更方便和可靠。

關鍵詞:.NET2.0;SerialPort類;FCS系統

中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)29-0323-02

Design of Serial Communication between PC and FCS Experimental System Based on .NET2.0 Serial Port Resources

LI Lin

(Changzhou Institute of Engineering Technology,Changzhou 213164,China)

Abstract: New class SerialPort of .NET2.0has provided a powerful tool for the serial communication. This paper focuses on how the master PC use this tool to finish the data communications with control system after the transformation from DCS to FCS experimental device. It is proved that the use of C # serial communication class can make the design of serial communication program more practical and flexible, so that the serial data transmission has become more convenient and reliable.

Key words: .NET2.O; serialPort class; FCS

我院有一套1999年購置的DCS(集散控制系統)實驗裝置,經過多年使用設備的性能已經下降,同時技術上已過時,另外,實驗控制操作臺DOS界面的顯示和操作極為不便,不能很好地完成教學實驗任務。于是,我們設想在原有DCS系統的基礎上,外加一些簡單的控制裝置,快速地改造DCS系統,以少量的投資快速地建立一套先進的FCS(現場總線系統)裝置,此外,該系統控制操作臺的界面需要改造為操作簡便而直觀Windows窗體形式。

1 DCS實驗系統改造基本思路

該實驗裝置是由控制對象和控制操作臺兩大部分組成。控制對象如圖1所示,以熱水鍋爐為核心,配有循環水泵、高位水箱、水槽組成的供排水系統和手動切換閥組等,對象中安裝了各類檢測變送儀表和執行機構,是一套微縮了的常用生產過程裝置;操作臺則將控制對象中的儀表信號和電氣負載轉移到信號接線板上并提供配電端子,接線板上方有十余塊各種儀表類和電氣類實驗板。整套系統包括有流量、壓力、液位、溫度四大熱工參數的10個測量點,及電動調節閥、變頻器、晶閘管開關等電力拖動類執行器3個控制點。

上位機采用普通PC機,是通過圖形界面方式顯示控制對象,并通過鼠標及鍵盤操作讀出測量點參數,或寫入要求達到的參數值。經過設計,改造后整個裝置的基本原理如圖2所示。

筆者主要負責上位機功能的實現,這主要包括兩個方面的內容,一是Windows平臺的系統界面及相關功能,二是與下位的串行數據傳輸。經過討論和實踐我們采用Visual studio2005平臺的C#語言作為開發工具,而數據通信借助了C#的SerialPort 類。

2 .NET2.0的串口通訊技術簡介

微軟的NET Framework 2.0 類庫包含了SerialPort 類,可以方便地實現所需要串口通訊的多種功能,其基本技術如下:

1) 命名空間

System.IO.Ports命名空間包含了控制串口重要的SerialPort類,該類提供了同步 I/O 和事件驅動的 I/O、對管腳和中斷狀態的訪問以及對串行驅動程序屬性的訪問。

2) 串口的通訊參數

串口通訊最常用的參數就是通訊端口號及通訊格式(波特率、數據位、停止位和校驗位)。

① 通訊端口號

[PortName]屬性獲取或設置通信端口,包括但不限于所有可用的 COM 端口,該屬性返回類型為String。通常情況下,PortName正常返回的值為 COM1、COM2……,所以用戶進行串口設備的配置是十分方便的。

② 通訊格式

SerialPort類對分別用[BaudRate]、[DataBits]、[StopBits] 、[Parity]屬性設置通訊格式中的波特率、數據位、停止位和校驗位,其中[Parity]和[StopBits]分別是枚舉類型,Parity類型中枚舉了Odd(奇)、Even(偶)、Mark、None、Space,StopBits枚舉了None、One、OnePointFive、Two。

SerialPort類提供了七個重載的構造函數,既可以對已經實例化的SerialPort對象設置上述相關屬性的值,也可以使用指定的端口名稱、波特率和奇偶校驗位數據位和停止位直接初始化 SerialPort 類的新實例。

3) 串口的打開和關閉

調用SerialPort類的Open()和Close()方法就可以實現串口的打開和關閉。

4) 數據的發送和讀取

Serial類調用重載的Write和WriteLine方法發送數據,其中WriteLine可發送字符串并在字符串末尾加入換行符,讀取串口緩沖區的方法有許多,其中除了ReadExisting和ReadTo,其余的方法都是同步調用,線程被阻塞直到緩沖區有相應的數據或大于ReadTimeOut 屬性設定的時間值后,引發ReadExisting異常。

5) DataReceived事件

DataReceived事件在接收到了[ReceivedBytesThreshold]設置的字符個數或接收到了文件結束字符并將其放入了輸入緩沖區時被觸發。

3 實驗系統改造中的串口通訊設計

系統的數據傳輸主要有兩種情況,一是寫入,即直接要求控制系統通過相關控制點的操作,使有關參數達到寫入的值;第二種是讀出,即從總線中讀出當前某參數的值,顯示在操作臺界面的相應位置。對于上位機來說,前一種操作比較簡單,只要按照一定的格式向串口發送數據即可,后一種則略微復雜,先要向串口發送讀數請求,稍加延時后再從串口讀相應的參數,并對讀入參數進行合法性檢驗,將合法的數據顯示在界面的相應位置,不合法的參數則要放棄,同時界面提示再次讀入。至于這一過程中下位機的數據讀寫和處理則不屬于本文論述的范圍。

3.1 串口的數據格式設計

為了便于上下位機讀寫參數,所以數據(二進制)全部采用字符串表示,傳輸的數據采用定長格式,不采用握手協議,不設停止位和奇偶校驗,又因為實驗系統中各參數的值都不大,所以用兩個字節就能夠滿足要求:

X-XXX-XXXXXXXXXXXX

其中3位熱工參數位的含義分別為:001表示液位,010表示溫度,011表示壓力,100表示流量。例如:10001000000010100表示寫入參數值1(即溫度值)為20℃。

3.2 參數設置

serialPort1.PortName = \"COM1\";//串口名

serialPort1.BaudRate = 9600;//波特率

serialPort1.Parity = Parity.None;//不作奇偶校驗

serialPort1.DataBits = 8;

serialPort1.StopBits = StopBits.One;//停止位為1位

serialPort1.Handshake = Handshake.None;//不使用握手協議

serialPort1.ReadBufferSize = 4096;

serialPort1.ReadTimeout = 500;

3.3 具體實現

一般來說,實現串口通信首先是設置通信參數,然后打開串口,再進行讀寫,完成后關閉串口,以下是發出讀指令并讀入數據的代碼片段,由于篇幅所限,這里的代碼并不完整:

private void frmDisplay_Load(object sender, EventArgs e)

{

//發送讀取指令。0表示為要讀取數據,001表示為液位。

string parameter = this.Text.Trim();//檢查參數是哪一個

switch (parameter)

{

case \"液位調節\":

this.serialPort1.Open();//打開端口連接

this.serialPort1.WriteTimeout = 500;//設置超時

this.serialPort1.WriteLine (\"00010000000000000000\");//寫串口,發送讀數請求

…… //延時1S

this.serialPort1.ReadTimeout = 500;

string str= this.serialPort1.ReadExisting();//從接收緩沖讀取全部數據

this.serialPort1.Close(); //關閉串口

CheckData(str);//檢查讀入數據的合法性,并將結果顯示在界面上

break;

case \"溫度調節\":

……

}

……

}

4 結束語

本文就DCS實驗系統改造過程中如何應用.NET的串口通訊技術進行上位機和控制系統的數據傳輸進行了闡述,從中可以清楚地看到,Visual studio 2005在串口通訊方面已為我們提供了十分有力而又便捷的工具,使我們在即使沒有握手協議的情況下,也能方便地實現串口的數據通訊。

參考文獻:

[1] 何文才,杜鵬,劉培鶴,等.基于VB.NET的PC機和MCS-51單片機之間的串行通信[J].北京電子科技學院學報,2006,14(4).

[2] 韓中華,趙貞麗,丁志文.基于C#串行類的PC機與IC卡讀寫器串行通信的實現[J].科技廣場,2007(3).

[3] James Foxall.Visual C# 2005入門經典[M].北京:人民郵電出版社,2007.

主站蜘蛛池模板: 欧美精品在线免费| 国产精品永久不卡免费视频| 在线欧美国产| 日韩成人在线一区二区| 亚洲天堂免费在线视频| 丰满少妇αⅴ无码区| 国产精品毛片在线直播完整版| 亚洲Aⅴ无码专区在线观看q| 国产在线观看第二页| 亚洲va欧美ⅴa国产va影院| 精品人妻无码中字系列| 久久福利网| 青青草原国产免费av观看| 亚洲视频三级| 久久精品免费国产大片| 男女男免费视频网站国产| 无码免费试看| 久久性妇女精品免费| 在线a网站| 久久频这里精品99香蕉久网址| 人妻无码一区二区视频| 亚洲性一区| 精品久久高清| 美女无遮挡免费网站| 亚洲欧美日韩久久精品| 国产丝袜丝视频在线观看| 青青青国产视频| 国产成人高清亚洲一区久久| 无码综合天天久久综合网| 欧美精品影院| 亚洲人网站| 国产一区二区丝袜高跟鞋| 啊嗯不日本网站| 97人人做人人爽香蕉精品 | 国产精品一区二区无码免费看片| 国产成年无码AⅤ片在线| 中文字幕伦视频| 国产日本一区二区三区| 中文字幕在线播放不卡| 国产导航在线| 国模极品一区二区三区| 亚洲熟妇AV日韩熟妇在线| 亚洲欧美一区二区三区蜜芽| 依依成人精品无v国产| 亚洲无码高清一区| 日韩毛片视频| 亚洲国产成人精品青青草原| 1024你懂的国产精品| 色国产视频| 久久99热这里只有精品免费看| 天天综合色网| 91探花国产综合在线精品| 在线观看国产精美视频| vvvv98国产成人综合青青| 国产综合日韩另类一区二区| 午夜福利网址| 色婷婷丁香| 免费无码AV片在线观看国产| 风韵丰满熟妇啪啪区老熟熟女| 2020最新国产精品视频| 精品福利视频导航| 国产精品免费久久久久影院无码| 欧美在线视频不卡第一页| 欧美成人手机在线观看网址| 特级aaaaaaaaa毛片免费视频 | 免费精品一区二区h| 成人午夜天| 国产成人精品高清不卡在线 | 五月天久久综合国产一区二区| 欧美日韩国产在线观看一区二区三区| 欧美乱妇高清无乱码免费| 好吊色妇女免费视频免费| 色偷偷男人的天堂亚洲av| 久久99久久无码毛片一区二区| аv天堂最新中文在线| 99青青青精品视频在线| 97在线观看视频免费| 女人18毛片水真多国产| 色婷婷视频在线| 婷婷亚洲综合五月天在线| 国产成人一二三| 亚洲69视频|