using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using UHFReaderWinCE;
namespace UHF超高频读写Demo
{
public partial class WriteReadForm : Form
{
public WriteReadForm(List<string> cb)
{
InitializeComponent();
this.cb = cb;
}
private byte readerAddr = 0xff;
private int fCmdRet = 0x30;
List<string> cb = new List<string>();
private void WriteReadForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Escape)
{
this.DialogResult = DialogResult.Cancel;
}
}
private void WriteReadForm_Load(object sender, EventArgs e)
{
this.cbEPC.DataSource = cb;
}
private void button13_Click(object sender, EventArgs e)
{
}
private void button12_Click(object sender, EventArgs e)
{
}
bool stopflag = false;
private void btnRead_Click(object sender, EventArgs e)
{
listboxContent.Items.Clear();
int result = 0x30;
int Len = 0;
byte ENum = 0;
byte Mem = 0;
byte Num = 0;
byte[] WordPtr = new byte[2];
int Errorcode = 0;
byte[] Password = new byte[4];
byte[] Data = new byte[440];
string str;
if (cbEPC.Items.Count == 0)
return;
str = cbEPC.SelectedItem.ToString();
if (str == "")
return;
ENum = Convert.ToByte(str.Length / 4);
byte[] EPC = new byte[ENum];
EPC = HexStringToByteArray(str);
Mem = 3;//写用户区
WordPtr = HexStringToByteArray(txtData.Text);
Password = HexStringToByteArray("00000000");
stopflag = false;
for (int m = 0; m < 512; m++)
{
int wd = m * 8;
Num = 8;
WordPtr[0] = Convert.ToByte(wd >> 8);
WordPtr[1] = Convert.ToByte(wd & 0x00FF);
bool success = false;
for (int k = 0; k < 10; k++)
{
fCmdRet = RWDev.ExtReadData_G2(ref readerAddr, EPC, ENum, Mem, WordPtr, Num, Password,
MaskInfo.MaskMem, MaskInfo.MaskAdr, MaskInfo.MaskLen, MaskInfo.MaskData, Data, ref Errorcode);
if (fCmdRet == 0)
{
byte[] daw = new byte[Num * 2];
Array.Copy(Data, daw, Num * 2);
string temp = "字数:" + Convert.ToString(wd) + "~" + Convert.ToString(wd + 7) + "--" + ByteArrayToHexString(daw);
listboxContent.Items.Add(temp);
listboxContent.SelectedIndex = listboxContent.Items.Count - 1;
success = true;
break;
}
}
if (success == false)
{
string temp = "字数:" + Convert.ToString(wd) + "~" + Convert.ToString(wd + 7) + "--读取失败";
listboxContent.Items.Add(temp);
}
Application.DoEvents();
if (stopflag) break;
}
}
#region 16进制字符串和字节数组相互转化
/// <summary>
/// 16进制字符串转化为字节数组
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
private byte[] HexStringToByteArray(string s)
{
s = s.Replace(" ", "");
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
return buffer;
}
/// <summary>
/// 字节数组转化为16进制字符串
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
private string ByteArrayToHexString(byte[] data)
{
StringBuilder sb = new StringBuilder(data.Length * 3);
foreach (byte b in data)
sb.Append(Convert.ToString(b, 16).PadLeft(2, '0'));
return sb.ToString().ToUpper();
}
#endregion
private void btnWrite_Click(object sender, EventArgs e)
{
listboxContent.Items.Clear();
if (txtData.Text.Length != 16) return;
int result = 0x30;
byte WNum = 0;
byte ENum = 0;
byte Mem = 0;
byte Num = 0;
byte[] WordPtr = new byte[2];
int Errorcode = 0;
byte[] Password = new byte[4];
byte[] Data = new byte[440];
string str, str1;
if (cbEPC.Items.Count == 0)
return;
str = cbEPC.SelectedItem.ToString();
if (str == "")
return;
ENum = Convert.ToByte(str.Length / 4);
byte[] EPC = new byte[ENum * 2];
EPC = HexStringToByteArray(str);
Mem = 3;
WNum = 4;
byte[] writedata = new byte[8];
writedata = HexStringToByteArray(txtData.Text);
Password = HexStringToByteArray("00000000");
stopflag = false;
for (int m = 0; m < 512; m++)
{
int wd = m * 8;
Num = 8;
WordPtr[0] = Convert.ToByte(wd >> 8);
WordPtr[1] = Convert.ToByte(wd & 0x00FF);
bool success = false;
for (int k = 0; k < 10; k++)
{
fCmdRet = RWDev.ExtWriteData_G2(ref readerAddr, EPC, WNum, ENum, Mem, WordPtr, writedata, Password, MaskInfo.MaskMem, MaskInfo.MaskAdr,
MaskInfo.MaskLen, MaskInfo.MaskData, ref Errorcode);
if (fCmdRet == 0)
{
string temp = "字数:" + Convert.ToString(wd) + "~" + Convert.ToString(wd + 7) + "--写入成功";
listboxContent.Items.Add(temp);
success = true;
break;
}
}
if (success == false)
{
string temp = "字数:" + Convert.ToString(wd) + "~" + Convert.ToString(wd + 7) + "--写入失败";
listboxContent.Items.Add(temp);
}
Application.DoEvents();
if (stopflag) break;
}
}
private void button1_Click(object sender, EventArgs e)
{
stopflag = true;
}
}
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using UHFReaderWinCE;
namespace UHF超高频读写Demo
{
public partial class WriteReadForm : Form
{
public WriteReadForm(List<string> cb)
{
InitializeComponent();
this.cb = cb;
}
private byte readerAddr = 0xff;
private int fCmdRet = 0x30;
List<string> cb = new List<string>();
private void WriteReadForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Escape)
{
this.DialogResult = DialogResult.Cancel;
}
}
private void WriteReadForm_Load(object sender, EventArgs e)
{
this.cbEPC.DataSource = cb;
}
private void button13_Click(object sender, EventArgs e)
{
}
private void button12_Click(object sender, EventArgs e)
{
}
bool stopflag = false;
private void btnRead_Click(object sender, EventArgs e)
{
listboxContent.Items.Clear();
int result = 0x30;
int Len = 0;
byte ENum = 0;
byte Mem = 0;
byte Num = 0;
byte[] WordPtr = new byte[2];
int Errorcode = 0;
byte[] Password = new byte[4];
byte[] Data = new byte[440];
string str;
if (cbEPC.Items.Count == 0)
return;
str = cbEPC.SelectedItem.ToString();
if (str == "")
return;
ENum = Convert.ToByte(str.Length / 4);
byte[] EPC = new byte[ENum];
EPC = HexStringToByteArray(str);
Mem = 3;//写用户区
WordPtr = HexStringToByteArray(txtData.Text);
Password = HexStringToByteArray("00000000");
stopflag = false;
for (int m = 0; m < 512; m++)
{
int wd = m * 8;
Num = 8;
WordPtr[0] = Convert.ToByte(wd >> 8);
WordPtr[1] = Convert.ToByte(wd & 0x00FF);
bool success = false;
for (int k = 0; k < 10; k++)
{
fCmdRet = RWDev.ExtReadData_G2(ref readerAddr, EPC, ENum, Mem, WordPtr, Num, Password,
MaskInfo.MaskMem, MaskInfo.MaskAdr, MaskInfo.MaskLen, MaskInfo.MaskData, Data, ref Errorcode);
if (fCmdRet == 0)
{
byte[] daw = new byte[Num * 2];
Array.Copy(Data, daw, Num * 2);
string temp = "字数:" + Convert.ToString(wd) + "~" + Convert.ToString(wd + 7) + "--" + ByteArrayToHexString(daw);
listboxContent.Items.Add(temp);
listboxContent.SelectedIndex = listboxContent.Items.Count - 1;
success = true;
break;
}
}
if (success == false)
{
string temp = "字数:" + Convert.ToString(wd) + "~" + Convert.ToString(wd + 7) + "--读取失败";
listboxContent.Items.Add(temp);
}
Application.DoEvents();
if (stopflag) break;
}
}
#region 16进制字符串和字节数组相互转化
/// <summary>
/// 16进制字符串转化为字节数组
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
private byte[] HexStringToByteArray(string s)
{
s = s.Replace(" ", "");
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
return buffer;
}
/// <summary>
/// 字节数组转化为16进制字符串
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
private string ByteArrayToHexString(byte[] data)
{
StringBuilder sb = new StringBuilder(data.Length * 3);
foreach (byte b in data)
sb.Append(Convert.ToString(b, 16).PadLeft(2, '0'));
return sb.ToString().ToUpper();
}
#endregion
private void btnWrite_Click(object sender, EventArgs e)
{
listboxContent.Items.Clear();
if (txtData.Text.Length != 16) return;
int result = 0x30;
byte WNum = 0;
byte ENum = 0;
byte Mem = 0;
byte Num = 0;
byte[] WordPtr = new byte[2];
int Errorcode = 0;
byte[] Password = new byte[4];
byte[] Data = new byte[440];
string str, str1;
if (cbEPC.Items.Count == 0)
return;
str = cbEPC.SelectedItem.ToString();
if (str == "")
return;
ENum = Convert.ToByte(str.Length / 4);
byte[] EPC = new byte[ENum * 2];
EPC = HexStringToByteArray(str);
Mem = 3;
WNum = 4;
byte[] writedata = new byte[8];
writedata = HexStringToByteArray(txtData.Text);
Password = HexStringToByteArray("00000000");
stopflag = false;
for (int m = 0; m < 512; m++)
{
int wd = m * 8;
Num = 8;
WordPtr[0] = Convert.ToByte(wd >> 8);
WordPtr[1] = Convert.ToByte(wd & 0x00FF);
bool success = false;
for (int k = 0; k < 10; k++)
{
fCmdRet = RWDev.ExtWriteData_G2(ref readerAddr, EPC, WNum, ENum, Mem, WordPtr, writedata, Password, MaskInfo.MaskMem, MaskInfo.MaskAdr,
MaskInfo.MaskLen, MaskInfo.MaskData, ref Errorcode);
if (fCmdRet == 0)
{
string temp = "字数:" + Convert.ToString(wd) + "~" + Convert.ToString(wd + 7) + "--写入成功";
listboxContent.Items.Add(temp);
success = true;
break;
}
}
if (success == false)
{
string temp = "字数:" + Convert.ToString(wd) + "~" + Convert.ToString(wd + 7) + "--写入失败";
listboxContent.Items.Add(temp);
}
Application.DoEvents();
if (stopflag) break;
}
}
private void button1_Click(object sender, EventArgs e)
{
stopflag = true;
}
}
}
奉上源码:仅供参考http://download.youkuaiyun.com/download/dapeng2513/10207048