最新版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目录下,即可完成本设备构件的编程工作。



wangrunheyue

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 304回
  • 年度积分:0
  • 历史总积分:364
  • 注册:2003年11月18日
发表于:2005-01-05 13:37:00
41楼
VI-CHINA: 你好~已经通知武汉办给你邮寄,请注意查收~

zjllb

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 38回
  • 年度积分:0
  • 历史总积分:48
  • 注册:2003年7月03日
发表于:2005-01-30 00:11:00
42楼
我也需要资料,请您给我寄给我寄一份高级开发和最版软件吧,我正在学习组态软件,待业中啊! 上海市宝山区长江路848弄29号 赵家亮 200431 qzk2004@tom.com

lixuebao

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2008年1月05日
发表于:2005-02-22 16:11:00
43楼
我也需要资料,请您给我寄给我寄一份高级开发和最版软件吧,我正在学习组态软件,在网站上不能下载,谢谢 地址:兰州交通大学49#信箱    李学宝     邮编:730070          li_xuebao@163.com

sun-angel

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 131回
  • 年度积分:0
  • 历史总积分:202
  • 注册:2005年1月24日
发表于:2005-03-01 10:35:00
44楼
非常感谢诸位对MCGS的支持!您们的需求我们会及时处理,谢谢!

mickey_mouse

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 6回
  • 年度积分:0
  • 历史总积分:12
  • 注册:2004年7月10日
发表于:2005-03-07 11:06:00
45楼
你好,我现在正在用mcgs做一些项目,需要 一份高级开发和最版软件,请给我寄一份吧,谢谢 浙江大学(玉泉校区)32舍483室 张超 310027 非常感谢 zchao8202@163.com

sun-angel

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 131回
  • 年度积分:0
  • 历史总积分:202
  • 注册:2005年1月24日
发表于:2005-03-07 17:46:00
46楼
以上朋友,非常感谢您对昆仑通态的支持!您的需求已经转交给相关负责人处理,我们会尽快处理!如有疑问请留言。

sun-angel

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 131回
  • 年度积分:0
  • 历史总积分:202
  • 注册:2005年1月24日
发表于:2005-03-14 14:29:00
47楼
各位朋友: 非常感谢您对我们公司的支持,由于近期公司网站服务器出现问题,正在维修之中。所以影响了大家的使用,请抱歉!我们会尽快恢复公司网站,敬请关注! 昆仑通态市场部

黄明

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:53
  • 注册:2005年3月22日
发表于:2005-03-22 10:04:00
48楼
给我寄给我寄一份高级开发和最版软件吧,我的地址: 湖北荆州长江大学东校区373# 黄明 收 434203

sun-angel

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 131回
  • 年度积分:0
  • 历史总积分:202
  • 注册:2005年1月24日
发表于:2005-03-24 16:14:00
49楼
以上朋友,非常感谢您对昆仑通态的支持!您的需求已经转交给相关负责人处理,我们会尽快处理!如有疑问请留言。

zhaoxin19840623

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2005年5月17日
发表于:2005-05-17 20:59:00
50楼
我在做毕业设计,用MCGS如何与 VC相互调用,那位高手有相关的资料,谢谢!请发到zhaoxin-19840623@126.com 非非常常感谢!

金宏

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 9回
  • 年度积分:0
  • 历史总积分:67
  • 注册:2002年11月22日
发表于:2005-07-28 14:47:00
51楼

kinsey

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 15回
  • 年度积分:0
  • 历史总积分:21
  • 注册:2004年7月28日
发表于:2005-07-28 16:02:00
52楼
我现用的是MCGS5.11版,安装盘说有高级开发包可无法安装。本人急需用。能否给我邮寄。非常感谢!    南京林业大学 203# 210037 李金喜    email: lijinxi007@hotmail.com

kinsey

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 15回
  • 年度积分:0
  • 历史总积分:21
  • 注册:2004年7月28日
发表于:2005-07-28 16:05:00
53楼
我现用的是MCGS5.11版,安装盘说有高级开发包可无法安装。本人急需用。能否给我邮寄。非常感谢!    南京林业大学 203# 210037 李金喜    email: lijinxi007@hotmail.com

李自成

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:51
  • 注册:2002年11月15日
发表于:2005-10-12 09:34:00
54楼
请给我寄一份高级开发指南和最新版软件吧,谢谢 我的联系方式: 武汉化工学院电气信息学院电气工程教研室 李自成 邮编:430073

Jackie-super

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 136回
  • 年度积分:0
  • 历史总积分:221
  • 注册:2005年4月14日
发表于:2005-10-26 10:07:00
55楼
到昆仑通态的网站上去下载资料吧.

libiao4990

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2006年3月04日
发表于:2006-02-10 23:05:00
56楼
我正在学习组态软件,在网站上不能下载.能否寄给我ADAM4000初始化软件。谢谢!
  libiao4990@sohu.com

hongji_whm

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2006年3月20日
发表于:2006-04-09 22:01:00
57楼
我也想要MCGS工控组太软件 好心人给我发一个
谢谢
hongji_whm@163.com

血色天

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 12回
  • 年度积分:0
  • 历史总积分:30
  • 注册:2006年4月25日
发表于:2006-04-28 11:43:00
58楼
我也需要资料,请您给我寄给我寄一份高级开发和最新版软件吧,我正在学习组态软件,在网站上不能下载,谢谢
  地址:哈尔滨工程大学3#425寝室
    周增民
    邮编 150001
     谢谢 
  zengmin123@163.com
    

danube

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:55
  • 注册:2005年9月19日
发表于:2006-05-17 23:30:00
59楼
我想请教MCGS如何实现控制电磁阀?急

danube202@163.com
谢谢

THEO

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 64回
  • 年度积分:0
  • 历史总积分:117
  • 注册:2006年8月28日
发表于:2006-08-28 11:20:00
60楼
好贴先顶上来~!

热门招聘
相关主题

官方公众号

智造工程师