M: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; MARGIN: 20px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: 14px/25px 宋体, arial; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; PADDING-TOP: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"> 对于那些不需要定时采集的数据,如设备的量程上下限,或其他一些参数,只有用户改变了后,才需要重新读回来,还有一些往设备输出的参数,也是不定时的,MCGS为这些特殊的情况定义了一个接口函数:PublicFunctionRunDevCommand(DatObjAsObject,ByValCmdAsString)AsLong。在MCGS的脚本程序里执行函数!SetDevice(“子设备名”,6,“带有参数的命令名”),MCGS就会调用RunDevCommand函数,并把“带参数的命令”传给了字符串变量“cmd”。如以天辰PID控制仪为例,用户想改变仪表的设定值(SV值),我们就可以定义一条这样的命令,SetValue(dat1,dat2),这时MCGS就把命令传到了cmd中,cmd=“SetValue(Dat1,Dat2)”。使用字符串函数把命令中的两个参数取出来,两个参数的意思是,dat1表是设定在仪表中存放的地址,dat2为要设定的值,获得了这两个参数的值后,就可以根据协议的规定发送一条设定(SV值)的命令来改变SV值。其他的参数设定也是类似的。至此设备的驱动程序就基本完成。 还有一个接口函数:PublicFunctionGetChlType(DatAsVariant,msgAsVariant)AsLong。其作用就是读取设备通道数据的类型和设备通道类型说明。例如:
所以每一个设备驱动程序要做的主要工作是编写以上三个接口函数。接口软件编程流程图如图2所示。
2.2智能仪表类
智能仪表类包括各种智能仪表和智能模块。它们必须通过与计算机的串口(通常叫com口)连接才能与计算机进行数据通信。串口通信原理图如图3所示:
设备通过计算机的串口,采用各种通信协议与计算机进行通信。必要的通信参数有波特率大小,数据位长度,停止位位数,有无奇偶校验等。对于与串口通信有关的设备,必须调用一个串口父设备,子设备只负责按通信协议形成设备命令,并把命令放到一个固定的字节数组中,然后子设备调用父设备的几个通信函数,包括
其中输入输出数据或命令都放在数组OutPutByte()中。串口父设备才真正与计算机的串口打交道。编制串口子设备驱动程序的原理和格式与编制独立板卡类设备驱动程序的原理和格式是一样的。只不过独立板卡类设备驱动程序调用的是设备核心函数;而串口子设备驱动程序调用的是串口父设备通信函数。
3 接口软件编程框架
以下是MCGS监控软件设备驱动程序编程框架。该程序框架用VisualBasic语言编制,对独立板卡类和智能仪表类设备都适用。用户在具体编程时只要将程序框架中省略部分补充完整即可。程序编制完成之后,再对其进行“不兼容”和“二进制兼容”两次编译。将编译后得到的“*.dll”文件拷贝到D:\MCGS\Pro-
评论