<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 溫控系統中VB實(shí)現的PC機與單片機串行通迅

溫控系統中VB實(shí)現的PC機與單片機串行通迅

作者: 時(shí)間:2012-03-19 來(lái)源:網(wǎng)絡(luò ) 收藏

引言

本文引用地址:http://dyxdggzs.com/article/171848.htm

現代的測控中通常以機作為控制中心,將采集到的數據通過(guò)串口送給機進(jìn)行各種處理,為保證數據傳送的及時(shí)性和正確性,就必須建立可靠的通訊。我們在開(kāi)發(fā)全自動(dòng)生化分析儀溫度控制時(shí),溫度信號的測控及采集均由自行完成,然后通過(guò)異步通信口將溫度信號實(shí)時(shí)地傳送給 機進(jìn)行處理。上位PC機使用進(jìn)行串口通信的編程,下位單片機使用C51進(jìn)行編程。

1 串口通信的方法

1.1 通信控件MSComm簡(jiǎn)介

下的端口通信是通過(guò)其提供的控件Microsoft Comm control(簡(jiǎn)稱(chēng)MSComm)的。該控件屏蔽了通信過(guò)程中的底層操作,程序員只需設置并監視MSComm控件的屬性和事件,結合其它VB提供的控件就可完成對串口的初始化和數據的發(fā)送接收。本系統中用到的主要MSComm控件屬性如下:

①、Commport:設置并返回通信端口代碼。默認值為1,最大值為16,需要使用超過(guò)16個(gè)通信端口時(shí),要采用其他方式操控通信端口(如PcommPro軟件)。例如將串口2設為通信端口:MsComm1.CommPort=2。

②、Setting:設置初始化參數。其格式為“****,P,D,S”,其中****為波特率(baud),P為校驗方式,D為數據位數,S為停止位。默認值為“9600,N,8,1”,意為“串口通信速度為9600Baud,無(wú)校驗,每次數據為8個(gè)Bit,停止位為1個(gè)Bit”。波特率可為 110,300,600,1200,2400,9600,14400,19200,28800,38400(保留)等等。校驗位默認為None(無(wú)校驗),若傳輸距離長(cháng),可增加校驗位,可選M為符號校驗,E為偶校驗,O為奇校驗,S為空白校驗。停止位的設定值可為:1(默認值),1.5,2。

此處的設置要和單片機側的設置保持一致,否則不能正常的通信。例如我們采用的初始化參數為“2400,N,8,1”,則單片機側的設置相應項為:定時(shí)器1的初值為E6并且SMOD(口波特率加倍位)為1(對應2400Bit),串口控制寄存器SCON為40(10位異步收發(fā),對應8Bit數據位,1Bit停止位)。

③、PortOpen:設置或返回通信端口狀態(tài)。

④、Input:從緩沖區返回并刪除字符。將串行輸入寄存器的數據讀出,并清除寄存器中已讀取的數據。寄存器的特性是FIFO(First In First Out,先進(jìn)先出)。例如:BufIn$=MSComm1.Input,是將輸入寄存器中的字符讀入BufIn字符變量中。

⑤、InputLen:設置并返回Input屬性每次從接收緩沖區讀取的字符數。默認值為0,表示讀取全部字符。本系統InputLen=2,即一次讀取兩個(gè)字節。

⑥、Rthreshold:設置或返回引發(fā)接收事件的字節數。當接收寄存器達到設置的字節數時(shí),將引發(fā)OnComm事件中的接收事件。

⑦、CommEvent:返回最近的通信事件或錯誤。只要有通信事件或錯誤發(fā)生就會(huì )產(chǎn)生OnComm事件。CommEvent屬性中存有該事件或錯誤的數值代碼。程序員可通過(guò)檢測數值代碼來(lái)進(jìn)行相應的處理。

⑧、InputMode:設置或返回Input屬性取回的數據的類(lèi)型。有兩個(gè)形式,設為ComInputModeText(默認值)時(shí),按字符串形式接收;設為ComInputModeBinary時(shí),當作字節數組中的二進(jìn)制數據來(lái)接收。單片機和PC機的通信一般使用 ComInputModeBinary形式,本系統采用字節接收方式。

1.2 串行通信實(shí)現的兩種基本方法

有兩種方法可實(shí)現VB下串行通信的控制,一是查詢(xún)法(Polling),二是事件驅動(dòng)法(Event-driven)。

①、查詢(xún)法(Polling)

這種方法是在每個(gè)重要的程序之后查詢(xún)MSComm控件的某些屬性值(如CommEvent屬性和InBufferCount屬性)來(lái)檢測事件和通信狀態(tài)。適用于小程序。查詢(xún)可使用定時(shí)器或DO...LOOP實(shí)現。

②、事件驅動(dòng)法(Event-driven)

這是處理串口通信的一種有效方法。當串口接收或發(fā)送指定數量的數據,或當串口通信狀態(tài)發(fā)生改變時(shí),MSComm控件觸發(fā)OnComm事件。在OnComm 事件中,可通過(guò)檢測MSComm.CommEvent屬性值獲知串口的各種狀態(tài),從而進(jìn)行相應的處理。這種方法程序響應及時(shí),可靠性高。本系統采用了此法來(lái)實(shí)現串口的通信。

34.gif


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>