Professional Documents
Culture Documents
****************************************************************************
ClearText
With MSC
.CommPort = 1 ´设置Com1为通信端口
.InBufferSize = 40 ´设置缓冲区接收数据为40字节
.InputLen = 1 ´设置Input次从接收缓冲读取字节数为1
.RThreshold = 1 ´设置接收个字节就产生OnComm事件
End With
End Sub
****************************************************************************
Text3.Text = \"\"
Text2.Text = \"5\"
Text1.Text = \"\"
End Sub
ClearText
´ nRece = 0 ´计数器清零
With MSC
.InBufferCount = 0 ´清除接收缓冲区
End With
End Sub
DelayTime ‘用来延续时间
ClearText
With MSC
SwichVar 1
.RThreshold = 0 ´关闭OnComm事件接收
End If
Do
DoEvents
´ nRece = nRece + 1
For i = 2 To 12
SwichVar i
Next
Text1.Text = LTrim(Text1.Text)
.RThreshold = 1 ´打开MSComm事件接收
Case Else
´ .PortOpen = False
End Select
End With
End Sub
****************************************************************************
bDT = True
sPrevious = Timer (Timer可以计算从子夜到现在所经过秒数在Microsoft Windows中Timer可以返回秒小数
部分)
Do While bDT
Loop
bDT = True
End Sub
(通信传输速率为9600bps则最快速度1.04ms发送个字节仪表每秒发送50帧数据每帧数据有4个字节即每秒发送
200个字节平均5.0ms 发送个字节连续读取串口数据时要在中添加循环等待)
DelayTime
var = Null
var = MSC.Input
Out(nNum) = var(0)
End Sub
End Sub
****************************************************************************
CText = CCur(Val(str))
Else
CText = 0
End If
End Function
(仪表每秒发送50帧数据微机收到帧完整数据至少需要20 ms时间然后再进行数据处理如果微机在下帧数据接收
前即20ms内能将数据计算处理完毕则接收缓冲区内只会保存有帧数据不会存有两帧以上数据接收缓冲区大小不
会影响实时监测效果(接收缓冲区>4字节)这时完全可以实现实时监测或实时控制;如果微机在20ms内不能将数
据计算处理完毕接收缓冲区设置得又很大在数据计算处理完毕前接收缓冲区内就会保存有两帧以上数据而且次
工作时间越长缓冲区内滞留数据帧就越多数据采集和数据处理的间产生逐渐增大额外时间差当接收缓冲区充满
后时间差不再增大固定在某值部分数据因不能及时采集到接收缓冲区中数据产生丢失现象真实工作情况就会和
微机处理结果产生较大时间差对实时监测和实时控制很不利这种情况下接收缓冲区大小就会影响实时监测效果
所以接收缓冲区设置不能过大以保证数据处理实时性)
小结:本文所用仪表为梅特勒公司出产BE01型电子秤其输出每个编码均为标准ASCII码其他仪表存在发射编码中
含有BCD压缩码而且分为高低位需要接收后对其进行解码换算的后还要将高位和低位数字进行相加即可以将其
BCD码换算成实数另还存在误差可能:判断最大值仪表在刚开始工作时有干扰会传导些乱码位移传感器有参数偏
差最大值般都略大于50毫米所以取51为极限最大值取-51为极限最小值暂时先写这些当然其他情况可以依此类
推!
2009-2-12 3:53:31
疯狂代码 http://CrazyCoder.cn/