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

基于串行通信的智能家居上位機設計

2010-04-12 00:00:00江永池
現代電子技術 2010年13期

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

關鍵詞:上位機; 單片機; 智能家居系統; 協議; 串行通信; MSComm控件

中圖分類號:TP18 文獻標識碼:A

文章編號: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 引 言

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

計算機與單片機是通過串口來實現通信的,本文著重討論計算機與單片機的串口通信的實現方法和MSComm控件技術。

1 上位機在智能家居系統的角色

首先,必須認識計算機在智能家居系統的作用,可以概括為以下幾個方面:

1.1 通信測試工具

傳統的單片機系統的通信測試通過示波器來監測,既不直觀又容易丟失信息。將計算機加入到系統中,可以實時監測到線路中的信息,并以數字化呈現,使各個單片機間的通信得到檢驗,及時解決系統存在的問題。所以計算機在加速系統的開發和保證系統的運行質量的作用就不言而喻了。

1.2 系統維護

一個單片機系統往往需要對系統中各個不同功能的模塊(單片機)進行參數的設置,以適應不同的運行環境,雖然可以通過各模塊的控制面板來調整,但操作通常比較麻煩,非專業人員不易掌握。同時對于一些需要定義其地理位置的參數難以實現,不夠直觀。計算機加入到系統中,不但可以解決操作上的問題,同時還可以讀取各模塊的參數,以便于調整[2]。

1.3 單片機

計算機可以作為單片機系統的一個模塊,完成相應的功能。計算機應答系統的請求、處理系統中的信息,一方面將信息呈現給用戶,另一方面計算機程序通過自動計算或用戶的輸入,將信息反饋到系統中,參與系統的控制。

1.4 主控機

在單片機系統中,往往存在一個主控機或主控模塊,負責對整個系統的統籌和設置。單片機系統通常是通過各功能模塊的輸入和響應來實現其功能的,因此必須有一個負責收集輸入任務并指定響應模塊的主控模塊。計算機系統中既可以是一個普通的模塊,又可以是負責總體協調的主控器。

2 通信協議

一個單片機系統是由硬件系統和軟件系統構成的。硬件是實現功能的前提,而系統功能則是通過軟件來實現的,為了保證各個模塊通信,實現系統信息交流,必須制訂系統的通信協議。

從物理上來說,系統各模塊是以半雙工的模式來通信的,下文提及的智能照明系統下端模塊就是以半雙工的RS 485總路線為通信架構的。而計算機的RS 232串口是以全雙工的模式來實現通信的,因此,計算機要通過串口參與到單片機系統中必須增加一個RS 232和RS 485總線轉換的模塊[3]。

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

下面以智能照明系統為例,講述單片機系統的通信協議。

本協議采用異步串行通信方式,字節幀格式:1個起始位+8個數據位+1個停止位,無校驗位。

幀格式如下[4]:

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

數據包=有效字節數(1 B)+傳輸層數據+校驗和(1 B)<251 B

幀數據的發送、接收過程中前后兩字節數據傳送延時不得超過0.5 s。

各模塊分配兩個字節的地址碼,第一字節代表模塊類型,第二字節代表模塊在系統中分配的順序。各模塊獲取總線上的幀后,對自己的地址幀響應,其他的幀拋掉。

以下是本協議中的關于“燈開停控制”的協議:

描述:該信息是輸出子模塊的各路燈的開或關控制。

構成:該信息發送時由信息頭和信息內容構成,返回時由信息頭構成。

主控器或PC機發給輸出模塊時:

MessageType53

MessageSubType0/2

Result0

信息內容:

第一字節,燈號字節10:不相關,1:相關,bit7~bit0分別對應本模塊8~1號燈

第二字節,燈號字節10:不相關,1:相關,bit6~bit0分別對應本模塊15~9號燈

第三字節,開度值0:關,1~63亮度值:開,128:突關,255:突關

第四字節,變光時間0~255

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

MessageType53

MessageSubType0/2

ResultDependent on operation(1 or 0)

系統的通信按照規定的各條協議來執行。

3 計算機通信的實現

計算機硬件上通過RS 232與RS 485接口轉換與下端模塊進行通信。而軟件的實現有多種方法,下面主要介紹在VB 6.0通過MSComm控件來實現通信的方法[5]。

3.1 將MSComm控件引入到VB平臺

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

MSComm是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,它為應用程序提供了通過串行接口收發數據的簡便方法。具體的來說,它提供了兩種處理通信問題的方法:一是事件驅動(Event-driven)方法,一是查詢法。

3.2 MSComm控件的設置

3.2.1 MSComm控件的屬性

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

CommPort:設置并返回通訊端口號。

Settings:以字符串的形式設置并返回波特率、奇偶校驗、數據位、停止位。

PortOpen:設置并返回通訊端口的狀態,也可以打開和關閉端口。

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

InputMode:接收模式,取0值時,接收文本數據;取1時,接收二進制數據。

Output:向傳輸緩沖區寫一個字符串。

Rthrehold:響應模式,取整數。當接收字符后,若Rthrehold屬性設置為 0,則不產生OnComm 事件;若設置為1,則接收緩沖區收到每一個字符都會使 MSComm控件產生OnComm事件。

Sthreshold:發送模式,設置0(缺省值),數據傳輸事件不會產生OnComm事件;設置為1,當傳輸緩沖區完全空時,MSComm控件產生OnComm 事件。如果在傳輸緩沖區中的字符數小于value,CommEvent 屬性設置為comEvSend,并產生OnComm 事件。

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

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

MSComm控件提供下列兩種處理通訊的方式:事件驅動方式和查詢方式[8]。

(1) 事件驅動方式

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

(2) 查詢方式

查詢方式實質上還是事件驅動,但在有些情況下,這種方式顯得更為便捷。在程序的每個關鍵功能之后,可以通過檢查CommEvent屬性的值來查詢事件和錯誤。如果應用程序較小,并且是自保持的,這種方法可能是更可取的。例如,如果寫一個簡單的電話撥號程序,則沒有必要對每接收一個字符都產生事件,因為惟一等待接收的字符是調制解調器的“確定”響應。

3.3 計算機信息發送和接收的實現

下面以智能照明系統中PC機與主控器的通信,說明計算機與單片機通信的實現方法。以下是實現的主要子程序。

頁面裝載程序:

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控件的設置程序:

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

通信建立后,計算機就可以與下端單片機通過設定的協議進行通信,可以測試下端模塊的響應。

4 MSComm控件的問題和解決辦法

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

在智能照明系統中,采用了自編制的動態庫Transdata.dll程序,作為處理串口通信的接口,誤幀率和失幀率較低,能滿足產品化的要求。

Transdata.dll使用說明:

(1) 初始化串口并處于通訊狀態<函數>

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

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

(2) 關閉串口結束通訊<過程>

CloseCom()

(3) 發送通訊數據<過程>

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

參數說明:n str 為要發送byte的數組的第一個字節;如要發dim ndata(11) as byte這個數組,只需用ndata(0)作為n str參數即可;ncount為要發送的字節數。

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

GetData(byval m str as string)as string

參數說明:m str 必須為已有能容納所要接收字串的長度空間返回接收到的字串,各個字節以“\\\”隔開。

5 結 語

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

參考文獻

[1]錢衛東.樓宇智能化技術概論[ M] .北京:電子工業出版社,2006.

[2]江永池.智能照明控制系統上位機軟件Ihome技術說明書[ M] .順德:廣東科龍集團華傲電子公司,2002.

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

[4]陳堅波.燈光控制通訊協議1.2.6[ S] .順德:廣東科龍集團華傲電子公司,2001.

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

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

[7] 佚名.單片機與計算機RS 232串行通信開發實例[ EB/OL] .[ 2009-07-15] .http://down.csdn.net/source/1316480.

[8]李墨.單片機與PC機的串行通信[ J] .中國新技術新產品,2009(13):29.

[9]邵貝貝.單片機嵌入式應用的在線開發方法[ M] .北京:清華大學出版社,2004.

[10]李雙科,吳記群.Windows環境下計算機與PLC串行通信的實現[ J] .蘭州工業高等專科學校學報,2005,12(2):30-33.

主站蜘蛛池模板: 久久久久免费精品国产| 538国产在线| 国产福利2021最新在线观看| 中文字幕亚洲另类天堂| 国产无码高清视频不卡| 国产亚洲欧美日韩在线一区| 99视频精品全国免费品| 国产欧美日韩va| 国产女同自拍视频| 久久鸭综合久久国产| 国产污视频在线观看| 97青草最新免费精品视频| 国产视频a| 色综合成人| 潮喷在线无码白浆| 美女高潮全身流白浆福利区| 国产一二视频| www中文字幕在线观看| 97久久免费视频| 99热这里只有精品在线播放| 亚洲综合九九| 啦啦啦网站在线观看a毛片| 真人免费一级毛片一区二区| 久久女人网| 国产午夜精品一区二区三区软件| 国内毛片视频| 亚洲三级a| 成人免费一区二区三区| 亚洲二区视频| 爆操波多野结衣| 91麻豆久久久| 亚洲精品无码AV电影在线播放| 中文字幕欧美日韩高清| www.国产福利| 国产精品无码AⅤ在线观看播放| 国产麻豆91网在线看| 毛片免费高清免费| 欧美一级黄片一区2区| 蜜臀av性久久久久蜜臀aⅴ麻豆| 国产中文在线亚洲精品官网| 免费A∨中文乱码专区| 国产白浆在线| 国产欧美日韩另类精彩视频| 亚洲无线一二三四区男男| 欧美影院久久| 亚洲日本在线免费观看| 成年免费在线观看| 国产成人1024精品下载| 91系列在线观看| 99久久精品免费看国产电影| 国产精品亚洲五月天高清| 狠狠v日韩v欧美v| a级毛片免费看| 999精品免费视频| 欧美一级爱操视频| 欧美黄色网站在线看| 亚洲性日韩精品一区二区| 国产区在线看| a毛片免费观看| 日韩毛片免费| 91在线日韩在线播放| 亚洲精品波多野结衣| 久久夜色撩人精品国产| 国产精品区视频中文字幕| 日本影院一区| 欧美精品二区| 日韩精品毛片人妻AV不卡| 亚洲欧洲自拍拍偷午夜色| 国产内射一区亚洲| 久久不卡精品| 亚洲精品欧美重口| 老司国产精品视频91| 亚洲第一视频网| 久久精品国产电影| 无码日韩精品91超碰| 欧美日韩国产精品综合| 亚洲精品不卡午夜精品| 无码人妻热线精品视频| 黄片一区二区三区| 亚洲成人一区二区三区| 成人综合久久综合| 香蕉eeww99国产在线观看|