亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#用Activex實現Web客戶端讀取RFID功能

2023-05-17 11:41:57
字體:
來源:轉載
供稿:網友

本文介紹了在C#中使用Activex實現Web客戶端讀取RFID功能。

由于要在Web項目中采用RFID讀取功能,所以有必要開發Activex,一般情況下開發Activex都采用VC,VB等,而本文采用C#編寫Activex的方式實現。

本文方法參考網絡

1.編寫WindowsFromControls

2.發布WindowsFormControls為Activex

3.在web中使用該Activex

1、編寫windows控件

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

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

[assembly: AllowPartiallyTrustedCallers()]

下一步,右鍵該項目,屬性,生成,將為com互操作注冊,打上勾勾

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

2.制作安裝程序

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

鼠標右鍵空白區域-》添加-》項目輸出--》選擇主輸出

這樣即可生成安裝包了。

到現在其實已經可以用了,但為了方便我們可以進一步生成cab包。

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

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

install.inf內容如下:

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

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

3.在web中使用。

新建一個web項目,在default.aspx中輸入一下代碼即可使用

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

這里的clsid就是自己生成的GUID編號

這里的RFID使用的是MasterRD.dll和CFCom.dll不同產品使用可能不同,同時注意RFID的COM端口號,本例為測試例子,所以寫死了COM口,客戶端IE瀏覽時,需要將RFID的端口改成對應的。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲在线免费看| 国产欧美最新羞羞视频在线观看| 欧美一区二区三区免费观看| 日韩视频免费大全中文字幕| 91福利视频网| 国产成人精品在线| 欧洲成人午夜免费大片| 高清在线视频日韩欧美| 欧美精品一二区| 亚洲性av网站| 91色中文字幕| 国产自产女人91一区在线观看| 亚洲欧美中文日韩在线v日本| 日韩精品有码在线观看| 久久琪琪电影院| 久久色精品视频| 中文字幕精品网| 色黄久久久久久| 欧美午夜精品久久久久久人妖| 日韩成人网免费视频| 色偷偷噜噜噜亚洲男人的天堂| xx视频.9999.com| 亚洲黄色有码视频| 亚洲欧美日韩中文在线| 九九久久久久99精品| 色777狠狠综合秋免鲁丝| 国产日韩欧美在线看| 色综久久综合桃花网| 日韩av成人在线| 91超碰caoporn97人人| 中文字幕欧美精品日韩中文字幕| 亚洲国产精品久久久久久| 欧美日韩国产综合视频在线观看中文| 欧美在线视频播放| 91久久久久久久久久久久久| 欧美激情视频一区二区三区不卡| 亚州国产精品久久久| 国产精品视频自在线| 成人激情综合网| 久久久97精品| 亚洲国产一区二区三区四区| 国产精品久久久久久久久久尿| 久久久亚洲福利精品午夜| 一区二区欧美在线| 亚洲精品一区中文| 欧美自拍大量在线观看| 亚洲欧美一区二区三区久久| 亚洲国产精品国自产拍av秋霞| 精品美女永久免费视频| 国产精品啪视频| 91久久精品久久国产性色也91| 欧美在线视频在线播放完整版免费观看| 国产欧美一区二区三区在线看| 美女av一区二区三区| 国产午夜精品理论片a级探花| 高清欧美电影在线| 国内偷自视频区视频综合| 欧美精品一区在线播放| 欧美日韩国产成人高清视频| 深夜福利国产精品| 亚洲欧美精品在线| 91精品国产自产在线| 亚洲性夜色噜噜噜7777| 欧美日韩亚洲精品内裤| 亚洲欧洲在线视频| 日韩av在线网址| 69精品小视频| 精品高清美女精品国产区| 亚洲国产精品yw在线观看| 91在线高清免费观看| 91精品国产自产在线观看永久| 国产精品入口免费视| 欧美黑人性生活视频| 91精品国产高清自在线看超| 日本一区二区在线播放| 国产欧美精品日韩精品| 国产精品丝袜久久久久久不卡| 亚洲人成在线观看网站高清| 欧美大片va欧美在线播放| 久久中文精品视频| 国产成人啪精品视频免费网| 国产精品久久久久久久app| 国产亚洲精品久久久久久| 久久中文久久字幕| 欧美黑人国产人伦爽爽爽| 亚洲精品自拍视频| 亚洲免费一在线| 高清欧美一区二区三区| 全球成人中文在线| 91精品国产高清自在线看超| 成人免费视频xnxx.com| www.欧美视频| 国产亚洲精品美女久久久久| 亚洲精品一区中文字幕乱码| 在线观看免费高清视频97| 日韩在线观看免费| 色先锋久久影院av| 国产丝袜一区视频在线观看| 日韩精品中文字幕在线观看| 久久久免费高清电视剧观看| 国产精品777| 欧美有码在线观看视频| 国产精品久久久久久久久久三级| 精品一区二区亚洲| 欧美亚洲国产日韩2020| 欧美美女18p| 国产精品午夜国产小视频| 中文字幕一精品亚洲无线一区| 97国产精品久久| 欧美午夜影院在线视频| 热草久综合在线| 少妇高潮 亚洲精品| 中文字幕在线成人| 亚洲欧洲在线观看| 色七七影院综合| 国产精品美女无圣光视频| 亚洲第一免费播放区| 欧洲美女7788成人免费视频| 91影院在线免费观看视频| 欧美成人精品在线观看| 欧美精品激情在线观看| 中文字幕日韩在线播放| 欧美激情综合色综合啪啪五月| 成人精品久久av网站| 国产精品久久久久久五月尺| 国产成人自拍视频在线观看| 欧美一级在线亚洲天堂| 中文字幕在线视频日韩| 国产一区二区在线免费视频| 日韩av成人在线| 4438全国亚洲精品在线观看视频| 精品久久久久国产| 国产精品入口免费视频一| 国产精品大片wwwwww| 日韩欧美aⅴ综合网站发布| 成人精品视频99在线观看免费| 国产精品久久久久久久久| 视频在线观看99| 一区二区三区黄色| 久久综合亚洲社区| 在线观看精品自拍私拍| 亚洲欧美日韩在线一区| 亚洲一区二区中文字幕| 亚洲一区亚洲二区亚洲三区| 午夜伦理精品一区| 欧美日韩成人在线观看| 欧美激情精品久久久久久黑人| 亚洲视频欧美视频| 色与欲影视天天看综合网| 亚洲免费小视频| 亚洲第一视频网站| 久久久久久国产精品| 久久久精品一区二区| 亚洲男人天堂2019| 91香蕉国产在线观看| 欧美激情视频一区二区三区不卡| 日本成熟性欧美| 国产精品一久久香蕉国产线看观看| 日韩高清人体午夜| 成人激情春色网| 美乳少妇欧美精品| 亚洲欧美中文在线视频| 久久久久久久久爱| 91精品国产91久久|