<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è) > 電源與新能源 > 設計應用 > 鋰離子電池組監控系統研究與實(shí)現 ― 上位機程序設計

鋰離子電池組監控系統研究與實(shí)現 ― 上位機程序設計

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

在鋰離子電池監控系統中,除了下位機單片機系統電路板及其程序設計外,還需要上位機程序對鋰離子電池系統的進(jìn)行各種監控管理設置。根據系統要求,上位機程序的主要功能有以下幾個(gè):

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

1.接收并顯示下位機采集的各路數據信息,包含16路鋰電池電壓、主回路充放電電流、4路溫度、電量等數據信息;

2.設置下位機工作時(shí)需要配置的系統參數;

3.校正下位機上傳的各路數據;

4.根據需要保存下位機上傳的數據。

該上位機程序采用VC++6.0編程工具進(jìn)行程序設計,本章對上位機程序的設計思想和內容進(jìn)行了描述。

5.1上位機程序

開(kāi)發(fā)平臺及相關(guān)技術(shù)上位機程序采用非常流行的可視化編程工具VC++6.0進(jìn)行開(kāi)發(fā),為完成相應的顯示和設置功能,程序采用了許多VC++6.0自帶的控件,同時(shí)應用了多線(xiàn)程編程技術(shù)。

5.1.1 VC++6.0簡(jiǎn)介

VC++6.0是微軟公司開(kāi)發(fā)的編程平臺,具有強大的功能。本軟件是基于Windows系統開(kāi)發(fā)的,編程語(yǔ)言采用的是C++語(yǔ)言,并且微軟給該軟件提供了功能強大的MFC(Microsoft Foundation Class)類(lèi)庫。MFC中封裝了大部分Windows API函數和Windows控件,它包含的功能涉及到整個(gè)Windows操作系統。MFC不僅給用戶(hù)提供了Windows圖形環(huán)境下應用程序的框架,而且還提供了創(chuàng )建應用程序的組件,這樣,開(kāi)發(fā)人員不必從頭設計創(chuàng )建和管理一個(gè)標準Windows應用程序所需的程序,而是從一個(gè)比較高的起點(diǎn)編程,故節省了大量的時(shí)間。另外,它提供了大量的代碼,指導用戶(hù)編程時(shí)實(shí)現某些技術(shù)和功能。因此,使用VC++可以使程序員更加方便的進(jìn)行應用程序開(kāi)發(fā)。

5.1.2相關(guān)控件介紹

系統使用了Edit Box控件、Static Text控件、Button控件、Group Box控件、Check Box控件、Combo Box控件、Tab Control控件和MSComm控件八個(gè)控件,本部分對這些控件進(jìn)行簡(jiǎn)單介紹。

1.Edit Box控件CEdit類(lèi)提供了Windows編輯控件中的功能。編輯控件是一個(gè)子窗口矩形,用戶(hù)可以向其中輸入文本??梢酝ㄟ^(guò)對話(huà)模板或直接從代碼中創(chuàng )建一個(gè)編輯控件。

在兩種情形下,首先調用CEdit構造程序構造CEdit對象,再調用Create成員函數創(chuàng )建Windows編輯控件并將其與CEdit對象連接。

2.Static Text控件CStatic類(lèi)提供了一個(gè)Windows靜態(tài)控件的性能。一個(gè)靜態(tài)控件用來(lái)顯示一個(gè)文本字符串、框、矩形、圖標、光標、位圖或增強的圖元文件。它可以被用來(lái)作為標簽、框或用來(lái)分隔其它的控件。一個(gè)靜態(tài)控件不接收輸入,也不提供輸出;但是,如果它是用SS_NOTIFY風(fēng)格創(chuàng )建的,則它可以通知其父有關(guān)設備點(diǎn)擊的消息。

3.Button控件類(lèi)CButton提供了對Windows按鈕控件的操作。按鈕控件是一個(gè)小的矩形子窗口,可以通過(guò)單擊選中(按下)或不選中。按鈕可以單獨使用,也可以成組使用,它還可以具有文本標題。在用戶(hù)單擊它的時(shí)候,按鈕通常要改變顯示外觀(guān)。

典型的按鈕控件有:復選框、單選鈕和下壓式按鈕(push button)。一個(gè)CButton對象可以是它們中的一種,這由它的按鈕風(fēng)格和成員函數Create的初始化決定。

4.Check Box控件CheckBox控件就是我們一般所說(shuō)的復選框,通常用于某選項的打開(kāi)或關(guān)閉。

大多數應用程序的“設置”對話(huà)框內均有此控件。我們看到的可以打勾的就是CheckBox.該控件表明一個(gè)特定的狀態(tài)(即選項)是選定(on,值為1)還是清除(off,值為0)。在應用程序中使用該控件為用戶(hù)提供“True/False”或“yes/no”的選擇。因為CheckBox彼此獨立工作,所以用戶(hù)可以同時(shí)選擇任意多個(gè)CheckBox,進(jìn)行選項組合。

5.Combo Box控件類(lèi)CCombo Box封裝了Windows組合框。組合框由一個(gè)列表框和一個(gè)靜態(tài)控件(或編輯控件)組成。列表框部分可以是一直顯示的,也可以是隱藏的,在用戶(hù)單擊編輯控件邊上的按鈕(下拉箭頭)時(shí)下拉該列表框。列表框中當前選中的項(如果有的話(huà))顯示在靜態(tài)控件或編輯控件中。如果組合框帶有下拉風(fēng)格,則當用戶(hù)在編輯框中輸入列表項的開(kāi)始字符時(shí),對應項(如果有的話(huà))中的第一個(gè)將會(huì )加亮顯示。

可以從對話(huà)框模板中建立一個(gè)CComboBox對象,也可以直接在代碼中創(chuàng )建。

無(wú)論采用哪種方法,都要先調用CComboBox的構造函數構造一個(gè)CComboBox對象,然后調用成員函數Create創(chuàng )建控件并在CComboBox對象上應用它。

消息映射入口的格式如下:

ON_Notification( id,memberFxn )

其中id指定了發(fā)送通知的組合框控件的子窗口ID,而memberFxn是用于處理該通知的父成員函數的名字。

父窗口的函數原型的格式如下:

afx_msg void memberFxn( );

6.Tab Control控件一個(gè)“標簽控件”類(lèi)似于一個(gè)筆記本中的分隔器,或一個(gè)文件柜上的標簽。通過(guò)使用標簽控件,應用程序可以將一個(gè)窗口或對話(huà)框的相同區域定義為多個(gè)頁(yè)面。

每一頁(yè)包含了一套信息或一組控件,當用戶(hù)選擇了相應的標簽時(shí)應用程序就會(huì )顯示相應的信息或控件。一種特殊類(lèi)型的標簽控件把標簽顯示得像按鈕一樣。點(diǎn)擊一個(gè)按鈕將立即執行一條命令而不是顯示一個(gè)頁(yè)。

CTabCtrl類(lèi)提供了Windows通用標簽控件的性能。這個(gè)控件(也就是CTabCtrl類(lèi))只對運行在Windows 95和Windows NT 3.51或更新版本下的程序來(lái)說(shuō)是可用的。

7.Group Box控件Group Box控件本質(zhì)上確實(shí)是class CStatic的一個(gè)實(shí)例化對象。在一個(gè)對話(huà)框上布置好一個(gè)Group Box控件后,默認ID為IDC_STATIC,這時(shí)候是無(wú)法在代碼里動(dòng)態(tài)地控制它的隱藏/顯示屬性。必須給它一個(gè)新的ID號,比如IDC_GROUPBOX1,最后再給它關(guān)聯(lián)一個(gè)CStatic控件變量(這個(gè)你應該自己會(huì )吧),然后就可以在必要時(shí)候(另一個(gè)控件被選擇)調用ModifyStyle(0,SWP_HIDEWINDOW/*SWP_SHOWWINDOW*/);實(shí)現Group Box的隱藏/顯示狀態(tài)的動(dòng)態(tài)切換。

8. MSComm控件Visual C++為我們提供了一種好用的ActiveX控件Microsoft Communications

Control(即MSComm)來(lái)支持應用程序對串口的訪(fǎng)問(wèn),在應用程序中插入MSComm控件后就可以較為方便地實(shí)現對通過(guò)計算機串口收發(fā)數據。

使用VC++提供的串行控件MSComm進(jìn)行編程,首先,在對話(huà)框中創(chuàng )建控件,若Control工具欄中缺少該控件,可通過(guò)菜單Project ——>Add to Project——> Components and Control插入即可,再將該控件從工具箱中拉到對話(huà)框中。此時(shí),你只需要關(guān)心控件提供的對Windows通訊驅動(dòng)程序的API函數的接口。換句話(huà)說(shuō),只需要設置和監視MSComm控件的屬性和事件。

在ClassWizard中為新創(chuàng )建的控件定義成員對象(CMSComm m_Serial),通過(guò)該對象便可以對串口屬性進(jìn)行設置,MSComm控件共有27個(gè)屬性,這里只介紹其中幾個(gè)常用屬性:CommPort設置并返回通訊端口號,缺省為COM1. Settings以字符串的形式設置并返回波特率、奇偶校驗、數據位、停止位。

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

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

Output向發(fā)送緩沖區寫(xiě)一個(gè)字符串。

InputLen設置每次讀入的字符個(gè)數,缺省值為0,表明讀取接收緩沖區中的全部?jì)热荨?/p>

InBufferCount返回接收緩沖區中已接收到的字符數,將其置0可以清除接收緩沖區。

InputMode定義Input屬性獲取數據的方式(為0:文本方式;為1:二進(jìn)制方式)。

RThreshold和SThreshold屬性,表示在OnComm事件發(fā)生之前,接收緩沖區或發(fā)送緩沖區中可以接收的字符數。

打開(kāi)所需串口后,需要考慮串口通信的時(shí)機。在接收或發(fā)送數據過(guò)程中,可能需要監視并響應一些事件和錯誤,所以事件驅動(dòng)是處理串行端口交互作用的一種非常有效的方法。使用OnComm事件和CommEvent屬性捕捉并檢查通訊事件和錯誤的值。發(fā)生通訊事件或錯誤時(shí),將觸發(fā)OnComm事件,CommEvent屬性的值將被改變,應用程序檢查CommEvent屬性值并作出相應的反應。

5.2上位機程序方案

上位機程序主要完成數據顯示、參數設置、存儲器讀取、數據校正等功能。

該程序通過(guò)串口與下位機板進(jìn)行通信,將需要顯示的信息和設置的參數等信息進(jìn)行傳輸。

上位機程序功能框圖如下圖5.1所示。


上一頁(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>