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

用ComPort實現(xiàn)PC機和伺服控制器的串行通信

2010-06-05 10:47:38劉智慧
電子設(shè)計工程 2010年9期
關(guān)鍵詞:設(shè)置

劉智慧

(西安外事學院 計算機中心,陜西 西安710077)

隨著計算機的發(fā)展,單片機在工業(yè)控制領(lǐng)域里得到廣泛的應(yīng)用,例如:用于數(shù)據(jù)采集、監(jiān)控與控制等。很多工業(yè)控制系統(tǒng)都采用上下位機的方式,用串口來實現(xiàn)數(shù)據(jù)交換。為了實現(xiàn)上位機與下位機之間快速、高效的通信,這就需要根據(jù)兩者之間的通信協(xié)議在上位機和下位機編寫相應(yīng)的串口通信程序,本文主要是針對上位機串行通信的設(shè)計和實現(xiàn)。

1 串行通信控件庫ComPort

在Windows環(huán)境下,既可以用Windows API函數(shù)進行串行通信編程,也可以利用串行通信控件來進行編程。利用API函數(shù)編寫實際應(yīng)用程序時,往往要考慮多線程的問題,這樣編出來的程序龐大,且結(jié)構(gòu)復(fù)雜,繼承性差,維護困難。使用串行通信控件就相對簡單一些,而且其功能強大,性能安全可靠。Comport控件庫中就提供了串行通信控件。另外用Delphi編寫圖形用戶界面程序比較容易,所以用Delphi+ComPort控件庫進行串行通信程序的設(shè)計不失為一個明智的選擇[1]。

ComPort 控 件 庫 適 用 于 Win95、Win98、WinNT、Windows2000、Windows XP等操作系統(tǒng),支持 Delphi3~7和 C++Builder3~6, 有 TComPort、TComDataPacket、TComComboBox、TComRadioGroup、TComLed、TComTerminal等控件 (其中的TComPort提供的功能就類似于MSComm),支持同步、異步讀寫操作,可對流控制進行詳細的設(shè)置,可以設(shè)置讀寫操作的超時(TimeOut)時間,用多線程監(jiān)視串口事件[2]。

TComDataPacket可以很容易從輸入緩沖區(qū)中以包的形式讀出數(shù)據(jù),并且可以通過設(shè)定TComDataPacket的屬性來設(shè)定數(shù)據(jù)包的開始和終止條件。

TComTerminal可以接收TComPort控件接收到的數(shù)據(jù)并顯示在屏幕上。它支持VT52,VT100和ANSI等終端連接。

TComComboBox提供可視化用戶界面,使用戶可以很容易地設(shè)置串口的常用屬性,并可以選擇所需要的串口。

TComLed可以顯示CTS,DSR,RLSD,Ring,Tx和Rx等信號的狀態(tài)。TComLed可以與 TComPort連接,當這些串口信號變化的時候,TComLed就可以自動地更新這些信號的狀態(tài)。

本文中就是利用TComPort控件實現(xiàn)PC機(上位機)與伺服控制器(下位機)之間的串行通信。

1.1 ComPort提供的對串口進行操作的方式

串口的讀寫操作可以以2種方式進行:同步或者異步。在同步方式下,進行串口操作的函數(shù)直到操作完成或者產(chǎn)生錯誤才返回。在異步方式下,進行串口操作的函數(shù)執(zhí)行后直接返回,無需等待操作結(jié)束。在進行異步操作后,如果執(zhí)行的結(jié)果還沒有出來,所有應(yīng)用程序應(yīng)該調(diào)用等待函數(shù)(Wait)以確保操作完成。在異步操作和等待函數(shù)(Wait)之間,應(yīng)用程序可以執(zhí)行與此異步操作結(jié)果無關(guān)的其他任何操作[3]。

在執(zhí)行異步操作之前要先調(diào)用InitAsync方法,該方法是初始化PAsync類型的參數(shù),每個進行異步操作的方法都有PAsync參數(shù)。在操作完成后,調(diào)用DoneAsync方法釋放資源。

1.2 ComPort控件的常用屬性、方法和事件

ComPort控件有很多重要的屬性、方法和事件,通過這些可以很好地控制串口。常用的屬性方法和事件[4-5]如下:

1)常用屬性 ①BaudRate、Port、DataBits、Parity、StopBits:

分別設(shè)置串口的波特率、對應(yīng)的串口號、數(shù)據(jù)位、校驗類型和校驗位、停止位;②Buffer:設(shè)置接收、發(fā)送緩沖區(qū)的大小;③Connected:返回串口的狀態(tài);也可以打開或者關(guān)閉串口;④FlowControl:設(shè)置流的控制方式;⑤Timeouts:用來設(shè)置讀寫操作的間隔和完成的超時時間;⑥TriggersOnRxChar:用來設(shè)置當串口接收到數(shù)據(jù)的時候,哪個事件會被觸發(fā)(On-RxBuf還是 OnRxChar),通常設(shè)置 TriggersOnRxChar=True,也就是串口接收到數(shù)據(jù)時候,觸發(fā)OnRxChar事件。

2)常用方法和事件 ①Open/Close:打開/關(guān)閉串口;②Read/ReadStr:向串口讀字符/讀字符串;③Write/WriteStr:向串口寫字符/寫字符串;④OnRxChar:當串口接收到數(shù)據(jù)時,觸發(fā)該事件。

1.3 用ComPort讀串口數(shù)據(jù)的方式

ComPort提供了2種讀串口數(shù)據(jù)的方式:事件驅(qū)動方式和查詢方式。

1)事件驅(qū)動方式 用事件驅(qū)動方式對串口操作,響應(yīng)速度快,可靠性高,是一種有效的方式。當有串口接收到數(shù)據(jù)的時候,會觸發(fā)ComPort控件的OnRxChar事件,就可以在這個事件中寫處理數(shù)據(jù)的代碼。

2)查詢方式 查詢方式就是在需要讀取數(shù)據(jù)時,用Com-Port提供的Read或者ReadStr函數(shù)讀串口以獲得接收到的數(shù)據(jù)。

2 串行通信的實現(xiàn)

在電機伺服控制器的課題中,PC機作為上位機,通過串行口與多個用MCU實現(xiàn)的下位機進行通信,示意圖如圖1所示。

圖1 上位機與下位機通信示意圖Fig.1 Schematic diagram of communication between PC and MCU

用Delphi6編寫上位機的控制程序,用來控制下位機。上位機和下位機之間發(fā)送的數(shù)據(jù)格式如圖2所示。

圖2 數(shù)據(jù)格式Fig.2 Data format

每包數(shù)據(jù)的大小最少為4個字節(jié):指令字(2字節(jié));數(shù)據(jù)長度(1 字節(jié));數(shù)據(jù)字(0 字節(jié));校驗值(1 字節(jié))。

MCU每收到第3個字節(jié)(數(shù)據(jù)長度)后,由“數(shù)據(jù)長度”字節(jié)確定數(shù)據(jù)字的長度和校驗值。校驗值是從指令字的第1個字節(jié)到校驗值之前字節(jié)的異或值。判斷計算得到的校驗值與收到的校驗值是否一致,一致則發(fā)送回應(yīng)信息——數(shù)據(jù)已正常接收;否則不回應(yīng)。

2.1 串口設(shè)置

在ComPort控件的屬性欄中設(shè)置串口的主要屬性:BaudRate:=br9600;DataBits:=dbEight。 然后在“打開串口”按鈕的Click事件中打開串口,打開串口的偽代碼如下:

2.2 讀取下位機的數(shù)據(jù)

在下面的代碼中aCommandType表示上位機發(fā)給下位機的是地址幀 (TI_Address)、讀取數(shù)據(jù)的命令幀(TI_Command)還是發(fā)送給下位機的數(shù)據(jù)幀(TI_Data)。

首先上位機發(fā)送讀取數(shù)據(jù)的命令幀給MCU,這個命令幀包括要讀取的參數(shù)代碼。命令幀的具體格式由PackData()函數(shù)實現(xiàn),通信協(xié)議不同,PackData(CommandType:TInfo-Type)函數(shù)的實現(xiàn)也不同,讀取下位機數(shù)據(jù)的偽代碼[6]如下:

在下面的事件中接收下位機返回的數(shù)據(jù):

2.3 向下位機發(fā)送數(shù)據(jù)

其工作原理與從下位機讀取數(shù)據(jù)類似,向下位機發(fā)送數(shù)據(jù)的偽代碼如下:

3 實驗結(jié)果

通過上位機和一個下位機進行串行通信試驗,上位機成功獲得了伺服控制器(下位機)的狀態(tài)(伺服電機的速度、轉(zhuǎn)矩和位置偏差等),如圖3所示。

圖3 上位機與下位機通信獲得的數(shù)據(jù)繪制成的波形圖Fig.3 Graph of MCU status(PC got data from MCU by serial communication)

4 結(jié) 論

結(jié)合實際項目,利用第三方控件庫CPort中的控件ComPort在Windows下實現(xiàn)了PC機與單片機的串行通信,并給出了部分實現(xiàn)代碼及結(jié)果。此方案在實際運行過程中,實現(xiàn)了上位機與下位機之間的通信。本文中給出的只是CPort控件庫中的ComPort控件的應(yīng)用,CPort控件庫中還有其他的控件,如 ComLed,TComDataPacket,TcomTerminal等,可以幫助用戶很容易地實現(xiàn)串口通信相關(guān)的其他復(fù)雜的應(yīng)用程序。

[1]范逸之,陳立元.Delphi與RS-232串行通信控制[M].北京:清華大學出版社,2002.

[2]趙蘭濤,蘇彥華.Delphi串口通信技術(shù)與工程實現(xiàn)[M].北京:人民郵電出版社,2004.

[3]趙曙光.Delphi中利用ComPort元件開發(fā)串行通信程序[J].應(yīng)用科技,2001,28(3):15-16.ZHAO Shu-guang.Development of ComPort by use of Com-Port component in Delphi[J].Applied Science and Technology,2001,28(3):15-16.

[4]張程志.基于ComPort Library控件的Delphi串行數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計[J].水利科技與經(jīng)濟,2007,13(8):614-615.ZHANG Cheng-zhi.Computer series-port communication technology based on ComPort Library and XSL/B intelligent digital apparatus[J].Water Conservancy Science and Technology and Economy,2007,13(8):614-615.

[5]張秀德.基于ComPort Library的Delphi串行數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計[J].工業(yè)控制計算機,2004,17(12):53-54.ZHANG Xiu-de.Delphi software design of serial data acquisition system based on comport library[J].Industrial Control Computer,2004,17(12):53-54.

[6]席一凡.Delphi程序設(shè)計[M].北京:中國鐵道出版社,2008.

猜你喜歡
設(shè)置
中隊崗位該如何設(shè)置
少先隊活動(2021年4期)2021-07-23 01:46:22
船舶防火結(jié)構(gòu)及設(shè)置的缺陷與整改
水上消防(2020年5期)2020-12-14 07:16:18
中外醫(yī)學專業(yè)與專科設(shè)置對比分析及啟示
特殊場景下列控等級轉(zhuǎn)換的設(shè)置方案
7招教你手動設(shè)置參數(shù)
動車段(所)股道有效長設(shè)置研究
我國中小學將設(shè)置人工智能相關(guān)課程
玩具世界(2017年9期)2017-11-24 05:17:29
吃紙的妖怪
本刊欄目設(shè)置說明
中俄臨床醫(yī)學專業(yè)課程設(shè)置的比較與思考
主站蜘蛛池模板: 一级一级特黄女人精品毛片| 小蝌蚪亚洲精品国产| 国产成人AV综合久久| 五月天久久综合国产一区二区| 久久亚洲综合伊人| 综合亚洲网| 精品伊人久久久香线蕉| 亚洲综合在线最大成人| 在线看片免费人成视久网下载| 一本大道无码日韩精品影视| 国产成人精品综合| 色成人亚洲| 国产一区二区在线视频观看| 欧美精品一区在线看| 伦伦影院精品一区| 呦系列视频一区二区三区| 国产精品久久国产精麻豆99网站| 99成人在线观看| 精品久久777| 亚洲国产综合精品中文第一| 国产精品尹人在线观看| 亚洲国产成人久久精品软件| 欧美不卡视频在线观看| 免费激情网址| 国产成人综合久久精品下载| 亚洲人成网线在线播放va| 欧美va亚洲va香蕉在线| 麻豆国产在线不卡一区二区| 国产男女XX00免费观看| 一级毛片网| 国产丝袜无码一区二区视频| 中国精品久久| 婷婷综合在线观看丁香| 亚洲无码视频一区二区三区| 国产精品污视频| 五月天久久综合| 成年女人18毛片毛片免费| 亚洲日韩国产精品综合在线观看| 国产尤物视频网址导航| 亚洲欧美不卡| 美女被操91视频| 亚洲天堂精品在线| 在线毛片免费| 欧美激情,国产精品| 国产精品林美惠子在线观看| 国产尹人香蕉综合在线电影| 97超碰精品成人国产| аⅴ资源中文在线天堂| 欧美国产日韩在线| 免费看美女自慰的网站| 四虎精品免费久久| 99热这里只有免费国产精品 | 国产成人精品第一区二区| 免费黄色国产视频| 国产成人综合在线视频| 国产草草影院18成年视频| 久久久久中文字幕精品视频| 在线永久免费观看的毛片| 97人人模人人爽人人喊小说| 青青草原国产av福利网站| 日日拍夜夜操| 99精品视频在线观看免费播放| 国产视频自拍一区| 激情无码视频在线看| 亚洲中文久久精品无玛| 波多野结衣亚洲一区| 福利视频一区| 91成人试看福利体验区| 亚洲h视频在线| 亚洲欧洲日韩久久狠狠爱| 一级毛片不卡片免费观看| 伊人激情久久综合中文字幕| 青青青伊人色综合久久| 一本色道久久88亚洲综合| 不卡的在线视频免费观看| 最新国产麻豆aⅴ精品无| 无码国产偷倩在线播放老年人| 黄色在线网| 免费人成又黄又爽的视频网站| 久久久黄色片| 久久狠狠色噜噜狠狠狠狠97视色 | 操美女免费网站|