微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 在应用可编程测控网络设计

在应用可编程测控网络设计

时间:03-15 来源:电子技术应用 点击:

引导程序的主流程图如图5所示。引导主程序中包含系统初始化、串口设置及读下载标志等程序。在引导程序的中断程序中(如图4)包括程序下载命令的解释程序和代码的下载操作。为了编程方便,下载的程序代码都是ASCII码,这样可以方便地定义一些控制字符。下载的简单协议为"AAH(下载命令)+程序代码(以ASCII 码形式)+1BH(文件结束符)+异或校验和"。当中断程序接收到二进制数AAH时,即认为接收到程序下载的命令,并在中断程序中以查询的方式接收数据,依次将接收的代码转化为二进制数后放入以8000H为首地址的数据空间,同时产生接收数据的校验和。而当接收到1BH结束符时,则认为所下载的程序代码已结束,并准备接收校验和。当程序代码接收正确,在中断程序中依据所读出的下载标志设置新的下载标志,然后改变堆栈指针,使串行中断退出,并使PC指针指向8000H,开始运行下载的程序。中断退出代码如图4所示。当串行中断接收的命令不是程序下载命令,则在中断程序直接跳至中断映射区的串行中断入口8023H,执行相应的串行中断程序。

4 上位机软件的编程

  上位机软件可以采用Delphi开发工具编写基于Windows95/98/2000平台下的串行通讯程序。MSCOMM32.OCX控件是微软公司在VB和VC开发软件中随带的串行通信控件,该控件屏蔽了通信过程中的底层操作,程序员应用时只需设置和监视该控件的属性和事件即可完成对串行口的初始化和数据的输入和输出工作。在Delphi5.0中已将它重新定义为TMSComm类。在应用可编程测控网络的设计中需要发送与接收控制字符,这些控制字符有可能包含ASCII值大于80H的字符,因此要求上位机软件既能接收二进制数据又能发送二进制数据。在TMSComm类中有一项InputMode属性,当设置InputMode=1时,数据是以二进制方式取回,而发送二进制数据则需要依照TMSComm类的规则通过动态数组和变体的方法实现。

  下面是一个简单的发送和接收二进制数据的例子程序:

  串口设置

mscomm1.Comport:=1; //操作对象为串口1

mscomm1.Settings:=’9600,N,8,1’; //设置串口参数

mscomm1.Rthreshold:=1; //收到1个字节后触发串口事件

mscomm1.inbuffercount:=0; //清串口接收缓冲区

mscomm1.OutBufferCount:=0; //清串口发送缓冲区

mscomm1.PortOpen:=true; //打开串口

发送例程:

var

  MyFlexibleArray : array of byte; //定义动态数组

outputdata: variant; //定义变体

begin

  SetLength(MyFlexibleArray,1); //在使用动态数组前必须设置它的长度。

  MyFlexibleArray[0]:=$AA; //将待发送二进制数放入数组

  outputdata := myFlexibleArray; //将动态数组赋给变体

  mscomm1.Output:=outputdata; //将变体中的二进制数0AAH发出

end;

在串口事件中接收数据例程

mscomm1.Inputlen:=1; //每次从接收缓冲区中读1个字节数据

mscomm1.InputMode:=1; //以二进制方式接收数据

inbuf:=mscomm1.input; //读缓冲区,将数据接收至inbuf变量

  本文所述的在应用可编程测控网络的设计已在FWC-2型大坝自动监测系统中实际使用。该系统基于RS-485网络,可以管理255个测量模块的数据采集和程序下载。运行结果表明,该方案具有设计简单、技术成熟、开发迅速等优点。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top