三通管拉制仪材料分配系数精确控制系统设计+PCB+源程序(10)_毕业论文

毕业论文移动版

毕业论文 > 机械论文 >

三通管拉制仪材料分配系数精确控制系统设计+PCB+源程序(10)


            for(j=0;j<10;j++);
}
延时变量us的大小决定了步进电机的转速。
3.2    上位机程序编写
上位机软件用MFC编写,并利用了Mscomm控件实现串口通信。
3.2.1    MFC
微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
MFC的主要优点是可以用面向对象的方法来调用Windows API,以及应用程序开发的便捷。MFC将很多应用程序开发中常用的功能自动化,并且提供了文档框架视图结构和活动文档这样的便于自定义的应用程序框架。同时,在Visual C++内部也内建了很多对MFC的例如类向导这样的支持以减少软件开发的时间,使用类向导可以生成从hello world这样的简单程序到活动文档服务器这样的复杂程序。MFC的消息映射机制也避免了使用性能较低的庞大虚函数表。
3.2.2    Mscomm
Mscomm是一种简单实用的串行通讯控件,能够为程序员串口通讯编程节省很多时间。Mscomm可设置并返回通讯端口号;在设置CommEvent属性为comEReceive并产生 OnComm 之前,可以设置并返回的要接收的字符数;可以通过查询 Carrier Detect (CD) 线的状态确定当前是否有传输;可以确定 Data Set Ready (DSR) 线的状态;可以设置并返回波特率、奇偶校验、数据位、停止位参数。本文中与下位机相对应,波特率设为常用的9600b/s。
Mscomm提供两种处理通信的方式:一是事件驱动方式,一是查询方式。
事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。
查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来检测事件和通讯错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。
事件驱动方式是处理串行通信的一种有效的方法,它可以利用OnComm事件捕获并处理通信中发生的事件或错误,实时性较强。而查询方式是在程序通过查询CommEvent属性的值来判断通信过程中的事件或错误,这种方式适合于应用程序较小、实时性要求不高的系统中。
MSComm控件进行串行通信的一般步骤为:
(1)    设置通信对象、通信端口号及其它属性;
(2)    设定通信协议;
(3)    打开通信端口,进行数据的传送;
(4)    关闭通信端口
3.2.3    人机界面
如图3.2.1所示即为编译后生成的EXE文件界面。图3.2.2则展示了MFC的集成开发环境。 (责任编辑:qin)