关于C#如何使用Prodave(实战DllImport).pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于C#如何使用Prodave(实战DllImport)

SIEMENS 严格意义上讲,此文不算OPC的范畴。起因是,另一个项目的PLC强人说,OPC慢, 用prodave吧,好,用就用吧,装好Prodave看是看其英文资料,虽然英文不好,但好在 这里英文 很简单。好了,上网查了点资料,这里还要感谢几个朋友的帮忙,让我对于C#与C++ 的数据结构有了更进一步的认识,也学会了使用DllImport 在本文的开头,我要说明下,Prodave是西门子的通信方式,即使我提供了Prodave6.dll, 您不注册也是没用用的,所以请使用西门子的安装程序,哪里下载?自己百度一下。不 要来问我哪里下载Prodave6.dll,也不要问我为什么程序会报错说没有注册dll 下面开始进入正文。 (1)上来第一个函数,就是连接PLC的LoadConnection_ex6,在说明书里描述如下: LoadConnection_ex6 ThebasicLoadConnection_ex6functioninitializestheadapter,checksifthe driverisloaded,initializestheaddresses thathavebeenassignedparametersand activatestheselectedinterface. LoadConnection_ex6isusedtosetupatransportconnectionviaMPI/PB- orIP addresses(TCP/IPprotocol) intLoadConnection_ex6(intConNr,char*pAccessPoint,intConTableLen, CON_TABLE_TYPE*pConTable); Parameters ConNr [in]Numberoftheconnection(max.64connections). pAccessPoint [in]accesspoint(zero-terminated)ofthedriverused,e.g.S7ONLINEfortheMPI driveror0(default). ConTableLen [in]lengthofthetableofconnectionsprovidedbytheuserinbytes pConTable [in]pointertoaddresslistofconnectedusers;‘Adr==0’ istakenastheendmarkof thelist. #pragmapack(1) typedefunion{ unsignedcharMpi;//MPI/PB stationaddress(2) unsignedcharIp[4];//IPaddress () unsignedcharMac[6];//MACaddress(08-00-06-01-AA-BB) }CON_ADR_TYPE; typedefstruct{ CON_ADR_TYPEAdr;//connectionaddress unsignedcharAdrType;//Typeofaddress: MPI/PB(1),IP(2),MAC(3) unsignedcharSlotNr;//Slotnumber unsignedcharRackNr;//Racknumber }CON_TABLE_TYPE; 1 SIEMENS #pragmapack(1) 好吧,起先其他的转换网上都有,不难,但是出现了union共用体,恩C#没有这个概 念。怎么办?起先,参考网上的资料,采用 [StructLayout(LayoutKind.Explicit)] structS1 { [FieldOffset(0)] inta; [FieldOffset(0)] intb; } 类似这样的布局,再加上类似[MarshalAs(UnmanagedType.ByValArray,SizeConst=6)]的声 明。 但是,最终单纯的使用2个数组作为“共用体”字段的话是可以通过编译的,但是再加上

文档评论(0)

ranfand + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档