Delphi封装MSComm供C#调用.docVIP

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

Delphi设计串口通信组件 创建一个ActiveX Library 这样就建立一个COM 组件,保存工程名称为MyCommTest. 然后新建一个ActiveX Form,命名为frmMyActivex 点击OK后,delphi会自动生成MyCommTest_TLB.pas及窗体frmMyActivexlmpl1. 在frmMyActivexlmpl1界面拖放一个MSComm控件 和 一个Timer控件,Time的Enable设置为False,interval设置为300ms.(可适当将界面调整小点)。 然后点击”View” - “Type Library”,打开类型库界面. 我们点击lfrmMyActivex接口新建一个属性,比如卡号 CardNo. \ 设置卡号的名字,类型为BSTR (BSTR为Delphi兼容COM接口的字符串类型), 点击”刷新”图标,自动将该属性加入到接口模块中. 我们可以看到在MyCommTest_LIB.pas的IfrmMyActivex = interface(IDispatch)接口中增加了一格CardNo属性. 在unit frmMyActivexImpl1中增加了两个属性操作函数 现在我们回到unit frmMyActivexImpl1; 我们需要实现对属性的操作,保存属性数据,就需要在该单元中新建一个私有的_CardNo变量。 然后需要手动实现两个属性操作函数的内容,在属性函数中填入以下代码。 为了实现对串口的操作,我们还需要自定义几个函数用于打开,关闭串口及发送串口通信指令。 点击”View” - “Type Library”,进入类型库界面 右键点击IfrmMyActivex,选择”new”-Method 输入函数名称 InitComm 然后选择Parameters选项卡,生成一个输入参数CommPort 串口号,类型为Short 点击刷新按钮,刷新接口模块,,我们在MyCommTest_TLB.pas界面看到,已经自动生成函数。 我们再到Unit frmMyActivexlmpl1模块去实现改函数接口。该函数用于打开串口,并调用Timer,定时发送指令给串口。 同理,我们生成UnInitComm函数,没有参数。 Timer中的代码为:(注:要在单元头添加Variants的引用) 然后我们对MSComm接收数据要处理,通过MSComm的OnComm事件获取串口接收的数据。 代码为: Comm组件功能基本完成,编译成功后,我们需要将该COM组件通过WEB的形式发布出来。点击”Project” – “Web Deployment Options” 设置发布选项。 我们可以自己在D盘或者其他盘下新建一个MyCOM的文件夹,然后将OCX及HTML文件发布到该文件夹下,URL可以暂时先用,点击OK。 点击”Project” – “Web Deployment” 发布。我们现在可以在D盘myCOM文件下找到我们的COM组件了。Delphi会为我们生成MyCommTest.htm和MyCommTest.OCX两个文件。可以通过运行MyCommTest.htm测试运行MyCommTest.ocx. 通过记事本打开htm文件,我们可以找到这个组件的classid,需要记下这个classid,便于C#中使用。 测试运行前,我们需要对MyCommTest.OCX进行注册,新建一个批处理文件,比如Reg.bat,填入以下内容: 保存后执行这个批处理文件,注册控件。 题外:我们可以看到生成的组件有400多K,比较大,这是因为Delphi编译时,把很多没有用的包也编译进去了,可以在编译前点”Project” - “Option”里面,将Build with runtime packages打勾,只包含我们需要的包。 这样生成的组件就只有 Delphi生成COM组件到此完成。 C#调用串口通信组件 C#调用串口通信组件可以通过JavaScript进行调用。 生成页面如下 页面代码为: %@ Page Language=C# AutoEventWireup=true CodeFile=Default2.aspx.cs Inherits=Default2 % !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN /TR/xhtml1/DTD/xhtml1-transitional.dtd html xmlns=/1999/xhtml head runat=server title无标题页/title script type=text/javascript function StartComActiveX() { My

文档评论(0)

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

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

1亿VIP精品文档

相关文档