在VB下实现无线通信的方法_第1页
在VB下实现无线通信的方法_第2页
在VB下实现无线通信的方法_第3页
在VB下实现无线通信的方法_第4页
在VB下实现无线通信的方法_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在VB下实现无线通信的方法一、VB串行通信利用VB开发通信程序主要的方法有两种:一是利用VB本身提供的控件 (CONTRALS);另一种方法是利用Windows API应用程序接口。Windows API 主要提供了三个动态连接库(KERNEL.EXE、USER.EXE、GDI.EXE)供开发 人员调用,其中KERNEL.EXE主要包括一些底层操作函数,完成一些资源管 理、任务、内存等操作;USER.EXE包含了一些与Windows管理有关的函数, 如通信、菜单、消息、光标、插入符、计时器以及绝大多数非显示函数;GDI.EXE 图形设备接口库,主要内容为与设备输出有关的函数。和串口通信有关系的

2、函 数 BuilidCommDCB、ClearCommBreak、SetCommBreak、FlushComm、 GetCommError、 GetCommState、 WriteComm、 ReadComm、 SetCommState、CloseComm 等均在 Windowssystem 子目录下的 USER.EXE动态连接库中,在VB调用之前应该先在全局变量定义处声明API 通信函数、定义常量。在VB的控件工具箱中,提供了一个使用非常方便的串行通信控件 MSComm,它提供了一个事件OnComm,该事件可以截取串口的任何消息,转 入事件处理程序。OnComm事件是唯一的,OnComm可以

3、捕获通信时发生的 串口事件和错误信息,当有串口事件或错误发生时,VB会立刻触发一个 OnComm事件,程序就会自动转入OnComm事件处理程序中。CommEvent 属性是OnComm事件的指示器,该属性在设计时不能使用,在程序运行时为只 读,CommEvent属性存有最近的事件或错误的数值代码,可以在程序中随时 读取CommEvent属性值来了解通信的状况,OnComm事件是和CommEvent属性密切相关、一起使用,当任何一个OnComm事件或错误发生时,都会使得CommEvent属性值改变,在OnComm事件处理过程中,可以通 过判断CommEvent属性值,对于不同的属性值转入不同的事

4、件处理过程,一 般采用的办法是SELECT CASE.END SELECT。由于在无线通信中没有 使用有线Modem,CommEvent属性涉及到的有线Modem的属性数值代码 和本项目无关。二、无线传输接口和协议用Intel 586/120的PC机为上位机,通信程序用VB开发,用8031单片机 作CPU、AD574作数据采集的下位机,上位机作数据接收和数据处理中心站, 下位机实时采集数据之后,进行简单的数据平均计算,当收到上位机发来的发 送指令之后,开始向上位机发送数据。上位机无线通信接口使用的是一块插在ISA扩展槽中的无线Modem ZX-02,无线Modem与Kenwood公司的TK-3

5、78无线对讲机相连,数字信号通 过无线Modem调制成为音频信号之后,送到TK-378无线对讲机上的MIC 口。 下位机有一台外置无线Modem ZX-01,单片机的数字信号经过串口送入无线 Modem,Modem对信号进行调制后送入Kenwood TK-378无线对讲机上,接 收数据的方式与上述相同,由TK-378收到信号后,经无线Modem将音频信号 解调为数字信号进入计算机或单片机处理。由于在通信网络中,并非点对点的通信,而是一点对多点的广播式的通信 方式,因此,我们在通信协议中增加站点识别码,给下位机编码可以保证网络通信的有序性。由于无线通信可能会有空间的燥声干扰,因此,采取了多项抗干

6、扰措施,首 先是包头识别码,在发送了传输命令之后,下位机开始以打包的形式传输数据, 每一包都有一个包头和包尾识别码,假如识别码有误,这一次的传输为不正常 数据处理。打包发送另外一个原因是TK-270对讲机连续发送数据的时间不 能超过一分钟,超过一分钟就会自动中断发送,因此,当数据较多时不打包连续 发送的时间就会超过一分钟,发送数据中断。在下位机中有32KB的NVRAM,可以保存32KB的数据。该数据可以由 上位机发送清除命令的方法清除掉,当32KB满了以后,最早放入的数据就会 丢掉,由于采样速率不高,在慢采的情况下,两天的时间才能存满,这样不论上位 机或下位机出现断电、死机等问题,数据不会丢失

7、掉。由于使用的无线Modem所限,传输速率只能达到2400bps,而在我们的使 用中 1200bps、N Parity、8 DATA、1 STOP 为较稳定状态。上位机向下位机发送的命令有校时命令、请求内存命令、发送数据命令、 快采命令和慢采命令等。发送命令有两种发送方式,即手动方式和自动方式, 自动方式是由定时器来完成的。三、应用实例由于该项目的软件源代码较长,我们只拿出和串口通信有关的程序片段 来供大家参考。在我们的工作中实践了三种通信方式,即查询方式、事件驱动 方式、事件驱动转查询方式。这三种方式各有利弊,查询方式方便可靠,可利用 协议或设定时钟进入和退出查询状态,但不是资源的有效利用方

8、式;事件触发 方式对于定长通信非常有效,但定长通信在有些场合不实用;事件驱动转查询 方式既有事件驱动的特点又有转查询方式特点,可以说是集二者之长,有效利 用资源。下面着重介绍事件驱动转查询方式。首先在公共模块中定义和ONCOMM有关的参数:Global Const MSCOMM_EV_RECEIVE = 2 收到 Rthreshold 个字符。该事件将持续产生直到用Input属性从接收缓冲区中删除数据。Global Const MSCOMM_ER_RXOVER = 1008 接受缓冲区溢出,接收 缓冲区没有空间。Global Const MSCOMM_ER_TXFULL = 1010 传输缓冲

9、区已满。传 输字符时传输缓冲区已满。在启动过程中对串口和输入输出缓冲区初始化:Sub Form_Load ()comm1.Settings = 1200,n,8,1设定波特率 1200bps,无校验,8 位数据位,1位停止位comm1.CommPort = 1 串口 1comm1.InputLen = 1 一次从输入缓冲区中读取一个字符comm1.InBufferSize = 512 定义输入缓冲区为 512 字节(bytes)comm1.InBufferCount = 0清空输入缓冲区comml.OutBufferCount = 0 清空输出缓冲区comml.PortOpen = True

10、启动串口End Sub下面是发送数传命令的子过程,启动该过程由一个定时器控制:Sub sample_data ()comml.RTSEnable = True将Modem的PTT置高,同时打开对讲机Call time_delay 适当延时comm1.Output = *TRNS + Chr$(13)发送命令Do该循环用来检测命令是否全部发送完毕Loop Until comm1.OutBufferCount = 0Call time_delay适当延时comm1.RTSEnable = False将Modem的PTT置低,将对讲机改为接受状态comm1.InBufferCount = 0清空接收

11、缓冲区comm1.RThreshold = 1 设定 RThreshold = 1,等待出发 OnComm 事件 End Sub在OnComm编写接收和处理代码:Sub Comm1_OnComm ()Select Case comm1.CommEventCase MSCOMM_ER_RXOVER接收缓冲区溢出,可插入相应的代码Case MSCOMM_ER_TXFULL传输缓冲区已满,可插入处理代码Case MSCOMM_ER_RECEIVE收到1个字符,可进入以下处理过程comm1.RThreshold = 0不再响应OnComm事件,转入查寻方式接收ii = 0iii = 0: sinn =

12、 Chr$(42): sinnl = Chr$(42)初始化变量Doduration = Timer + .2设定超时退出的时间值iii = iii + 1 sinn1 = sinnDo该循环判断输入缓冲区是否有数据或是否超时dummy% = DoEvents()Loop Until comm1.InBufferCount = 1 Or Timer = durationIf Timer = duration Then iii = iii - 1overtime = True确定超时退出,并非正常退出Exit DoEnd Ifsinn = comm1.Input正常退出,取值付给sinnIf header_er = 0 ThenGoTo test_headerEnd IfIf Asc(sinn) 175 Or Asc(sinn) 1 T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论