手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#用Activex实现Web客户端读取RFID功能的代码
C#用Activex实现Web客户端读取RFID功能的代码
摘要:由于要在Web项目中采用RFID读取功能,所以有必要开发Activex,一般情况下开发Activex都采用VC,VB等,但对这两块不是很熟悉...

C#用Activex实现Web客户端读取RFID功能的代码1 由于要在Web项目中采用RFID读取功能,所以有必要开发Activex,一般情况下开发Activex都采用VC,VB等,但对这两块不是很熟悉,所以采用C#编写Activex的方式实现。 本文方法参考网络 1.编写WindowsFromControls 2.发布WindowsFormControls为Activex 3.在web中使用该Activex 首先编写windows控件

C#用Activex实现Web客户端读取RFID功能的代码2 如何编写不再详述(注意一个地方,GUID自己用vs工具生成一个,下面会用到。我的0CBD6597-3953-4B88-8C9F-F58B1B023413) 重要的类:

复制代码 代码如下:

using System;

using System.Runtime.InteropServices;

namespace RFIDReader

{

public class ReadRfid

{

[DllImport("MasterRD.dll")]

private static extern int rf_init_com(int port, int baud);

[DllImport("MasterRD.dll")]

private static extern int rf_request(short icdev, byte model, ref short TagType);

[DllImport("MasterRD.dll")]

private static extern int rf_write(int icdev, char _Adr, char _Data);

[DllImport("MasterRD.dll")]

private static extern int rf_anticoll(short icdev, byte bcnt, ref byte ppsnr, ref byte pRLength);

[DllImport("MasterRD.dll")]

private static extern int rf_ClosePort();

public string CardNum

{

get { return getCardNum(); }

}

private string getCardNum()

{

int post = 4; //调用COM1口

int baud = 9600;

int i = -1;

byte model = 82;

byte b1 = 4;

short TagType = 4;

byte[] buf1 = new byte[200];

try

{

rf_init_com(post, baud);

rf_request(0, model, ref TagType);

rf_anticoll(0, 4, ref buf1[0], ref b1);

string s1 = "";

for (i = 0; i < b1; i++)

{

s1 = s1 + System.Convert.ToString(long.Parse(buf1[i].ToString()), 16).ToUpper();

}

rf_ClosePort();

if (s1 == "0000")

{ throw (new Exception()); }

return s1;

}

catch (Exception)

{

}

return "";

}

}

}

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.InteropServices;

namespace RFIDReader

{

[ComImport, GuidAttribute("<SPAN>0CBD6597-3953-4B88-8C9F-F58B1B023413</SPAN><SPAN> </SPAN>")]

[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]

public interface IObjectSafety

{

[PreserveSig]

void GetInterfacceSafyOptions(

int riid,

out int pdwSupportedOptions,

out int pdwEnabledOptions);

[PreserveSig]

void SetInterfaceSafetyOptions(

int riid,

int dwOptionsSetMask,

int dwEnabledOptions);

}

}

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Drawing;

using System.Data;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Runtime.InteropServices;

using CJ;

namespace RFIDReader

{

[Guid("0CBD6597-3953-4B88-8C9F-F58B1B023413"), ProgId("RFIDReader.Reader"), ComVisible(true)]

public partial class Reader : UserControl, IObjectSafety

{

public Reader()

{

InitializeComponent();

}

#region IObjectSafety成员

public void GetInterfacceSafyOptions(int riid, out int pdwSupportedOptions, out int pdwEnabledOptions)

{

pdwSupportedOptions = 1;

pdwEnabledOptions = 2;

}

public void SetInterfaceSafetyOptions(int riid, int dwOptionsSetMask, int dwEnabledOptions)

{

throw new NotImplementedException();

}

#endregion

private void timer1_Tick(object sender, EventArgs e)

{

ReadRfid rfid = new ReadRfid();

string str = rfid.CardNum;

if (str != "")

{

textBox1.Text = str;

GetInfo();

}

}

public int TimerSpan

{

get

{

return timer1.Interval;

}

set

{

timer1.Interval = value;

}

}

public string CardNum

{

get

{

return textBox1.Text;

}

}

private void GetInfo()

{

this.label1.Text = "cccc";

}

}

}

为了能够在所有客户端ie上显示控件,要在程序的AssemblyInfo.cs里添加如下语句

[assembly: AllowPartiallyTrustedCallers()]

下一步,右键该项目,属性,生成,将为com互操作注册,打上勾勾

C#用Activex实现Web客户端读取RFID功能的代码3 然后编译,如果没有问题,那么测试下,应该可以读取RFID的ID到文本框了。 2.制作安装程序 跟普通的制作安装程序一样,新建一个安装程序,然后删掉里面的文件夹。 鼠标右键空白区域-》添加-》项目输出--》选择主输出

C#用Activex实现Web客户端读取RFID功能的代码4 这样即可生成安装包了。 到现在其实已经可以用了,但为了方便我们可以进一步生成cab包。 下载CABARC.exe。解压缩,到bin目录中执行如下doc命令 cabarc n 生成的cab名.cab 安装文件.msi install.inf install.inf内容如下:

[version]

signature="$CHICAGO$"

AdvancedINF=2.0

[Setup Hooks]

hook1=hook1

[hook1]

run=msiexec.exe /i "%EXTRACT_DIR%ReaderInstaller.msi" /qn

修改称自己的安装文件即可

3.在web中使用。

新建一个web项目,在default.aspx中输入一下代码即可使用

<object id="RFIDReader" classid="clsid:0CBD6597-3953-4B88-8C9F-F58B1B023413"

codebase="RFID/RFIDREADER.cab">

</object>

这里的clsid就是自己生成的GUID编号

这里的RFID使用的是MasterRD.dll和CFCom.dll不同产品使用可能不同,同时注意RFID的COM端口号,本例为测试例子,所以写死了COM口,客户端IE浏览时,需要将RFID的端口改成对应的。

注意:如果发布到服务器上,客户端ie上无法显示控件,那么请将访问地址添加到ie的受信任站点,如果不能安装cab那么只能用户自己安装Activex了。

参考文献 http://www.jb51.net/article/27115.htm

源文件下载地址:http://xiazai.jb51.net/201105/yuanma/RFIDReader.rar

【C#用Activex实现Web客户端读取RFID功能的代码】相关文章:

用C#实现启动另一程序的方法实例

C# 得到某一天的起始和截止时间的代码

C#解析json文件的实现代码

C# 利用StringBuilder提升字符串拼接性能的小例子

C#几种获取网页源文件代码的实例

使用VS2010 C#开发ActiveX控件(下),完整代码打包下载

C#获取计算机名,IP,MAC信息实现代码

C#实现窗体淡入淡出效果的方法总结

C# Linq读取XML文件的实例

C# 撒列实现关键字过滤的实例

精品推荐
分类导航