void NVIC_Configuration(void) //中断配置函数:
通过以上的配置,再通过中断服务程序来识别收发数据是否结束及主程序的字符处理最终实现串口的通信。
对于STM32与服务器之间的串口通信,也可以用类似的方法,只需要把上段程序中的串口号更改即可。对于本系统只需要把上段程序的USART1改为USART2并将输入输出控制做适当的修改即可实现另一串口的配置。
3.5 STM32与服务器通讯
对于接收STM32经过串口发送来数据,在服务器的接受端口处需要相应的接收函数。为了实现这种功能,可以用MFC中提供的MSComm控件,操作时将这个控件的图标用鼠标拖入到对话框中,这样对话框就成了MSComm控件的“宿主”。ClassWizard会自动在当前程序工程中进行消息类的映射,这样通过MSComm控件就能用事件驱动方式从串口中接收数据,从而进行消息处理。但是MSComm控件在打包时需要加入其他的文件,并且加入文件的数据类型比较复杂,不容易操作。
正因为MSComm控件在操作上有许多不足点,为了更好的进行操作,本系统选择了一个非常好用的多线程串口编程工具CserialPort类。通过CserialPort类,我们就可以从烦心的框架编程中解脱出来,而只要把精力放在通信协议的编制及数据的处理上。和MSComm控件相比,CserialPort类在打包时不需要加入其他的文件,而且函数都是开放透明的,允许我们进行改造,还有不需要我们去理解那些复杂的数据类型。
在STM32与服务器通讯中,首先要将CserialPort类的头文件serialPort.h和CserialPort类的源文件serialPort.cpp复制到工程的文件夹中,接着在将这两个文件添加到当前的工程中。完成了上述的两个步骤后还要在当前工程的头文件中将头文件serialPort.h说明:#include<SerialPort.h>。通过以上的步骤,就在当前的工程中加入了CserialPort类。
接着要进行WM_COMM_RXCHAR的响应函数的声明:
// Generated message map functions
//{{AFX_MSG(CTEXT)
afx_msg LONG OnComm(WPARAM ch,LPARAM port);
//}}AFX_MSG
然后进行WM_COMM_RXCHAR消息映射:
BEGIN_MESSAGE_MAP(CTEXT, CDialog)
//{{AFX_MSG_MAP(CTEXT)
ON_MESSAGE(WM_COMM_RXCHAR,OnComm)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
完成了上述的步骤后在OnComm()函数中加入处理函数即可。
3.6 人机交互后台软件设计
通过系统的需求分析,研究了大型精密成型液压系统所需要监控的参量,在此基础上,对液压监控的人机交互后台服务软件进行了规划。最终设计的人机交互后台软件的主要功能有:显示大型精密成型液压系统的实时运行状态,如电机运行状态、油箱温度、压力、速度和位移等。同时,还能对传输过来的数据进行判断,并与正常值进行比较,当发现所接受的数据超过正常值范围时,对其故障值进行显示和单独记录。对于所接受的正常数据存入到数据库中,方便后续程序的调用。另一方面,人机交互后台软件可以进行历史数据查询,并且还具有用户登陆以及用户管理模块等基本功能。此外,人机交互后台软件增加了关于YQK27的说明界面。其具体的情况参看图3.7。
图3.7人机交互后台软件设计总体框图
图3.7人机交互后台软件设计总体框图呈现了后台服务软件总的构架,下面将对其具体的实施过程进行细化。
图3.8 人机交互界面后台服务软件流程图
图3.8是人机交互界面后台服务软件的流程图,该部分的实现主要是基于VC中的MFC平台。主要涉及的内容包括:串口的通信,窗体的调用,文件的处理及一些数据的处理和地址调用等。通过各部分之间的相互配合工作,最终完成大型精密成型液压机智能监控与文护的后台服务软件。 大型精密成型液压机的嵌入式智能监控与维护单元软件设计(7):http://www.youerw.com/zidonghua/lunwen_8245.html