亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于串行通信的智能家居上位機(jī)設(shè)計(jì)

        2010-04-12 00:00:00江永池
        現(xiàn)代電子技術(shù) 2010年13期

        摘 要:在智能家居系統(tǒng)設(shè)計(jì)中,串行通信是實(shí)現(xiàn)上位機(jī)與下端模塊通信的最主要的手段。為了提高上位機(jī)與下端模塊的通信效率,在上位機(jī)設(shè)計(jì)時(shí)通過(guò)使用Windows的MSComm控件和自編制的串口接收發(fā)送動(dòng)態(tài)控件的比較,發(fā)現(xiàn)利用MSComm控件雖然可以方便快捷地編制出上位機(jī)程序,但其通信效率偏低,誤幀和失幀率較高,只適用于單模塊測(cè)試。對(duì)于多模塊實(shí)時(shí)通信系統(tǒng),采用其他控件或自編制收發(fā)程序更為有效。

        關(guān)鍵詞:上位機(jī); 單片機(jī); 智能家居系統(tǒng); 協(xié)議; 串行通信; MSComm控件

        中圖分類號(hào):TP18 文獻(xiàn)標(biāo)識(shí)碼:A

        文章編號(hào):1004-373X(2010)13-0133-04

        Upper Computer Control in Intelligent Home System Based on Serial Communication

        JIANG Yong-chi

        (Shantou Polytechnic College, Shantou515078, China)

        Abstract: Serial communication is the most important communication method between upper computer control and lower model(MCU) in the design of intelligent home system. By comparison between MSComm control of Windows and self-written serial transcieving dynamic control during the design of the uppercomputer to improve the communication efficiency of the upper computer control and the model at lower end, it is found that the communication efficiency of the upper computer program written by MSComm control is low, and the rate of error-frame and lost-frame is high though the program can be written out quickly with MSComm control. Two different ways to test the serial port communication abbility and find the follow facts: MSComm control can only use in single model can′t use in a multi-model system.

        Keywords: upper computer control; MCU; intelligent home system; protocols; serial communication; MSComm control

        0 引 言

        上位機(jī)設(shè)計(jì)是智能家居系統(tǒng)的一個(gè)重要組成部分,擔(dān)負(fù)著管理、控制、維護(hù)和用戶界面操作的重任,高效可靠的上位機(jī)設(shè)計(jì)是整個(gè)系統(tǒng)正常運(yùn)作的重要保障。上位機(jī)與系統(tǒng)的通信實(shí)際上是與下端單片機(jī)的通信[1]。單片機(jī)或單片機(jī)系統(tǒng)是智能家居控制的核心,當(dāng)計(jì)算機(jī)作為單片系統(tǒng)的一個(gè)角色時(shí),通常被稱為“工控機(jī)”或“上位機(jī)”,各獨(dú)立的單片機(jī)是系統(tǒng)中實(shí)現(xiàn)功能的一個(gè)模塊,所以有時(shí)也稱單片機(jī)為模塊。

        計(jì)算機(jī)與單片機(jī)是通過(guò)串口來(lái)實(shí)現(xiàn)通信的,本文著重討論計(jì)算機(jī)與單片機(jī)的串口通信的實(shí)現(xiàn)方法和MSComm控件技術(shù)。

        1 上位機(jī)在智能家居系統(tǒng)的角色

        首先,必須認(rèn)識(shí)計(jì)算機(jī)在智能家居系統(tǒng)的作用,可以概括為以下幾個(gè)方面:

        1.1 通信測(cè)試工具

        傳統(tǒng)的單片機(jī)系統(tǒng)的通信測(cè)試通過(guò)示波器來(lái)監(jiān)測(cè),既不直觀又容易丟失信息。將計(jì)算機(jī)加入到系統(tǒng)中,可以實(shí)時(shí)監(jiān)測(cè)到線路中的信息,并以數(shù)字化呈現(xiàn),使各個(gè)單片機(jī)間的通信得到檢驗(yàn),及時(shí)解決系統(tǒng)存在的問(wèn)題。所以計(jì)算機(jī)在加速系統(tǒng)的開(kāi)發(fā)和保證系統(tǒng)的運(yùn)行質(zhì)量的作用就不言而喻了。

        1.2 系統(tǒng)維護(hù)

        一個(gè)單片機(jī)系統(tǒng)往往需要對(duì)系統(tǒng)中各個(gè)不同功能的模塊(單片機(jī))進(jìn)行參數(shù)的設(shè)置,以適應(yīng)不同的運(yùn)行環(huán)境,雖然可以通過(guò)各模塊的控制面板來(lái)調(diào)整,但操作通常比較麻煩,非專業(yè)人員不易掌握。同時(shí)對(duì)于一些需要定義其地理位置的參數(shù)難以實(shí)現(xiàn),不夠直觀。計(jì)算機(jī)加入到系統(tǒng)中,不但可以解決操作上的問(wèn)題,同時(shí)還可以讀取各模塊的參數(shù),以便于調(diào)整[2]。

        1.3 單片機(jī)

        計(jì)算機(jī)可以作為單片機(jī)系統(tǒng)的一個(gè)模塊,完成相應(yīng)的功能。計(jì)算機(jī)應(yīng)答系統(tǒng)的請(qǐng)求、處理系統(tǒng)中的信息,一方面將信息呈現(xiàn)給用戶,另一方面計(jì)算機(jī)程序通過(guò)自動(dòng)計(jì)算或用戶的輸入,將信息反饋到系統(tǒng)中,參與系統(tǒng)的控制。

        1.4 主控機(jī)

        在單片機(jī)系統(tǒng)中,往往存在一個(gè)主控機(jī)或主控模塊,負(fù)責(zé)對(duì)整個(gè)系統(tǒng)的統(tǒng)籌和設(shè)置。單片機(jī)系統(tǒng)通常是通過(guò)各功能模塊的輸入和響應(yīng)來(lái)實(shí)現(xiàn)其功能的,因此必須有一個(gè)負(fù)責(zé)收集輸入任務(wù)并指定響應(yīng)模塊的主控模塊。計(jì)算機(jī)系統(tǒng)中既可以是一個(gè)普通的模塊,又可以是負(fù)責(zé)總體協(xié)調(diào)的主控器。

        2 通信協(xié)議

        一個(gè)單片機(jī)系統(tǒng)是由硬件系統(tǒng)和軟件系統(tǒng)構(gòu)成的。硬件是實(shí)現(xiàn)功能的前提,而系統(tǒng)功能則是通過(guò)軟件來(lái)實(shí)現(xiàn)的,為了保證各個(gè)模塊通信,實(shí)現(xiàn)系統(tǒng)信息交流,必須制訂系統(tǒng)的通信協(xié)議。

        從物理上來(lái)說(shuō),系統(tǒng)各模塊是以半雙工的模式來(lái)通信的,下文提及的智能照明系統(tǒng)下端模塊就是以半雙工的RS 485總路線為通信架構(gòu)的。而計(jì)算機(jī)的RS 232串口是以全雙工的模式來(lái)實(shí)現(xiàn)通信的,因此,計(jì)算機(jī)要通過(guò)串口參與到單片機(jī)系統(tǒng)中必須增加一個(gè)RS 232和RS 485總線轉(zhuǎn)換的模塊[3]。

        從邏輯上講,要實(shí)現(xiàn)各模塊之間的通信,就必須在模塊間約定一個(gè)共同遵守的通信協(xié)議。單片機(jī)以位(b)為基本單位,傳輸時(shí)以8位1字節(jié)(B)來(lái)傳輸,單片機(jī)以毫秒間距發(fā)送若干個(gè)字節(jié)為一個(gè)數(shù)據(jù)包,也稱為一幀,幀之間又規(guī)定若干毫秒的間隙。通過(guò)計(jì)算機(jī)程序可以捕獲線路中每一幀信息。

        下面以智能照明系統(tǒng)為例,講述單片機(jī)系統(tǒng)的通信協(xié)議。

        本協(xié)議采用異步串行通信方式,字節(jié)幀格式:1個(gè)起始位+8個(gè)數(shù)據(jù)位+1個(gè)停止位,無(wú)校驗(yàn)位。

        幀格式如下[4]:

        1幀=幀頭(F4H F5H)+數(shù)據(jù)包+幀尾(F4H FBH) <255 B

        數(shù)據(jù)包=有效字節(jié)數(shù)(1 B)+傳輸層數(shù)據(jù)+校驗(yàn)和(1 B)<251 B

        幀數(shù)據(jù)的發(fā)送、接收過(guò)程中前后兩字節(jié)數(shù)據(jù)傳送延時(shí)不得超過(guò)0.5 s。

        各模塊分配兩個(gè)字節(jié)的地址碼,第一字節(jié)代表模塊類型,第二字節(jié)代表模塊在系統(tǒng)中分配的順序。各模塊獲取總線上的幀后,對(duì)自己的地址幀響應(yīng),其他的幀拋掉。

        以下是本協(xié)議中的關(guān)于“燈開(kāi)??刂啤钡膮f(xié)議:

        描述:該信息是輸出子模塊的各路燈的開(kāi)或關(guān)控制。

        構(gòu)成:該信息發(fā)送時(shí)由信息頭和信息內(nèi)容構(gòu)成,返回時(shí)由信息頭構(gòu)成。

        主控器或PC機(jī)發(fā)給輸出模塊時(shí):

        MessageType53

        MessageSubType0/2

        Result0

        信息內(nèi)容:

        第一字節(jié),燈號(hào)字節(jié)10:不相關(guān),1:相關(guān),bit7~bit0分別對(duì)應(yīng)本模塊8~1號(hào)燈

        第二字節(jié),燈號(hào)字節(jié)10:不相關(guān),1:相關(guān),bit6~bit0分別對(duì)應(yīng)本模塊15~9號(hào)燈

        第三字節(jié),開(kāi)度值0:關(guān),1~63亮度值:開(kāi),128:突關(guān),255:突關(guān)

        第四字節(jié),變光時(shí)間0~255

        輸出模塊返回給主控器時(shí),信息頭定義如下:

        MessageType53

        MessageSubType0/2

        ResultDependent on operation(1 or 0)

        系統(tǒng)的通信按照規(guī)定的各條協(xié)議來(lái)執(zhí)行。

        3 計(jì)算機(jī)通信的實(shí)現(xiàn)

        計(jì)算機(jī)硬件上通過(guò)RS 232與RS 485接口轉(zhuǎn)換與下端模塊進(jìn)行通信。而軟件的實(shí)現(xiàn)有多種方法,下面主要介紹在VB 6.0通過(guò)MSComm控件來(lái)實(shí)現(xiàn)通信的方法[5]。

        3.1 將MSComm控件引入到VB平臺(tái)

        MSComm 控件通過(guò)串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通訊功能。MSComm控件在串口編程時(shí)非常方便,程序員不必去花時(shí)間去了解較為復(fù)雜的API函數(shù)[6],而且在VC,VB,Delphi等語(yǔ)言中均可使用。

        MSComm是Microsoft公司提供的簡(jiǎn)化Windows下串行通信編程的ActiveX控件,它為應(yīng)用程序提供了通過(guò)串行接口收發(fā)數(shù)據(jù)的簡(jiǎn)便方法。具體的來(lái)說(shuō),它提供了兩種處理通信問(wèn)題的方法:一是事件驅(qū)動(dòng)(Event-driven)方法,一是查詢法。

        3.2 MSComm控件的設(shè)置

        3.2.1 MSComm控件的屬性

        MSComm控件有很多重要的屬性,正確設(shè)置其屬性是程序進(jìn)行正常通信的保證,下面介紹幾個(gè)必須熟悉的屬性[7] 。

        CommPort:設(shè)置并返回通訊端口號(hào)。

        Settings:以字符串的形式設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位。

        PortOpen:設(shè)置并返回通訊端口的狀態(tài),也可以打開(kāi)和關(guān)閉端口。

        Input:從接收緩沖區(qū)返回和刪除字符。

        InputMode:接收模式,取0值時(shí),接收文本數(shù)據(jù);取1時(shí),接收二進(jìn)制數(shù)據(jù)。

        Output:向傳輸緩沖區(qū)寫一個(gè)字符串。

        Rthrehold:響應(yīng)模式,取整數(shù)。當(dāng)接收字符后,若Rthrehold屬性設(shè)置為 0,則不產(chǎn)生OnComm 事件;若設(shè)置為1,則接收緩沖區(qū)收到每一個(gè)字符都會(huì)使 MSComm控件產(chǎn)生OnComm事件。

        Sthreshold:發(fā)送模式,設(shè)置0(缺省值),數(shù)據(jù)傳輸事件不會(huì)產(chǎn)生OnComm事件;設(shè)置為1,當(dāng)傳輸緩沖區(qū)完全空時(shí),MSComm控件產(chǎn)生OnComm 事件。如果在傳輸緩沖區(qū)中的字符數(shù)小于value,CommEvent 屬性設(shè)置為comEvSend,并產(chǎn)生OnComm 事件。

        Handshake:通信握手模式,取值為0時(shí),無(wú)握手;取值為1時(shí),表示XOn/Xoff握手;取值為2時(shí),表示Request-to\\\\-send/clear-to-send握手;取值為3時(shí),表示equest-to-send clear-to-send握手皆可。

        3.2.2 MSComm控件兩種處理通訊的方式

        MSComm控件提供下列兩種處理通訊的方式:事件驅(qū)動(dòng)方式和查詢方式[8]。

        (1) 事件驅(qū)動(dòng)方式

        事件驅(qū)動(dòng)通訊是處理串行端口交互作用的一種非常有效的方法。在許多情況下,在事件發(fā)生時(shí)需要得到通知,例如,在串口接收緩沖區(qū)中有字符,或者Carrier Detect(CD)或Request To Send(RTS)線上一個(gè)字符到達(dá)或一個(gè)變化發(fā)生時(shí)。在這些情況下,可以利用MSComm控件的OnComm事件捕獲并處理這些通訊事件。OnComm事件還可以檢查和處理通訊錯(cuò)誤。所有通訊事件和通訊錯(cuò)誤的列表,參閱CommEvent屬性。在編程過(guò)程中,就可以在OnComm事件處理函數(shù)中加入自己的處理代碼。這種方法的優(yōu)點(diǎn)是程序響應(yīng)及時(shí),可靠性高。每個(gè)MSComm控件對(duì)應(yīng)著一個(gè)串行端口。如果應(yīng)用程序需要訪問(wèn)多個(gè)串行端口,必須使用多個(gè)MSComm控件。

        (2) 查詢方式

        查詢方式實(shí)質(zhì)上還是事件驅(qū)動(dòng),但在有些情況下,這種方式顯得更為便捷。在程序的每個(gè)關(guān)鍵功能之后,可以通過(guò)檢查CommEvent屬性的值來(lái)查詢事件和錯(cuò)誤。如果應(yīng)用程序較小,并且是自保持的,這種方法可能是更可取的。例如,如果寫一個(gè)簡(jiǎn)單的電話撥號(hào)程序,則沒(méi)有必要對(duì)每接收一個(gè)字符都產(chǎn)生事件,因?yàn)槲┮坏却邮盏淖址钦{(diào)制解調(diào)器的“確定”響應(yīng)。

        3.3 計(jì)算機(jī)信息發(fā)送和接收的實(shí)現(xiàn)

        下面以智能照明系統(tǒng)中PC機(jī)與主控器的通信,說(shuō)明計(jì)算機(jī)與單片機(jī)通信的實(shí)現(xiàn)方法。以下是實(shí)現(xiàn)的主要子程序。

        頁(yè)面裝載程序:

        Private Sub Form Load()

        com sl=\"com1\"

        bauty=9600

        For i=0 To 59

        Text2(i).Text=\"\"

        Next i

        Open \"recieve.txt\" For Output As #1

        End Sub

        MSComm控件的設(shè)置程序:

        Private Sub Command1 Click()

        com sl=Combo1.Text

        bauty=Combo2.Text

        convert=Check1.Value

        Form2.Hide

        Form1.Command6.Enabled=False

        Form1.Command4.Enabled=True

        End Sub

        通信口控制子程序:

        Private Sub Command4 Click()

        Select Case bauty

        Case 1200

        MSComm1.Settings=\"1200,n,8,1\"

        Case 2400

        MSComm1.Settings=\"2400,n,8,1\"

        Case 9600

        MSComm1.Settings=\"9600,n,8,1\"

        Case 19200

        MSComm1.Settings=\"19200,n,8,1\"

        Case 57600

        MSComm1.Settings=\"57600,n,8,1\"

        End Select

        If com sl=\"com1\" Then MSComm1.CommPort=1

        If com sl=\"com7\" Then MSComm1.CommPort=7

        MSComm1.RThreshold=0

        If MSComm1.PortOpen=False Then

        MSComm1.PortOpen=True

        End If

        Command4.Enabled=False

        Command5.Enabled=True

        Command3.Enabled=False

        If convert Then MSComm1.RTSEnable=True

        End Sub

        通信建立后,計(jì)算機(jī)就可以與下端單片機(jī)通過(guò)設(shè)定的協(xié)議進(jìn)行通信,可以測(cè)試下端模塊的響應(yīng)。

        4 MSComm控件的問(wèn)題和解決辦法

        在實(shí)際應(yīng)用中,MSComm控件對(duì)于一問(wèn)一答式的通信,效果還是可以的,所以用于單模塊的通信測(cè)試問(wèn)題不大。但是,如果計(jì)算機(jī)作為單片系統(tǒng)的一個(gè)角色,要實(shí)時(shí)捕獲總線上的信息并響應(yīng),存在失幀和誤幀的問(wèn)題[9],如果系統(tǒng)要求不高,還可以對(duì)付,而象智能照明這樣要求信息持續(xù)、實(shí)時(shí)、準(zhǔn)確的系統(tǒng),利用MSComm控件處理串口通信就難以勝任了[10]。

        在智能照明系統(tǒng)中,采用了自編制的動(dòng)態(tài)庫(kù)Transdata.dll程序,作為處理串口通信的接口,誤幀率和失幀率較低,能滿足產(chǎn)品化的要求。

        Transdata.dll使用說(shuō)明:

        (1) 初始化串口并處于通訊狀態(tài)<函數(shù)>

        Init OpenCom(byval m str as string,byval nbaud as Integer) as Boolean

        參數(shù)說(shuō)明:m str為串口名稱,如“com1”“com2”等;nbaud為波特率,可為1 200,2 400,4 800,9 600等;返回值為Boolean,若為true則成功,否則失敗1。

        (2) 關(guān)閉串口結(jié)束通訊<過(guò)程>

        CloseCom()

        (3) 發(fā)送通訊數(shù)據(jù)<過(guò)程>

        SendData(n str as byte,byval ncount as Integer)

        參數(shù)說(shuō)明:n str 為要發(fā)送byte的數(shù)組的第一個(gè)字節(jié);如要發(fā)dim ndata(11) as byte這個(gè)數(shù)組,只需用ndata(0)作為n str參數(shù)即可;ncount為要發(fā)送的字節(jié)數(shù)。

        (4) 接收返回的數(shù)據(jù)<函數(shù)>

        GetData(byval m str as string)as string

        參數(shù)說(shuō)明:m str 必須為已有能容納所要接收字串的長(zhǎng)度空間返回接收到的字串,各個(gè)字節(jié)以“\\\”隔開(kāi)。

        5 結(jié) 語(yǔ)

        利用MSComm控件雖然可以方便快捷編制出的 上位機(jī)程序,但其通信效率偏低,誤幀和失幀率較高,只適用于單模塊測(cè)試。對(duì)于多模塊實(shí)時(shí)通信系統(tǒng),宜采用其他控件或自編制更有效的收發(fā)程序。

        參考文獻(xiàn)

        [1]錢衛(wèi)東.樓宇智能化技術(shù)概論[ M] .北京:電子工業(yè)出版社,2006.

        [2]江永池.智能照明控制系統(tǒng)上位機(jī)軟件Ihome技術(shù)說(shuō)明書(shū)[ M] .順德:廣東科龍集團(tuán)華傲電子公司,2002.

        [3]侯艷.用VS2005實(shí)現(xiàn)AT89C51單片機(jī)與PC的串行通信[ J] .現(xiàn)代計(jì)算機(jī),2009(2):198-200.

        [4]陳堅(jiān)波.燈光控制通訊協(xié)議1.2.6[ S] .順德:廣東科龍集團(tuán)華傲電子公司,2001.

        [5]王賀艷.基于VB的PLC與PC機(jī)串行通信的實(shí)現(xiàn)[ J] .福建電腦,2009(2):150-154.

        [6]北京博彥科技發(fā)展有限公司.Visual Basic開(kāi)發(fā)教程[ M] .北京:清華大學(xué)出版社,2006.

        [7] 佚名.單片機(jī)與計(jì)算機(jī)RS 232串行通信開(kāi)發(fā)實(shí)例[ EB/OL] .[ 2009-07-15] .http://down.csdn.net/source/1316480.

        [8]李墨.單片機(jī)與PC機(jī)的串行通信[ J] .中國(guó)新技術(shù)新產(chǎn)品,2009(13):29.

        [9]邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開(kāi)發(fā)方法[ M] .北京:清華大學(xué)出版社,2004.

        [10]李雙科,吳記群.Windows環(huán)境下計(jì)算機(jī)與PLC串行通信的實(shí)現(xiàn)[ J] .蘭州工業(yè)高等??茖W(xué)校學(xué)報(bào),2005,12(2):30-33.

        国产精品国产三级野外国产| 伊伊人成亚洲综合人网7777 | 丰满人妻一区二区三区蜜桃| 人人做人人爽人人爱| 中文字幕aⅴ人妻一区二区| 牲欲强的熟妇农村老妇女| 亚洲AV色无码乱码在线观看| 久久国产综合精品欧美| 中文无码制服丝袜人妻AV| 蜜臀一区二区av天堂| 久久精品国产亚洲av一般男女| 国产极品裸体av在线激情网| 人妻丰满av无码中文字幕| 伊人久久大香线蕉亚洲五月天| 国产999精品久久久久久| 精品无码AV无码免费专区| 国产激情久久久久久熟女老人| 少妇人妻偷人中文字幕| 久久一区二区三区老熟女| 国产精品人人做人人爽人人添| 999国内精品永久免费观看| 国产精品亚洲综合色区韩国| 国产在线网址| 亚洲无av高清一区不卡| 日本系列有码字幕中文字幕| av无码国产精品色午夜| 亚洲va中文字幕| 精品国产高清一区二区广区| 久久精品有码中文字幕1| 亚洲熟妇av一区二区三区hd| 精品国产一区二区三区三级| 国产免费一区二区三区免费视频| 亚洲成av人片在线观看无码| 成人激情四射网| 久久精品国语对白黄色| 国产av一区二区亚洲精品| 亚洲 欧美 日韩 国产综合 在线| 国产精品美女久久久久| 欧美成人久久久| 亚洲人妻av综合久久| 免费av网站大全亚洲一区|