1. 程式人生 > >第6章 RFID標籤識別(二)

第6章 RFID標籤識別(二)

c#中編碼與資料型別的轉換 Encoding:位元組編碼類 Convert:基本資料型別轉換成類 BitConverter:位元組陣列轉換

(一)讀寫標籤的使用。  1.ReadTag函式     語法:ReadTag(IntPtr hCom,byte memBank,byte address,byte length,byte[] data,byte readerAddr)     功能說明:讀取標籤內容,通常在主從模式使用。可以讀取EPC的四個區。     返回值:成功時返回true,失敗時返回false。     引數:     hCom:串列埠控制代碼。     memBank:要讀取的區域(保留區0x00;EPC區0x01;TID0x02,使用者區0x03)     address:要讀區域中的地址,範圍0-7。     length:要讀取的長度,1-8     data:接收資料的變數地址。     readerAddr:讀取地址,一臺主機接多臺讀頭時使用,接單臺讀頭時置為0。  2.IdentitySingleTag函式     語法:IdentitySingleTag(IntPtr hCom,byte[] tagld,byte[] antennaNo,byte readerAddr)     功能說明:識別單個標籤,通常在主從模式下使用。只能讀取EPC區的標籤ID號。     返回值:成功時返回true,失敗時返回false。     引數:     hCom:串列埠控制代碼。     tagld:接收標籤ID的陣列地址(輸出引數),長度12。     antennaNo:接收天線號的變數地址(輸出引數)。不需要時置為NULL。     readerAddr:讀頭地址,一臺主機接多臺讀頭時使用,接單臺讀頭時置為0。

                //接收標籤ID的陣列地址(輸出引數),長度為12
                byte[] tagID = new byte[12];
                //接收天線號的變數地址(輸出引數)。不需要時置為NULL。
                byte[] antennaNo = new byte[1];
                if (EPCSDKHelper.IdentifySingleTag(_handle, tagID, antennaNo, 0))
                {
                    //拼接字串
                    this.lstSingleTagInfo.Items.Add(string.Format("當前模式:主從模式;接收標籤ID:{0};接收天線號:{1};", ConvertHelper.ByteArrayToHexString(tagID), ConvertHelper.ByteArrayToHexString(antennaNo)));
                    //設定顯示最後一行
                    this.lstSingleTagInfo.SetSelected(this.lstSingleTagInfo.Items.Count - 1, true);
                }

    寫:   3.WriteTagSingLeWord函式:     語法:WriteTagSingLeWord(intPtr hCom,byte memBank,byte address,byte  data1,byte data2,byte readerAddr)     功能說明:向標籤寫入1個字的內容。     引數:     hCom:串列埠控制代碼。     memBank:要寫的區域。     address:要寫區域中的地址,範圍0-7(memBank為EPC區時,0、1不可取)     data1:要寫入內容的第1個位元組。     data2:要寫入內容的第2個位元組。     readerAddr:讀頭地址,一臺主機接多臺讀頭時使用,接單臺讀頭時置為0。

 4.FastWriteTagID函式:     語法:FastWriteTagID(intPtr hCom,int bytesNum,byte[] bytes,byte  readerAddr)     功能說明:快寫EPC區ID號(標籤號碼)。     引數:     hCom:串列埠控制代碼。     bytesNum:要寫入內容的位元組數,必須為2、4、6、8、10或12。     bytes:要寫入的內容。     readerAddr:讀頭地址,一臺主機接多臺讀頭時使用,接單臺讀頭時置為0。


                //獲取資料
                byte[] bytData = Encoding.Default.GetBytes(txtFastWriteTagIDContent.Text);
                if ((bytData.Length % 2) != 0)
                {
                    MessageBox.Show("請輸入4、8、12、16、20、24位16進位制!", "QQ492384481");
                    return;
                }
                //寫入TID
                if (EPCSDKHelper.FastWriteTagID(_handle, bytData.Length, bytData, 0))
                {
                    MessageBox.Show("快寫成功", "QQ492384481");
                }
                else
                {
                    MessageBox.Show("快寫失敗", "QQ492384481");
                }

 5.FastWriteTag函式:     語法:FastWriteTag(intPtr hCom,byte memBank,byte address,byte  wordCount,byte data,byte readerAddr)     功能說明:快寫標籤。可以寫保留區、EPC區和資料區。     引數:     hCom:串列埠控制代碼。     memBank:要寫的區域。     address:要寫區域中的地址。     wordCount:要寫入內容的長度。     data:要寫入的內容。     readerAddr:讀頭地址,一臺主機接多臺讀頭時使用,接單臺讀頭時置為0。


                byte[] bytContent = Encoding.Default.GetBytes(this.txtPwd.Text);
                //快寫
                if (EPCSDKHelper.FastWriteTag(_handle, 0x00, 2, 2, bytContent, 0))
                    this.lblMsg.Text = "密碼設定成功";
                else
                    this.lblMsg.Text = "密碼設定失敗";