(3) Windows的API通信函数允许用户自己封装串口通信类。Windows API中与串口通信相关的函数共有26个,分别用来打开串口,配置串口,读写数据和关闭串口等。而且Windows API函数法提供了一个用于串行通信的类,只要理解其中的一些成员函数就能够使用,但编写这此种能够普遍应用的类十分困难,对程序员的专业素养要求较高,但好在灵活性最高,实时性也不错。
(4)利用PComm处理PC机的串口通信。PComm是一个动态链接库,提供了许多函数来处理串口通信,可以在VC、C++ Builder、VB、Dephi等多种开发工具下使用,不仅传输速度快、使用灵活,还能够满足比较复杂的串口通信要求。此外,它还提供了函数库PComm Library。PComm特殊之处在于PComm对问题的处理与其他方法不同,它通过调用执行中断函数完成对问题的处理。
3。3 控件的选择方案论证
API、MSComm与PComm的应用比较:
(1)性能:API能够接收或发送ASCII码或二进制形式的数据。MSComm控件在发送数据前需要将ASCII码或者二进制码转换成VARIANT类型的数据。但如果单片机是下位机,则在下位机的程序里不需要做数据类型的转换。使用API函数则不需要做这种转换。而PComm控件发送和接收的数据的类型都为字符型。
(2)扩展 :如果使用API函数进行串口通信,则经常在程序中使用一个类将控件添加到每一个串口的方法。而使用MSComm控件会导致代码重用性差的后果,因为控件不开源,必须在它的外面添加一些必要的修改,并且每多用一个串口就要在它的程序中多添加一个MSComm控件,所以当上位机需要使用多个串行端口的时候,就需要添加多个MSComm控件。势必会降低代码的简洁性,体积变得臃肿。
(3)编程复杂性:利用API函数编写串口通信应用使用的函数非常多,对程序员的编程能力的要求比较高。而MSComm控件则比较简单,控件的性能稳定,几乎不会出现控件本身的错误,节省了程序员调试程序的时间。目前,使用API函数编写的通讯类已经出现了一些现成的功能强大的共享类,这样在使用API函数编程的时候就不需要从无到有的一点点搭建,给初次使用它编程的人轻松的开端。PComm采用的是PComm Library函数库, 与MSComm32控件相比较在通信的可靠性上有了明显提升,并且相对直接使用MSComm或API函数编程来说,开发界面十分简单易懂,降低了应用程序的开发难度,其简单的函数呼叫,缩短了系统开发与维护的周期。
综上所述,如果需要在短时间内开发串口通信应用程序,控件是不二之选,反之有充足的开发时间,要求应用程序功能强大,那么API函数可以达到要求。本文选用PComm控件作为串口通信的手段。
3。4 串口通信控件的安装与使用
在C++ Builder 中安装使用PComm控件:
(1)首先安装PComm lite。
(2)如果使用的是Windows 7系统,则将安装文件夹中的PComm。dll文件复制粘贴到“C:\Windows\System32”文件夹中。
(3)使用Win+R快捷键打开“运行”,在“运行”中填写入“regsvr32 PComm。dll”命令,点击确定注册PComm控件。
(4)若要在C++ Builder 6中使用PComm控件,选择菜单栏中“view”中的“project manager”选项,在打开的窗口中右键单击工程里的exe文件选择“添加”,将PComm。lib和PComm。pas两个文件添加到工程中。文献综述
(5)在程序中使用添加头文件:#include “PComm。h”和 #include <Windows>。
注意:在编译过程中有可能遇到错误:“BCB contains invalid OMF record,type 0x21(possibly COFF)”。该错误是C++Builder使用VC的lib文件兼容不足导致。此时将PComm。lib文件进行转换后再添加,可以正常使用。具体的转换方法如下: