预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

用VB进行串口实时数据采集xx交通学院信息与计算科学系(410077)xxxx-本文介绍VB6.0利用MSComm通信控件开发微机通过串口对工业仪表进行实时数据采集的编程技术。给出的程序代码具有通用性并有详细的注释可以直接或稍加改动后用于其他数据采集或实时控制程序中。-一台工业专用实时检测仪表接高精度位移传感器用于测量微小形变或微量位移仪表测量精度为0.01毫米测量范围最大值为50毫米。该仪表带有一个9针的RS-232C串口能与微机进行串口数据通信实时传送检测数据通过微机软件处理可实现工业实时监控。-该仪表的串口数据通信协议是:数据传输速率为9600bps1位开始位8位数据位1位停止位无奇偶校验位。仪表每秒发送50帧检测数据每帧数据由4个字节组成。第一个字节定义为二进制常数OFOH是每帧数据开始的标志字节;后面连续2个字节为数据字节采用压缩的BCD码编码方式高位在前低位在后即一个字节表示两位十进制数则两个字节表示四位十进制数小数点采用固定形式定义在两字节中间;第四个字节为符号字节该字节第八位为1即:-则为负数;第八位为0即:-则为正数。----例如:OFOH26H87H80H0F0H34H62H00表示一26.8734.62。----通信传输速率为9600bps则最快速度1.04ms发送一个字节仪表每秒发送50帧数据每帧数据有4个字节即每秒发送200个字节平均5.0ms发送一个字节连续读取串口数据时要在程序中添加循环等待程序。-为了实现实时监测功能接收数据的读取要尽可能的快速则设置MSComm1的属性如下:RThreshold=1每次读取一个字节接收缓冲区收到一个字节产生OnComm事件InputLen=1----仪表每秒发送50帧数据微机收到一帧完整数据至少需要20ms时间然后再进行数据处理。如果微机在下一帧数据接收前即20ms内能将数据计算处理完毕则接收缓冲区内只会保存有一帧数据不会存有两帧以上数据接收缓冲区的大小不会影响实时监测效果(接收缓冲区>4字节)这时完全可以实现实时监测或实时控制;如果微机在20ms内不能将数据计算处理完毕接收缓冲区设置得又很大在数据计算处理完毕前接收缓冲区内就会保存有两帧以上数据而且一次工作时间越长缓冲区内滞留数据帧就越多数据采集和数据处理之间产生逐渐增大的额外时间差当接收缓冲区充满后时间差不再增大固定在某一值部分数据因不能及时采集到接收缓冲区中数据产生丢失现象真实工作情况就会和微机处理结果产生较大的时间差对实时监测和实时控制很不利这种情况下接收缓冲区的大小就会影响实时监测效果所以接收缓冲区设置不能过大以保证数据处理的实时性。----VB中有Byte类型变量但没有字节的位处理语句符号字节的位处理要判断符号字节的值是否大于127大于127则为负数;压缩的BCD码存入Byte类型变量VB系统只按十进制数处理这要通过一个简单算法换算解压BCD码才能还原成十进制表示数值。假如a是Byte类型变量D是Single类型变量将一个压缩的BCD码存入a中则算法是:D=