admin 管理员组

文章数量: 1086019


2024年3月19日发(作者:博客源码二次元)

一、 VB串行通信

利用VB开发通信程序主要的方法有两种:一是利用VB本身提供的控件(CONTRALS);

另一种方法是利用Windows API应用程序接口。Windows API 主要提供了三个动态连

接库(、、)供开发人员调用,其中 主要包括一

些底层操作函数,完成一些资源管理、任务、内存等操作;包含了一些与Windows

管理有关的函数,如通信、菜单、消息、光标、插入符、计时器以及绝大多数非显示函

数;图形设备接口库,主要内容为与设备输出有关的函数。和串口通信有关系的函数

BuilidCommDCB、ClearCommBreak、SetCommBreak、FlushComm、GetCommError、

GetCommState、WriteComm、ReadComm、SetCommState、CloseComm等均在

Windowssystem 子目录下的动态连接库中,在VB调用之前应该先在全局变

量定义处声明API通信函数、定义常量。

在VB的控件工具箱中,提供了一个使用非常方便的串行通信控件MSComm,它提供了

一个事件OnComm,该事件可以截取串口的任何消息,转入事件处理程序。OnComm事件

是唯一的,OnComm可以捕获通信时发生的串口事件和错误信息,当有串口事件或错误发

生时,VB会立刻触发一个OnComm事件,程序就会自动转入OnComm事件处理程序中。

CommEvent属性是OnComm事件的指示器,该属性在设计时不能使用,在程序运行时为

只读,CommEvent 属性存有最近的事件或错误的数值代码,可以在程序中随时读取

CommEvent 属性值来了解通信的状况,OnComm事件是和CommEvent属性密切相关、

一起使用,当任何一个OnComm 事件或错误发生时,都会使得CommEvent属性值改变,

在OnComm事件处理过程中,可以通过判断CommEvent属性值,对于不同的属性值转入

不同的事件处理过程,一般采用的办法是END SELECT。由于在无线通信

中没有使用有线Modem,CommEvent 属性涉及到的有线Modem的属性数值代码和本

项目无关。

二、无线传输接口和协议

用Intel 586/120的PC机为上位机,通信程序用VB开发,用8031单片机作CPU、

AD574作数据采集的下位机,上位机作数据接收和数据处理中心站,下位机实时采集数据之

后,进行简单的数据平均计算,当收到上位机发来的发送指令之后,开始向上位机发送数据。

上位机无线通信接口使用的是一块插在ISA扩展槽中的无线Modem ZX-02,无线

Modem与Kenwood公司的TK-378无线对讲机相连,数字信号通过无线Modem调制成

为音频信号之后,送到TK-378无线对讲机上的MIC口。

下位机有一台外置无线Modem ZX-01,单片机的数字信号经过串口送入无线

Modem,Modem对信号进行调制后送入Kenwood TK-378无线对讲机上,接收数据的方

式与上述相同,由TK-378收到信号后,经无线Modem将音频信号解调为数字信号进入计算

机或单片机处理。

由于在通信网络中,并非点对点的通信,而是一点对多点的广播式的通信方式,因此,我们

在通信协议中增加站点识别码,给下位机编码可以保证网络通信的有序性。

由于无线通信可能会有空间的燥声干扰,因此,采取了多项抗干扰措施,首先是包头识别

码,在发送了传输命令之后,下位机开始以打包的形式传输数据,每一包都有一个包头和包尾

识别码,假如识别码有误,这一次的传输为不正常数据处理。打包发送另外一个原因是

TK-270对讲机连续发送数据的时间不能超过一分钟,超过一分钟就会自动中断发送,因此,

当数据较多时不打包连续发送的时间就会超过一分钟,发送数据中断。

在下位机中有32KB的NVRAM,可以保存32KB的数据。该数据可以由上位机发送清


本文标签: 事件 属性 无线 下位 函数