以下仅给出串行通信初始化和中断服务子程序代码:
串行通信初始化程序为:
3.2 PC机部分
在Windows中,串行口的硬件设备通过通信驱动程序comm.drv与windows进行连接,通过使用标准的windows API函数发送和接收数据。而MSComm控件通信功能的实现,是调用windows API函数,并通过设置其属性和事件,来定义windows通信驱动程序的API函数接口,为应用程序提供了通过串行接口收发数据的简便方法。
MSCOmm控件提供了2种处理通信的方法:一是事件驱动方法,也就是利用OnComm事件,这是一种处理串行端口活动非常有效的方法,不仅能够利用MSCOmm控件来侦测并处理通信事件和错误,而且还具有程序响应及时、可靠性高等优点;另一种方法是查询法,MSComm控件的C0mmEvent属性返回通信中产生的事件和错误类型,由通信控件自动检测和跟踪通信状态后设置。因此可以直接读取CommEvent属性的值来检测通信中产生的事件和错误类型,这种方法比较简单,常用在小的自含程序中。
该设计程序即采用查询法读取InBufferCount的属性值来接收单片机发来的数据。实验主程序对串口初始化并画出坐标系;每单击‘绘点’键程序向单片机发送一个任意数,告诉单片机将模数转换结果发送过来,然后采用查询方式接收该数据,进行相应的转化后把该点绘在坐标系上,一次数据采集结束。
MSComm控件的常用属性:CommPort:设置并返回通信端口号;Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位;Pott()pen:设置并返回通信端口的状态也可以打开和关闭端口;Input:从接收缓冲区返回和删除字符;Output:向传输缓冲区写1个字符串。
该实验的Coml口串行通信初始化程序如下:
End Sub
从图7中PC机界面显示位移一电压坐标图,表1记录的数据以及图8在示波器上显示的霍尔线性电路理想电压一位移曲线图相比较,可以发现由于传感器实验台受外界干扰等原因使得输出信号输出误差在所难免,而且没有电平转换,使得VB绘图中得到的数值存在负值;但是可以在图中看到传感器输出的电压值在正负之间有明显的对称性,与要求输出的理想输出信号波形相符合,证明本系统运行良好,设计的非常成功。
4 结 语
对于目前广泛应用的WindOWs环境下实现PC机与单片机之间的通信问题具有重要的参考价值。