?PowerPoint中串口通信的实现
2019-09-12范书义魏保华谢永才姜会霞
范书义 魏保华 谢永才 姜会霞
摘 要 针对PowerPoint演示过程中需要通过串口与向设备发送数据这一问题,通过扩展VB中串口控件的功能以及对VB应用程序命令行参数的解析,实现在PowerPoint演示页面对串口通信设备的直接控制,保证PowerPoint演示文件播放的连续性,增强PPT的演示效果。
关键词 PowerPoint;VB;示教板;串口设备
中图分类号:G642 文献标识码:B
文章编号:1671-489X(2019)05-0036-03
1 引言
PowerPoint(PPT)是微软公司推出的一款优秀幻灯片制作软件,专门用于制作演示文稿。该软件具有容易掌握、使用方便、扩展性强的特点,是目前使用最广泛的幻灯片制作软件,被广泛应用于电子教学、设计和制作产品演示、业绩报告和项目展示等多个领域。
在复杂原理教学过程中,有时需要采用示教板辅助教学,以帮助学生对所讲授原理的理解,如图1所示。目前,一般示教板都具有串口控制功能,在讲解时需要从Power-Point演示界面切换到串口控制程序,实现对串口示教板的控制。这种方法需要在PowerPoint和串口控制程序之间多次切换,会割裂演示过程的完整性和流畅性,当需要频繁控制串口设备时尤其如此。如果能够在放映的PPT幻灯片中嵌入示教板的串口控制命令,则可以使讲解过程更完整流畅,大大增强PowerPoint的演示效果。该方法也可以用在教学过程中其他需要在PowerPoint中控制串口设备的场合。
2 PowerPoint中串口通信的实现方法
PowerPoint演示页面在播放PPT过程中的动作方式只有两种,分别是“运行程序”和“运行宏”。首先分析“运行宏”这种方式。宏是由一系列VBA(Visual Basic for Application)代码组成的可执行程序。对宏的支持是微软公司的Office系列办公软件区别于其他办公软件的一大特色。通过VBA可以实现对Office应用程序的扩展,大大增强Office应用程序的自动化能力。如果能够直接使用VBA实现在PowerPoint演示页面对串口通信设备的控制,那就再好不过了。这样既不用使用其他开发工具,而且这些VBA代码是嵌入PowerPoint中的,会使整个PowerPoint文档具有很好的可移植性。一般情况下与串口设备通信时,应能根据需要向串口设备发送不同数据,但Office中的宏并不支持参数传递,这会给串口通信带来很大问题。宏的这种特性就要求向串口设备发送不同数据时要用不同的宏,这种要求在通信数据类型较多时会造成极大的代码重复。通过以上分析可知,直接使用宏显然不是一种合理的方法。
再来分析“运行程序”这种方式。这种方式允许在PPT演示页面通过在对象上单击鼠标运行外部可执行程序。这种方式与“运行宏”面临相同的问题,即调用外部可执行程序时要能够传递参数,该问题可以通过使用命令行参数来解决。因为Windows操作系统对文件名长度限制为小于255个字符,所以使用命令行参数时要注意命令行参数不要过长。如果需要传递的信息超过255个字符,可以采用分批多次发送的方式,或者采用压缩参数格式,而后在VB程序中解析的方式。
规定通信协议 要想实现设备之间的通信,必须规定通信双方都能理解的通信协议。通信协议的规定应简明、无歧义。通信协议一般包括三个要素:
1)语法,即通信双方通信时的数据报文格式;
2)语义,即通信的内容;
3)时序规则,即何时进行通信。
因为项目采用VB的串口控件实现通信,而且采用异步通信方式,所以不需要考虑通信的时序问题,只需要考虑通信协议的语法和语义即可。以本项目为例,需要在演示页面通过向串口发送数据控制某设备示教板中不同部分灯的点亮和熄灭,要求能够单独控制某个示教板的某条线或框点亮或熄灭,其通信协议规定如下:
示教板区域号+[线编号(框编号)+亮(1)/灭(0)标记]
当要控制多条线/框时,可在上面格式的基础上+空格+[线编号(框编号)+亮(1)/灭(0)标记],如XK11 L11 L120(控制示教板X区域的K1、线L1亮,线L12灭)。
开发者可根据项目需求,规定合适的通信协议。通信内容主要是规定表示示教板的字母和线号,这些内容需要在发送前进行校验,以避免发送错误的数据到接收端。
解析命令行参数 考虑到编程的方便性,采用Micro-soft公司的VB(Visual Basic)作為编程工具。VB提供的串口控件(MSComm)封装了对串口的各种操作,可以通过调用控件提供的方法(method)和属性(attribute)实现对串口的访问[1]。
因为程序是在PPT演示页面执行的,所以不需要显示可执行窗口。因此需要在工程中进行设置,如图2所示。在工程设置的“General”选项卡的“Startup Object”下拉列表框中选择“Sub Main”,这样程序就可以在PPT演示页面中不显示窗口执行了。这种方式需要在VB工程中编写一个main()函数,并在该函数中对命令行中的参数进行解析[2]。获取命令行参数并进行解析的关键代码如下:
以上代码将获取的命令行参数存储到字符串数组中,第二行代码中的参数与通信协议规定的数据格式密切相关。因为本项目以空格作为分隔符,所以采用空格作为Split()函数的参数,将通过命令行传递到程序中的函数分隔为字符串数组,以便进一步处理。开发者可根据规定的通信格式,采取适当的处理方式。
向串口发送数据 命令行参数解析完成后,可使用VB提供的MSComm串口通信控件将数据发送到串行口。该控件为程序开发者提供了简单易用的串口通信函数接口和属性,为串口应用程序的开发提供了极大方便。通过该控件向串口发送数据非常简单,如果数据需要以文本形式发送,则直接将文本字符串直接赋值给Output属性即可,如MSComm.Output=":X011,021,031,041,051*"。
如果要以二进制形式发送数据,则需进行必要的转换。首先定义一个Byte类型的数组,然后将要发送的文本数据采用Cbyte()函数逐字节转换为Byte类型,最后将该Byte类型的数组赋值给串口控件的Output属性即可,主要代码如下:
在PPT演示页面中的应用 在PPT中,选择单击时要向示教板发送数据的文本、对象或线条,在“插入”选项卡中单击“超链接”图标,弹出图3所示窗口;选择“运行程序”选项,在该选项的文本框中输入用VB生成的程序和相应参数,然后单击“确定”即可。图3中输入的参数表示要发送给示教板相应的流程线,控制示教板流程线点亮或熄灭。
在PPT演示页面,操作者只需用鼠标单击嵌入了超链接的文本或对象即可执行该程序,将命令行参数中携带的数据发送到示教板,对示教板进行控制。
3 结语
微软的PowerPoint是目前广泛使用的一款演示软件,具有强大的互动演示功能和方便快捷的拖放式操作方法。但某些高级功能并不能直接通过简单的拖放操作实现,可以通过PowerPoint提供的超链接功能,利用通用编程语言提供的强大功能实现某些特殊功能,为互动演示提供便利。
参考文献
[1]杨忠宝,康顺哲.VB语言程序设计教程[M].北京:人民邮电出版社,2010:81-92.
[2]龚沛曾,杨志强,等.Visual Basic程序设计教程[M].4版.北京:高等教育出版社,2013:136-138.