在锂离子电池监控体系中,除了下位机单片机体系电路板及其程序规划外,还需求上位机程序对锂离子电池体系的进行各种监控办理设置。依据体系要求,上位机程序的首要功用有以下几个:
1.接纳并显现下位机收集的各路数据信息,包括16路锂电池电压、主回路充放电电流、4路温度、电量等数据信息;
2.设置下位机作业时需求装备的体系参数;
3.校对下位机上传的各路数据;
4.依据需求保存下位机上传的数据。
该上位机程序选用VC++6.0编程东西进行程序规划,本章对上位机程序的规划思维和内容进行了描绘。
5.1上位机程序
开发渠道及相关技能上位机程序选用十分盛行的可视化编程东西VC++6.0进行开发,为完结相应的显现和设置功用,程序选用了许多VC++6.0自带的控件,一起应用了多线程编程技能。
5.1.1 VC++6.0简介
VC++6.0是微软公司开发的编程渠道,具有强壮的功用。本软件是根据Windows体系开发的,编程言语选用的是C++言语,并且微软给该软件供给了功用强壮的MFC(Microsoft Foundation Class)类库。MFC中封装了大部分Windows API函数和Windows控件,它包括的功用涉及到整个Windows操作体系。MFC不只给用户供给了Windows图形环境下应用程序的结构,并且还供给了创立应用程序的组件,这样,开发人员不用从头规划创立和办理一个规范Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了很多的时刻。别的,它供给了很多的代码,辅导用户编程时完结某些技能和功用。因而,运用VC++能够使程序员愈加便利的进行应用程序开发。
5.1.2相关控件介绍
体系运用了Edit Box控件、Static Text控件、Button控件、Group Box控件、Check Box控件、Combo Box控件、Tab Control控件和MSComm控件八个控件,本部分对这些控件进行简略介绍。
1.Edit Box控件CEdit类供给了Windows修改控件中的功用。修改控件是一个子窗口矩形,用户能够向其间输入文本。能够经过对话模板或直接从代码中创立一个修改控件。
在两种景象下,首要调用CEdit结构程序结构CEdit目标,再调用Create成员函数创立Windows修改控件并将其与CEdit目标连接。
2.Static Text控件CStatic类供给了一个Windows静态控件的功用。一个静态控件用来显现一个文本字符串、框、矩形、图标、光标、位图或增强的图元文件。它能够被用来作为标签、框或用来分隔其它的控件。一个静态控件不接纳输入,也不供给输出;可是,假如它是用SS_NOTIFY风格创立的,则它能够告诉其父有关设备点击的音讯。
3.Button控件类CButton供给了对Windows按钮控件的操作。按钮控件是一个小的矩形子窗口,能够经过单击选中(按下)或不选中。按钮能够独自运用,也能够成组运用,它还能够具有文本标题。在用户单击它的时分,按钮一般要改动显现外观。
典型的按钮控件有:复选框、单选钮和下压式按钮(push button)。一个CButton目标能够是它们中的一种,这由它的按钮风格和成员函数Create的初始化决议。
4.Check Box控件CheckBox控件便是咱们一般所说的复选框,一般用于某选项的翻开或封闭。
大多数应用程序的“设置”对话框内均有此控件。咱们看到的能够打勾的便是CheckBox.该控件标明一个特定的状况(即选项)是选定(on,值为1)仍是铲除(off,值为0)。在应用程序中运用该控件为用户供给“True/False”或“yes/no”的挑选。由于CheckBox互相独立作业,所以用户能够一起挑选恣意多个CheckBox,进行选项组合。
5.Combo Box控件类CCombo Box封装了Windows组合框。组合框由一个列表框和一个静态控件(或修改控件)组成。列表框部分能够是一向显现的,也能够是躲藏的,在用户单击修改控件边上的按钮(下拉箭头)时下拉该列表框。列表框中当时选中的项(假如有的话)显现在静态控件或修改控件中。假如组合框带有下拉风格,则当用户在修改框中输入列表项的开端字符时,对应项(假如有的话)中的第一个将会加亮显现。
能够从对话框模板中树立一个CComboBox目标,也能够直接在代码中创立。
不管选用哪种办法,都要先调用CComboBox的结构函数结构一个CComboBox目标,然后调用成员函数Create创立控件并在CComboBox目标上应用它。
音讯映射进口的格局如下:
ON_Notification( id,memberFxn )
其间id指定了发送告诉的组合框控件的子窗口ID,而memberFxn是用于处理该告诉的父成员函数的姓名。
父窗口的函数原型的格局如下:
afx_msg void memberFxn( );
6.Tab Control控件一个“标签控件”类似于一个笔记本中的分隔器,或一个文件柜上的标签。经过运用标签控件,应用程序能够将一个窗口或对话框的相同区域界说为多个页面。
每一页包括了一套信息或一组控件,当用户挑选了相应的标签时应用程序就会显现相应的信息或控件。一种特别类型的标签控件把标签显现得像按钮相同。点击一个按钮将当即履行一条指令而不是显现一个页。
CTabCtrl类供给了Windows通用标签控件的功用。这个控件(也便是CTabCtrl类)只对运行在Windows 95和Windows NT 3.51或更新版别下的程序来说是可用的。
7.Group Box控件Group Box控件本质上确实是class CStatic的一个实例化目标。在一个对话框上安置好一个Group Box控件后,默许ID为IDC_STATIC,这时分是无法在代码里动态地操控它的躲藏/显现特点。有必要给它一个新的ID号,比方IDC_GROUPBOX1,最终再给它相关一个CStatic控件变量(这个你应该自己会吧),然后就能够在必要时分(另一个控件被挑选)调用ModifyStyle(0,SWP_HIDEWINDOW/*SWP_SHOWWINDOW*/);完结Group Box的躲藏/显现状况的动态切换。
8. MSComm控件Visual C++为咱们供给了一种好用的ActiveX控件Microsoft Communications
Control(即MSComm)来支撑应用程序对串口的拜访,在应用程序中刺进MSComm控件后就能够较为便利地完结对经过计算机串口收发数据。
运用VC++供给的串行通讯控件MSComm进行编程,首要,在对话框中创立通讯控件,若Control东西栏中短少该控件,可经过菜单Project ——>Add to Project——> Components and Control刺进即可,再将该控件从东西箱中拉到对话框中。此刻,你只需求关怀控件供给的对Windows通讯驱动程序的API函数的接口。换句话说,只需求设置和监督MSComm控件的特点和事情。
在ClassWizard中为新创立的通讯控件界说成员目标(CMSComm m_Serial),经过该目标便能够对串口特点进行设置,MSComm控件共有27个特点,这儿只介绍其间几个常用特点:CommPort设置并回来通讯端口号,缺省为COM1. Settings以字符串的办法设置并回来波特率、奇偶校验、数据位、中止位。
PortOpen设置并回来通讯端口的状况,也能够翻开和封闭端口。
Input从接纳缓冲区回来和删去字符。
Output向发送缓冲区写一个字符串。
InputLen设置每次读入的字符个数,缺省值为0,标明读取接纳缓冲区中的全部内容。
InBufferCount回来接纳缓冲区中已接纳到的字符数,将其置0能够铲除接纳缓冲区。
InputMode界说Input特点获取数据的办法(为0:文本办法;为1:二进制办法)。
RThreshold和SThreshold特点,表明在OnComm事情产生之前,接纳缓冲区或发送缓冲区中能够接纳的字符数。
翻开所需串口后,需求考虑串口通讯的机遇。在接纳或发送数据过程中,或许需求监督并呼应一些事情和过错,所以事情驱动是处理串行端口交互作用的一种十分有用的办法。运用OnComm事情和CommEvent特点捕捉并查看通讯事情和过错的值。产生通讯事情或过错时,将触发OnComm事情,CommEvent特点的值将被改动,应用程序查看CommEvent特点值并作出相应的反响。
5.2上位机程序计划
上位机程序首要完结数据显现、参数设置、存储器读取、数据校对等功用。
该程序经过串口与下位机板进行通讯,将需求显现的信息和设置的参数等信息进行传输。
上位机程序功用框图如下图5.1所示。