用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

多站远程无线控制信号系统通信软件的开发

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:54:17
到的数据的实际大小必须利用Lbound及Ubound才能取得最大及最小索引值,同时也只有这样,才能利用程序将内部的值一一显示出来。另外,利用最大和最小索引值还可以判断是否为一次成功接收。

(3)最优化TimeDelay

在每次传输指令后,一定要等待一段时间才可能从串行端口的输入缓冲区中取得信号源传回的数据,这个时间有多久是项目的关键,太长了效率太低,太短了,数据有可能接收不全,所以有必要进行最佳化测试。具体代码如下:

Public Declare Function GetTickCount Lib ″ker-nel32″ ()As Long

Dim Buf$

Dim T1&T2&

Comm1.Output=Trim(Ucase(txtsend..Text)) & vbcr

T1=GetTickCount()

Do

Buf=Buf & Comm1.Input

Loop Unitl Instr(1,Buf,vbCr)>0

T2=GetTickCount()

LblTime.Caption=CStr(T2-T1) & “ms”

该程序中使用GetTickCount来取得系统自开机后每千分之一秒更新的Tick值,在接收的前后加上取Tick值的叙述,自然就可以得到传输的时间了。从测试的结果来看,传输单个数据的时间为100ms,10个群组的时间约为500ms。

(4) 增加程序的效率

利用下面的程序可在无线通讯受到干扰或对方设备电源没有打开等原因造成对方数据不能上传时,避免程序一直在等待。如果在规定时间内还没等到规定的字节数时就跳出循环,并出现一个重新发送对话框。此时如果还是不对,就弹出一个对话框“请检查系统!"。具体程序如下:

Public Sub ReceiveData()

′On Error Resume Next

Dim start, dend As Integer

Dim byin() As Byte

Dim byindata(11) As Byte

Dim I% buf$

′根据事件分发处理

Do While frmMSCommDemo.MSComm1.CommEvent = 2

Exit Do

Loop

Timedelay 850 ′适当延时

byin = frmMSCommDemo.MSComm1.Input

′接收串行端口内的数据至动态数组中

dend = UBound(byin) ′得到最大值

start = LBound(byin) ′得到最小值

If dend < 5 Then

MsgBox RadarNoOut & “信号源出现系统

故障,请求检修!” vbOKOnly

Exit Sub

End If

′接收串行端口内的数据至动态数组中

′ReDim Preserve byin(11) As Byte

If byindata(0) = &H55 And byindata(1) = &HAA

Then ′包头正确,接收到包头进行数据处理

End sub

′延时程序

Sub Timedelay(TT As Long)

Dim t As Long ′声明一个长整数,记录计数值

t = GetTickCount() ′取得系统计数值

Do ′开始循环

DoEvents

If GetTickCount - t < 0 Then t = GetTick-Count ′归零

Loop Until GetTickCount - t >= TT ′计算延迟是否到达

End Sub

4 结论

根据本系统的研制经验,利用MSCOMM控件开发无线通信要把握好以下三条:

(1) 收发之间应延时适当,这需要在测试中不断地调试,以达到最佳效果。

(2) 选用好的且必须具有纠错功能的无线数传模块,否则将达不到理想的效果。

(3) 设定一个合理的通信协议,使中心站与子站有良好的沟通。实际测验证明,本系统在WIN98中运行稳定,在实验过程中取得了良好的效果。



上一页  [1] [2] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:7,546.87500 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号