第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 = "密碼設定失敗";