最新版MCGS高级开发指南(五) 点击:6732 | 回复:62



tzzabc

    
  • 精华:3帖
  • 求助:0帖
  • 帖子:20帖 | 119回
  • 年度积分:0
  • 历史总积分:197
  • 注册:2001年8月09日
发表于:2003-11-20 08:34:00
楼主
3.11 编制简单的设备驱动构件 本章以上各节所讲的是编制一个通用设备驱动构件的具体方法和技巧,看起来比较复杂和难懂,但在实际应用中,如果设备的功能和作用已经确定,而你的目标也只是完成具体的工程,那么,设备驱动构件的编制就要简单的多。下面以中泰PC6319模拟量输入板和研华的亚当模块ADAM4050为例,讲解如何编制特定功能的设备驱动构件。 中泰PC6319设备驱动构件 功能要求 假定只须使用中泰PC6319接口卡的10个通道,且接口卡的跳线设置为:单端输入、0~10V输入量程、数码转换方式为单极性,要求本设备构件能对10个通道的数据进行采集。 开发步骤 根据前面所述,利用MCGS的高级开发向导,生成一个独立设备驱动构件的源程序框架;假定工程名设为:My6319,类型名设为:我的6319; 把属性DevChannel中的值该为10;把接口GetChlType中的代码该为: Dim i As Long For i = 0 To 9 Dat(i) = 2 msg(i) = "AD输入"+format$(I+1,”0”) Next i 参照中泰PC6319中给出的例程,在接口CollectDevDat中编制如下程序代码: Dim i as Long, h as Long, l as Long For i=0 to 9 Outp mHandle, DevBaseIO, i ‘设置AD通道 Outp mHandle, DevBaseIO+1, 0 ‘启动AD转换 Do ‘等待AD转换结束 If Inp(mHandle, DevBaseIO + 2) < 128 Then Exit Do Loop h = Inp(mHandle, DevBaseIO + 2) And &HF ‘读高4位 l = Inp(mHandle, DevBaseIO + 3) ‘读低8位 dd(i) =( h * 256 + l)*10000/4096 ‘转换为mV数 Next i 编译工程,得到DLL文件My6319.dll,把该文件拷贝到MCGS的program\drivers目录下,即可完成本设备构件的编程工作。 在MCGS组态环境中,按设备工具箱上的“设备管理”按钮,进入设备管理窗口,通过“浏览”按钮把新生成的设备驱动构件选取到设备工具箱中即可在MCGS中使用新设备。 研华ADAM4050设备驱动构件 功能要求 能随时读入7个开关量输入通道的状态和设置8个开关量输出通道的输出状态。 开发步骤 根据前面所述,利用MCGS的高级开发向导,生成一个通讯子设备驱动构件的源程序框架;假定工程名设为:My4050,类型名设为:我的4050 定义一个属性DevNumber,用来标识模块的地址号 Public DevNumber As Long 把属性DevChannel中的值该为15; 把接口GetChlType中的代码该为: Dim i As Long For i = 0 To 14 IF i<=6 then Dat(i) = 1 msg(i) = "DI输入"+format$(i,”0”) else Dat(i) = -1 msg(i) = "DO输出"+format$(i-7,”0”) endif Next i 在接口CollectDevDat中编制如下程序代码: On Error Resume Next Dim flag As Long flag = CollectOneComm(mParent, DevNumber, dat) CollectDevDat = 0 If flag <> 0 Then CollectDevDat = -1 参照研华亚当模块的通讯协议,在程序模块DevBas中编制如下程序: Option Explicit Dim InputByte(127) As Byte Dim OutPutByte(127) As Byte 通过串口采集ADAM模块数据。 Public Function CollectOneComm(comm As DevCom232, ByVal num As Long, dat As Variant) As Long Dim Cmd As String, i As Long, m As Long ‘准备输出数据 m = 0 For i = 7 To 14 m = m Or (dat(i) * 2 ^ (i - 7)) Next i ‘准备输出命令字符串 Cmd = "#" + Right(("00" + Hex$(num)), 2) + "00" Cmd = Cmd + Right(("00" + Hex$(m)), 2) + Chr$(13) ‘和模块进行通讯,向模块写输出通道状态 m = Write4050Data(Cmd, comm) If m = -1 Then CollectOneComm = -1: Exit Function ‘准备读取通道状态命令字符串 Cmd = "$" + Right(("00" + Hex$(num)), 2) + "6" + Chr$(13) ‘和模块进行通讯,读取输入通道状态 m = Read4050Data(Cmd, comm) If m = -1 Then CollectOneComm = -1: Exit Function ‘进行数据转换 For i = 0 To 6 dat(i) = Sgn(2 ^ i And m) Next i CollectOneComm = 0 End Function 通过调用串口父设备的ComOutDat和ComInDat两个函数实现从ADAM模块读数据。 Public Function Read4050Data(ByVal Cmd As String, comm As DevCom232) As Long On Error Resume Next Dim i As Long, iLen As Long ‘把命令字符串转换成字节数组 For i = 1 To Len(Cmd) OutPutByte(i - 1) = Asc(Mid$(Cmd, i, 1)) Next i ‘通过串行口父设备,给模块发指令 comm.ComOutDat Len(Cmd), OutPutByte() ‘等待模块返回信息 iLen = comm.ComInDat(InputByte(), 0, 0, 13, 1500) If iLen <= 0 Then Read4050Data = -1: Exit Function ‘把字节数组转换成字符串 Cmd = "" For i = 0 To iLen Cmd = Cmd + Chr$(InputByte(i)) Next i ‘判断返回结果是否正确 If Mid$(Cmd, 1, 1) <> "!" Then Read4050Data = -1: Exit Function ‘转换读取的数据值 Read4050Data = Val("&h" + Mid(Cmd, 4, 2)) End Function 通过调用串口父设备的ComOutDat和ComInDat两个函数实现向ADAM模块输出数据。 Public Function Write4050Data(ByVal Cmd As String, comm As DevCom232) As Long On Error Resume Next Dim i As Long, iLen As Long ‘把命令字符串转换成字节数组 For i = 1 To Len(Cmd) OutPutByte(i - 1) = Asc(Mid$(Cmd, i, 1)) Next i ‘通过串行口父设备,给模块发指令 comm.ComOutDat Len(Cmd), OutPutByte() ‘等待模块返回信息 iLen = comm.ComInDat(InputByte(), 0, 0, 13, 1500) ‘判断返回结果是否正确 If iLen <= 0 Then Write4050Data = -1: Exit Function If Chr$(InputByte(0)) <> ">" Then Write4050Data = -1: Exit Function Write4050Data = 0 End Function 编译工程,得到DLL文件My4050.dll,把该文件拷贝到MCGS的program\drivers目录下,即可完成本设备构件的编程工作。



gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-09-10 09:31:00
21楼
我也需要资料 河北路桥集团有限公司工程机械修理厂 石家庄市石栾路2号 李维华 050021 0311-6129627

sxtb

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:15
  • 注册:2003年9月10日
发表于:2003-09-10 09:33:00
22楼
我也需要资料 河北路桥集团有限公司工程机械修理厂 石家庄石栾路2号 李维华 050021 0311-6129627

tigress

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 31回
  • 年度积分:0
  • 历史总积分:67
  • 注册:2003年8月04日
发表于:2003-09-10 11:55:00
23楼
您需要的资料已经安排寄送! 培训资料您可以在下面的地址下载: http://www.gongkong.com/customer/mcgs/download.asp 谢谢支持!

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-09-11 12:13:00
24楼
AK47: 我也要一份,顺便帮我来一份上次说的电力,成都研讨会我看见有水处理的,请问能不能帮忙也给我一个详细的样例,我现在赶紧得学会,要不明年就只有让别人做了,急需,谢谢! 成都恒泰百富勤科技实业有限公司 电话:028-85232880 85239302 传真:028-85215252 邮编:610041 地址:成都一环路南二段新世纪东12A 联系人:张先生

tigress

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 31回
  • 年度积分:0
  • 历史总积分:67
  • 注册:2003年8月04日
发表于:2003-09-11 17:21:00
25楼
to 张先生: 已经安排给您寄送资料,请注意查收。 谢谢支持!

stone_slc

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2003年3月17日
发表于:2003-10-30 14:00:00
26楼
我也需要资料,请您给我寄给我寄一份高级开发和最版软件吧,我正在学习组态软件 武汉理工大学马房山校区西院265# 石连传(收) 430070

QTkeny

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 15回
  • 年度积分:0
  • 历史总积分:27
  • 注册:2002年8月13日
发表于:2003-10-31 21:09:00
27楼
你好!我正在用你们的组态软件,需要与RKC的温度表进行通讯,能给我相关的资料吗?请给我寄一份高级开发和最新版软件,谢谢! l_chunhua@163.com 广州市增槎路43号河畔东街61号705信箱 李春华 收 510165

刘栋

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2003年11月01日
发表于:2003-11-02 05:24:00
28楼
你好!我正在用你们的组态软件,需要与大延牌智能仪表进行通讯,能给我相关的资料吗?请给我寄一份高级开发和最新版软件,谢谢!   dm21cn@163.net    广州市经济技术开发区西区珠江钢铁有限公司办公大楼311房    刘栋 收    510730

gaofeng791010

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2003年9月02日
发表于:2003-11-12 11:33:00
29楼
给我寄给我寄一份高级开发和最版软件吧? 地址:甘肃省兰州市兰州交通大学103#高峰(收) gaofeng791010@tom.com thank you !

wangrunheyue

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 304回
  • 年度积分:0
  • 历史总积分:364
  • 注册:2003年11月18日
发表于:2003-11-18 11:16:00
30楼
to刘先生:我们已经联系广州分公司为您邮寄资料,请注意查收!!

wangrunheyue

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 304回
  • 年度积分:0
  • 历史总积分:364
  • 注册:2003年11月18日
发表于:2003-11-18 11:19:00
31楼
to keny: 我们已经联系广州分公司为您邮寄资料,请注意查收!! 若有问题请致电广州分公司:020-38772561/2/3,他们会为您解决问题。

meikanshu

  • 精华:0帖
  • 求助:0帖
  • 帖子:61帖 | 256回
  • 年度积分:0
  • 历史总积分:1615
  • 注册:2002年3月25日
发表于:2003-11-19 09:56:00
32楼
我怎么看,我的哪个MCGS5。1都不是开发版,好象只有通用版功能,也不知道在哪里写VB代码

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-11-19 10:54:00
33楼
我们的光盘上包含我们三个版本的软件,您自行安装即可使用。我们通用版、网络版开发环境全部无限点免费提供,没有任何限制。同时我们的光盘里提供一个高级开发包,协助部分有开发能力的客户来完成一些开发工作。 “我的哪个MCGS5。1都不是开发版,好象只有通用版功能,也不知道在哪里写VB代码”,这个话真不好理解啊! 谢谢!

meikanshu

  • 精华:0帖
  • 求助:0帖
  • 帖子:61帖 | 256回
  • 年度积分:0
  • 历史总积分:1615
  • 注册:2002年3月25日
发表于:2003-11-20 08:30:00
34楼
我没有收到光盘,只是从网上下载的通用版,你们根本就没给我寄。看来我还是老实的去使用VB和BORLAND C去做自己的工控软件吧?那样也许不具通用性,但很实在。 希望在我退出工控界以前,可以让我看到国宝组太软件可以代替手工编程吧

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-11-20 08:34:00
35楼
祝您早日心想事成!

wangxiaodan

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2004年9月30日
发表于:2004-09-30 17:43:00
36楼
我想要一份高级开发指南和最新版的MCGS软件 我的地址是:洛阳工业高专计算机系02403班 王晓丹 邮编:471003 谢谢!! email:wxd0240306@163.com

lishuyu

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2002年12月25日
发表于:2004-11-23 15:02:00
37楼
我想要一份高级开发指南、初级和高级培训教程。 地址:北京2732信箱 北京纳诺帕技术中心 李树瑜 邮编:100080 谢谢! lishu_yu@163.com

glsg

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 14回
  • 年度积分:0
  • 历史总积分:86
  • 注册:2004年4月30日
发表于:2004-11-24 16:03:00
38楼
我想要一份高级开发指南、初级和高级培训教程(最新出的,最好是书)。   地址:桂林市曙光研究所 李强   邮编:541004   谢谢!   glsg7730@163.com

wangrunheyue

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 304回
  • 年度积分:0
  • 历史总积分:364
  • 注册:2003年11月18日
发表于:2004-11-24 16:35:00
39楼
lishuyu,glsg: 你好!已经将信息转给相应部门,请注意查收!

vi-china

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 22回
  • 年度积分:0
  • 历史总积分:106
  • 注册:2004年7月11日
发表于:2004-12-30 10:41:00
40楼
给我邮寄一份高级开发指南和相关资料,在网站上不能下载,谢谢

热门招聘
相关主题

官方公众号

智造工程师