国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C#用Activex實(shí)現(xiàn)Web客戶端讀取RFID功能

開發(fā) 后端
今天我們將要談到的是C#用Activex實(shí)現(xiàn)Web客戶端讀取RFID功能,這也是在實(shí)際生產(chǎn)過程中會(huì)用到的方法。

由于要在Web項(xiàng)目中采用RFID讀取功能,所以有必要開發(fā)Activex,一般情況下開發(fā)Activex都采用VC,VB等,但對(duì)這兩塊不是很熟悉,所以采用C#編寫Activex的方式實(shí)現(xiàn)。

本文方法參考網(wǎng)絡(luò)

1.編寫WindowsFromControls

2.發(fā)布WindowsFormControls為Activex

3.在web中使用該Activex

首先編寫windows控件

如何編寫不再詳述(注意一個(gè)地方,GUID自己用vs工具生成一個(gè),下面會(huì)用到。我的0CBD6597-3953-4B88-8C9F-F58B1B023413)

重要的類:

 

 

 

 

 

  1. using System;   
  2. using System.Runtime.InteropServices;   
  3. namespace RFIDReader   
  4. {   
  5. public class ReadRfid   
  6. {   
  7. [DllImport("MasterRD.dll")]   
  8. private static extern int rf_init_com(int port, int baud);   
  9. [DllImport("MasterRD.dll")]   
  10. private static extern int rf_request(short icdev, byte model, ref short TagType);   
  11. [DllImport("MasterRD.dll")]   
  12. private static extern int rf_write(int icdev, char _Adr, char _Data);   
  13. [DllImport("MasterRD.dll")]   
  14. private static extern int rf_anticoll(short icdev, byte bcnt, ref byte ppsnr, ref byte pRLength);   
  15. [DllImport("MasterRD.dll")]   
  16. private static extern int rf_ClosePort();   
  17. public string CardNum   
  18. {   
  19. get { return getCardNum(); }   
  20. }   
  21. private string getCardNum()   
  22. {   
  23. int post = 4; //調(diào)用COM1口   
  24. int baud = 9600;   
  25. int i = -1;   
  26. byte model = 82;   
  27. byte b1 = 4;   
  28. short TagType = 4;   
  29. byte[] buf1 = new byte[200];   
  30. try   
  31. {   
  32. rf_init_com(post, baud);   
  33. rf_request(0, model, ref TagType);   
  34. rf_anticoll(0, 4, ref buf1[0], ref b1);   
  35. string s1 = "";   
  36. for (i = 0; i < b1; i++)   
  37. {   
  38. s1 = s1 + System.Convert.ToString(long.Parse(buf1[i].ToString()), 16).ToUpper();   
  39. }   
  40. rf_ClosePort();   
  41. if (s1 == "0000")   
  42. throw (new Exception()); }   
  43. return s1;   
  44. }   
  45. catch (Exception)   
  46. {   
  47. }   
  48. return "";   
  49. }   
  50. }   
  51. }  

view sourceprint?

  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Linq;   
  4. using System.Text;   
  5. using System.Runtime.InteropServices;   
  6. namespace RFIDReader   
  7. {   
  8. [ComImport, GuidAttribute("<SPAN style="COLOR: #800000">0CBD6597-3953-4B88-8C9F-F58B1B023413</SPAN>
  9. <SPAN style="COLOR: #800000"> </SPAN>")]   
  10. [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]   
  11. public interface IObjectSafety   
  12. {   
  13. [PreserveSig]   
  14. void GetInterfacceSafyOptions(   
  15. int riid,   
  16. out int pdwSupportedOptions,   
  17. out int pdwEnabledOptions);   
  18. [PreserveSig]   
  19. void SetInterfaceSafetyOptions(   
  20. int riid,   
  21. int dwOptionsSetMask,   
  22. int dwEnabledOptions);   
  23. }   
  24. }   
  25. using System;using System.Collections.Generic;using System.ComponentModel;  
  26. using System.Drawing;  
  27. using System.Data;  
  28. using System.Linq;  
  29. using System.Text;  
  30. using System.Windows.Forms;  
  31. using System.Runtime.InteropServices;  
  32. using CJ;  
  33. namespace RFIDReader{     
  34.  [Guid("0CBD6597-3953-4B88-8C9F-F58B1B023413"), ProgId("RFIDReader.Reader"), ComVisible(true)]      
  35.  public partial class Reader : UserControl,IObjectSafety      
  36. {     
  37.      public Reader()       
  38.    {            
  39.   InitializeComponent();      
  40.      }        
  41.   #region IObjectSafety 成員      
  42. public void GetInterfacceSafyOptions(int riid, out int pdwSupportedOptions, out int pdwEnabledOptions)    
  43.       {     
  44.        pdwSupportedOptions = 1;        
  45.       pdwEnabledOptions = 2;      
  46.     }       
  47.    public void SetInterfaceSafetyOptions(int riid, int dwOptionsSetMask, int dwEnabledOptions)   
  48.      {             
  49.  throw new NotImplementedException();        
  50.   }     
  51.      #endregion       
  52.    private void timer1_Tick(object sender, EventArgs e)        
  53.   {             
  54.  ReadRfid rfid=new ReadRfid();        
  55.       string str = rfid.CardNum;          
  56.     if (str != "")             
  57.  {               
  58.    textBox1.Text = str; GetInfo();         
  59.      }        
  60.   }        
  61.   public int TimerSpan     
  62.      {             
  63.  get { return timer1.Interval; }      
  64.         set { timer1.Interval = value; }        
  65.   }        public string CardNum        
  66.   {       
  67.        get { return textBox1.Text; }      
  68.     }      
  69.     private void GetInfo()       
  70.    {                      
  71.     this.label1.Text = "cccc";    
  72.       }    }}  

為了能夠在所有客戶端ie上顯示控件,要在程序的AssemblyInfo.cs里添加如下語句

 

  1. [assembly: AllowPartiallyTrustedCallers()] 

下一步,右鍵該項(xiàng)目,屬性,生成,將為com互操作注冊(cè),打上勾勾

然后編譯,如果沒有問題,那么測(cè)試下,應(yīng)該可以讀取RFID的ID到文本框了。

2.制作安裝程序

跟普通的制作安裝程序一樣,新建一個(gè)安裝程序,然后刪掉里面的文件夾。

鼠標(biāo)右鍵空白區(qū)域-》添加-》項(xiàng)目輸出--》選擇主輸出

這樣即可生成安裝包了。

到現(xiàn)在其實(shí)已經(jīng)可以用了,但為了方便我們可以進(jìn)一步生成cab包。

下載CABARC.exe。解壓縮,到bin目錄中執(zhí)行如下doc命令

cabarc n 生成的cab名.cab 安裝文件.msi install.inf

install.inf內(nèi)容如下:

  1. [version]   
  2. signature="$CHICAGO$"   
  3. AdvancedINF=2.0  
  4.  
  5. [Setup Hooks]   
  6. hook1hook1=hook1   
  7. [hook1]  
  8. run=msiexec.exe /i "%EXTRACT_DIR%\ReaderInstaller.msi" /qn 

 

修改稱自己的安裝文件即可

3.在web中使用。

新建一個(gè)web項(xiàng)目,在default.aspx中輸入一下代碼即可使用

 

  1. <object id="RFIDReader" classid="clsid:0CBD6597-3953-4B88-8C9F-F58B1B023413"   
  2. codebase="RFID/RFIDREADER.cab"> 
  3. </object> 

這里的clsid就是自己生成的GUID編號(hào)

這里的RFID使用的是MasterRD.dll和CFCom.dll不同產(chǎn)品使用可能不同,同時(shí)注意RFID的COM端口號(hào),本例為測(cè)試?yán)樱詫懰懒薈OM口,客戶端IE瀏覽時(shí),需要將RFID的端口改成對(duì)應(yīng)的。

注意:如果發(fā)布到服務(wù)器上,客戶端ie上無法顯示控件,那么請(qǐng)將訪問地址添加到ie的受信任站點(diǎn),如果不能安裝cab那么只能用戶自己安裝Activex了。

原文鏈接:http://www.cnblogs.com/qidian10/archive/2011/04/06/2006976.html

【編輯推薦】

  1. .NET不用控件實(shí)現(xiàn)文件夾監(jiān)測(cè)系統(tǒng)
  2. 詳解C#中不同類的類型
  3. 淺談C#中標(biāo)準(zhǔn)Dispose模式的實(shí)現(xiàn)
  4. C#圖片處理的3種高級(jí)實(shí)用方法
  5. C# 4.0新特性:協(xié)變與逆變中的編程思想
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2009-08-21 15:36:41

服務(wù)端與客戶端

2009-08-21 15:54:40

服務(wù)端與客戶端

2009-08-06 17:12:13

C# WebServi

2015-05-12 14:16:15

C#ActiveX控件web調(diào)用

2009-08-21 17:53:25

C#網(wǎng)絡(luò)編程客戶端程序

2020-03-19 08:00:00

客戶端KubernetesAPI

2009-08-21 14:33:15

C#異步傳輸字符串

2009-08-21 15:59:22

服務(wù)端與客戶端通信

2009-08-21 16:14:52

服務(wù)端與客戶端通信

2009-02-04 17:39:14

ibmdwWebSphereDataPower

2009-08-21 16:37:54

C#客戶端程序

2009-08-07 13:55:35

Java客戶端類調(diào)用C# WebServi

2009-08-21 17:48:43

C#網(wǎng)絡(luò)編程

2011-08-25 10:37:15

leveldb的訪問封C#客戶端源碼

2024-12-23 06:00:00

TCPC#網(wǎng)絡(luò)

2013-06-08 09:59:15

VMwarevSphere Web

2024-05-06 08:00:00

C#IP地址

2023-11-03 08:15:27

PythonC#

2009-08-12 10:35:50

C#調(diào)用ActiveX

2009-08-06 16:58:40

C#編寫ActiveX
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

尤物精品在线| 国产成人精品一区二| 91色在线看| 亚洲人午夜精品天堂一二香蕉| 好吊色这里只有精品| 狠久久av成人天堂| 成人xvideos免费视频| 特黄特色欧美大片| 亚洲日本在线a| 亚洲熟妇无码另类久久久| 欧洲精品久久久久毛片完整版| 欧美精品久久一区| 黄动漫网站在线观看| 亚洲乱码国产乱码精品精98午夜 | 91国产高清在线| 日本成人免费| 91香蕉视频污| 免费看一级大黄情大片| 国产盗摄精品一区二区三区在线 | 国产一区二区三区自拍| 91久久在线观看| 2023国产精品久久久精品双| 国产欧美亚洲精品| 欧美午夜精彩| 91精品视频免费| 欧美91视频| 国产色综合一区二区三区| 精品极品在线| 欧美mv日韩mv国产网站app| 性欧美videos高清hd4k| 波多野结衣中文字幕一区| 男同互操gay射视频在线看| 国产成人在线网站| 亚洲熟妇av日韩熟妇在线| 日本一区二区三区四区| 成人亚洲一区二区三区| 一区二区三区美女视频| 飘雪影视在线观看免费观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产小视频福利在线| 欧美日韩不卡视频| 136福利第一导航国产在线| 国产亚洲精品一区二区| 久久综合给合| 国产精品综合久久久| 在线观看日韩av电影| 在线一区亚洲| 国产日韩v精品一区二区| 理论片在线观看理伦片| 9191成人精品久久| 精品成人av| 国产精品成人国产乱一区| 亚洲伦理精品| 国产精品无码乱伦| 国产精品视频一二三区| 激情视频在线观看免费| 亚洲欧美中文日韩在线| 天堂99x99es久久精品免费| 国产精品免费一区二区三区在线观看| 老汉av免费一区二区三区 | 最近2019中文免费高清视频观看www99| 亚洲视频国产精品| 91久久在线视频| 久久99国产精品免费| 91插插插插插插插插| 色八戒一区二区三区| 大黄网站在线观看| 欧美另类极品videosbest最新版本| 欧美丝袜一区| 老司机午夜网站| 亚洲精品福利视频网站| 亚洲精品天堂| 国产69久久精品成人看| 久久久精品五月天| 欧美1819sex性处18免费| 91精品蜜臀在线一区尤物| 日韩精品一区二区三区中文字幕| 成人亚洲综合色就1024| 成人app下载| eeuss影院www在线观看| 久久久久久av| 麻豆一区二区99久久久久| videoxxxx另类日本极品| 国产亚洲精品久久久久动| 午夜国产精品视频| 999精品视频在线| 亚洲精品videossex少妇| 91成人国产| 先锋成人影音| 最近免费中文字幕视频2019| 99热精品在线观看| 中文日本高清免费| 欧美成人高清视频| 肉色丝袜一区二区| 一级片在线视频| 欧美激情图片区| 国产精品亚洲一区二区三区妖精 | 91精品一区二区| 99久久精品免费看国产| 国产网站在线免费观看 | 麻豆视频久久| 亚洲电影一二三区| 欧美性xxxx极品hd满灌| 美女一区二区在线观看| www插插插无码视频网站| 日韩欧美电影一二三| 亚洲一区色图| 视频免费观看| 久久久亚洲成人| 成+人+亚洲+综合天堂| 手机在线免费看av| 国产精品免费在线播放| 精品免费在线观看| 国产成人调教视频在线观看| 男人操女人免费| 夜夜嗨av色综合久久久综合网| 视频一区在线播放| 九色视频成人porny| 美腿丝袜一区二区三区| 日韩免费在线观看av| 6080yy午夜一二三区久久| 91精品精品| 天天在线女人的天堂视频| 2019中文字幕在线观看| 国产日韩欧美综合在线| 日韩在线精品强乱中文字幕| 日韩中文字幕在线免费| 亚洲免费视频观看| 国产在线播放一区| 亚洲三级免费看| 婷婷激情图片久久| 动漫美女被爆操久久久| 日韩av电影天堂| 午夜视频成人| 精品免费一区二区三区蜜桃| 日韩欧美在线免费| 欧美私人啪啪vps| eeuss影院www在线观看| 国产一区二区黄色| 日韩一区二区电影在线| 美女mm1313爽爽久久久蜜臀| 深夜成人在线| 欧美乱做爰xxxⅹ久久久| 中文字幕在线亚洲| 国产偷国产偷亚洲高清人白洁| jizz国产精品| 在线免费色视频| 国产在线欧美日韩| 亚洲福利视频二区| www.亚洲在线| 亚洲视频分类| 欧美xxx.com| 日韩精品久久久毛片一区二区| 亚洲剧情一区二区| 久久精品亚洲麻豆av一区二区| 欧美重口另类| 免费看男男www网站入口在线| 国产精品加勒比| 精品粉嫩超白一线天av| 国产另类ts人妖一区二区| 久久免费精品| 在线播放网站| 亚洲视频精品一区| 欧美成人亚洲成人日韩成人| 亚洲精品菠萝久久久久久久| 欧美/亚洲一区| 黄视频网站在线观看| 青青草精品视频在线观看| 国产精品视频一| 欧美v日韩v国产v| 欧美国产禁国产网站cc| 欧美韩国一区| 乱馆动漫1~6集在线观看| 538在线视频观看| 懂色中文一区二区三区在线视频| 亚洲老司机av| 亚洲影视在线播放| 看国产成人h片视频| 涩爱av色老久久精品偷偷鲁| 国产三级在线| 成年人午夜免费视频| 成人黄色在线免费| 亚洲欧美另类中文字幕| 亚洲图片自拍偷拍| 久草精品在线观看| 免费黄色成人| 色屁屁www国产馆在线观看| 亚洲色图久久久| 精品视频高清无人区区二区三区| 国产偷国产偷亚洲清高网站 | 老司机午夜网站| 国产精品免费在线免费| 精品福利二区三区| 亚洲一区二区影院| 韩国三级在线一区| 日韩国产专区| www.av99| 欧美专区一二三| 久久久久久久久久av| 欧美视频你懂的|