实例介绍
【实例简介】R2000读写器开发
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Resources;
using System.Reflection;
using System.Net;
using System.Threading;
using System.Diagnostics;
using System.IO;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using UHFReaderModule;
namespace UHFReader288Demo
{
public partial class Form1 : Form
{
[DllImport("User32.dll", EntryPoint = "PostMessage")]
private static extern int PostMessage(
IntPtr hWnd, // handle to destination window
uint Msg, // message
uint wParam, // first message parameter
uint lParam // second message parameter
);
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, string lParam);
[DllImport("User32.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
Reader uhf = new Reader();
public const int USER = 0x0400;
public const int WM_SENDTAG = USER 101;//读取标签
public const int WM_SENDTAGSTAT = USER 102;//刷新时间
public const int WM_SENDSTATU = USER 103;//刷新询查状态
public const int WM_SENDBUFF = USER 104;//缓存查询
public const int WM_SENDBUFFTAG = USER 105;//缓存数据
public const int WM_MIXTAG = USER 106;//混合查询
public const int WM_SHOWNUM = USER 107;
private byte fComAdr = 0xff; //当前操作的ComAdr
private int ferrorcode;
private byte fBaud;
private double fdminfre;
private double fdmaxfre;
private int fCmdRet = 30; //所有执行指令的返回值
private bool fisinventoryscan_6B;
private byte[] fOperEPC = new byte[100];
private byte[] fPassWord = new byte[4];
private byte[] fOperID_6B = new byte[10];
ArrayList list = new ArrayList();
private int CardNum1 =0;
private string fInventory_EPC_List; //存贮询查列表(如果读取的数据没有变化,则不进行刷新)
private int frmcomportindex;
private byte Target = 0;
private byte InAnt = 0;
private byte Scantime = 0;
private byte FastFlag = 0;
private byte Qvalue = 0;
private byte Session = 0;
private int total_tagnum = 0;//标签数量
private int total_time = 0;//总时间
private int targettimes = 0;
private byte TIDFlag = 0;
public static byte antinfo = 0;
private int AA_times = 0;
private int CommunicationTime = 0;
public DeviceClass SelectedDevice;
private static List<DeviceClass> DevList;
private static SearchCallBack searchCallBack = new SearchCallBack(searchCB);
private string ReadTypes="";
private bool SeriaATflag=false;
private bool TagisFind = false;
/// <summary>
/// Device Search的回调函数;
/// </summary>
private static void searchCB(IntPtr dev, IntPtr data)
{
uint ipAddr = 0;
StringBuilder devname = new StringBuilder(100);
StringBuilder macAdd = new StringBuilder(100);
//获取搜索到的设备信息;
DevControl.tagErrorCode eCode = DevControl.DM_GetDeviceInfo(dev, ref ipAddr, macAdd, devname);
if (eCode == DevControl.tagErrorCode.DM_ERR_OK)
{
//将搜索到的设备加入设备列表;
DeviceClass device = new DeviceClass(dev, ipAddr, macAdd.ToString(), devname.ToString());
DevList.Add(device);
}
else
{
//异常处理;
string errMsg = ErrorHandling.GetErrorMsg(eCode);
Log.WriteError(errMsg);
}
}
private static IPAddress getIPAddress(uint interIP)
{
return new IPAddress((uint)IPAddress.HostToNetworkOrder((int)interIP));
}
public Form1()
{
InitializeComponent();
//初始化设备列表;
DevList = new List<DeviceClass>();
//初始化设备控制模块;
DevControl.tagErrorCode eCode = DevControl.DM_Init(searchCallBack, IntPtr.Zero);
if (eCode != DevControl.tagErrorCode.DM_ERR_OK)
{
//如果初始化失败则关闭程序,并进行异常处理;
string errMsg = ErrorHandling.HandleError(eCode);
throw new Exception(errMsg);
}
}
protected override void DefWndProc(ref Message m)
{
if (m.Msg == WM_SENDTAG)
{
string tagInfo = Marshal.PtrToStringAnsi(m.LParam);
int p = tagInfo.IndexOf(',');
tagInfo = tagInfo.Substring(p 1);
string sEPC;
int index = tagInfo.IndexOf(',');
sEPC = tagInfo.Substring(0, index);
index ;
string RSSI = tagInfo.Substring(index);
DataTable dt = dataGridView1.DataSource as DataTable;
if (dt == null)
{
dt = new DataTable();
dt.Columns.Add("Column1", Type.GetType("System.String"));
dt.Columns.Add("Column2", Type.GetType("System.String"));
dt.Columns.Add("Column3", Type.GetType("System.String"));
dt.Columns.Add("Column4", Type.GetType("System.String"));
DataRow dr = dt.NewRow();
dr["Column1"] = (dt.Rows.Count 1).ToString();
dr["Column2"] = sEPC;
dr["Column3"] = "1";
dr["Column4"] = RSSI;
dt.Rows.Add(dr);
lxLedControl1.Text = dt.Rows.Count.ToString();
comboBox_EPC.Items.Add(sEPC);
}
else
{
DataRow[] dr;
dr = dt.Select("Column2='" sEPC "'");
if (dr.Length == 0) // epc号不存在
{
DataRow dr2 = dt.NewRow();
dr2["Column1"] = (dt.Rows.Count 1).ToString();
dr2["Column2"] = sEPC;
dr2["Column3"] = "1";
dr2["Column4"] = RSSI;
dt.Rows.Add(dr2);
lxLedControl1.Text = dt.Rows.Count.ToString();
comboBox_EPC.Items.Add(sEPC);
}
else // epc号已存在
{
int cnt = int.Parse(dr[0]["Column3"].ToString());
cnt ;
dt.Rows[dt.Rows.IndexOf(dr[0])]["Column3"] = cnt.ToString();
}
}
bool flagset = false;
flagset = (dataGridView1.DataSource == null) ? true : false;
dataGridView1.DataSource = dt;
if (flagset)
{
dataGridView1.Columns["Column1"].HeaderText = "No.";
dataGridView1.Columns["Column1"].Width = 80;
dataGridView1.Columns["Column2"].HeaderText = "EPC";
dataGridView1.Columns["Column2"].Width = 380;
dataGridView1.Columns["Column3"].HeaderText = "Times";
dataGridView1.Columns["Column3"].Width = 100;
dataGridView1.Columns["Column4"].HeaderText = "RSSI";
dataGridView1.Columns["Column4"].Width = 100;
}
}
else if (m.Msg == WM_MIXTAG)
{
string tagInfo = Marshal.PtrToStringAnsi(m.LParam);
string sEPC, sData;
int index = tagInfo.IndexOf(',');
sEPC = tagInfo.Substring(0, index);
int n = sEPC.IndexOf("-");
sData = sEPC.Substring(n 1);
sEPC = sEPC.Substring(0, n);
index ;
string RSSI = tagInfo.Substring(index);
DataTable dt = dataGridView1.DataSource as DataTable;
if (dt == null)
{
dt = new DataTable();
dt.Columns.Add("Column1", Type.GetType("System.String"));
dt.Columns.Add("Column2", Type.GetType("System.String"));
dt.Columns.Add("Column3", Type.GetType("System.String"));
dt.Columns.Add("Column4", Type.GetType("System.String"));
dt.Columns.Add("Column5", Type.GetType("System.String"));
DataRow dr = dt.NewRow();
dr["Column1"] = (dt.Rows.Count 1).ToString();
dr["Column2"] = sEPC;
dr["Column3"] = sData;
dr["Column4"] = "1";
dr["Column5"] = RSSI;
dt.Rows.Add(dr);
lxLedControl1.Text = dt.Rows.Count.ToString();
comboBox_EPC.Items.Add(sEPC);
}
else
{
DataRow[] dr;
dr = dt.Select("Column2='" sEPC "'");
if (dr.Length == 0) // epc号不存在
{
DataRow dr2 = dt.NewRow();
dr2["Column1"] = (dt.Rows.Count 1).ToString();
dr2["Column2"] = sEPC;
dr2["Column3"] = sData;
dr2["Column4"] = "1";
dr2["Column5"] = RSSI;
dt.Rows.Add(dr2);
lxLedControl1.Text = dt.Rows.Count.ToString();
comboBox_EPC.Items.Add(sEPC);
}
else // epc号已存在
{
int cnt = int.Parse(dr[0]["Column4"].ToString());
cnt ;
dt.Rows[dt.Rows.IndexOf(dr[0])]["Column4"] = cnt.ToString();
}
}
bool flagset = false;
flagset = (dataGridView1.DataSource == null) ? true : false;
dataGridView1.DataSource = dt;
if (flagset)
{
dataGridView1.Columns["Column1"].HeaderText = "No.";
dataGridView1.Columns["Column1"].Width = 60;
dataGridView1.Columns["Column2"].HeaderText = "EPC";
dataGridView1.Columns["Column2"].Width = 250;
dataGridView1.Columns["Column3"].HeaderText = "Data";
dataGridView1.Columns["Column3"].Width = 190;
dataGridView1.Columns["Column4"].HeaderText = "Times";
dataGridView1.Columns["Column4"].Width = 80;
dataGridView1.Columns["Column5"].HeaderText = "RSSI";
dataGridView1.Columns["Column5"].Width = 80;
}
}
else if (m.Msg == WM_SENDTAGSTAT)
{
string tagInfo = Marshal.PtrToStringAnsi(m.LParam);
int index = tagInfo.IndexOf(',');
string tagRate = tagInfo.Substring(0, index);
index ;
string str = tagInfo.Substring(index);
index = str.IndexOf(',');
string tagNum = str.Substring(0, index);
total_tagnum = total_tagnum Convert.ToInt32(tagNum);
index ;
string cmdTime = str.Substring(index);
lxLedControl2.Text = tagRate;
lxLedControl3.Text = cmdTime;
lxLedControl4.Text = total_tagnum.ToString();
string strLog = "Inventory success ";
WriteLog(lrtxtLog, strLog, 1);
}
else if(m.Msg==WM_SENDSTATU)
{
string tagInfo = Marshal.PtrToStringAnsi(m.LParam);
string Info = tagInfo;
fCmdRet = Convert.ToInt32(Info);
string strLog = "Inventory: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else if (m.Msg == WM_SENDBUFF)
{
string tagInfo = Marshal.PtrToStringAnsi(m.LParam);
int index = tagInfo.IndexOf(',');
string tagNum = tagInfo.Substring(0, index);
index ;
string str = tagInfo.Substring(index);
index = str.IndexOf(',');
string cmdTime = str.Substring(0, index);
index ;
str = str.Substring(index);
index = str.IndexOf(',');
string tagRate = str.Substring(0, index);
index ;
str = str.Substring(index);
string total_tagnum = str;
lxLed_BNum.Text = tagNum;
lxLed_Bcmdsud.Text = tagRate;
lxLed_cmdTime.Text = cmdTime;
lxLed_Btoltag.Text = total_tagnum;
lxLed_Btoltime.Text = (System.Environment.TickCount - total_time).ToString();
WriteLog(lrtxtLog, "Buffer-Inventiry:Operation success", 1);
}
else if (m.Msg == WM_SENDBUFFTAG)
{
string tagInfo = Marshal.PtrToStringAnsi(m.LParam);
string ant = tagInfo.Substring(0, 2);//天线
tagInfo = tagInfo.Substring(2);
string len = tagInfo.Substring(0, 2);//长度
tagInfo = tagInfo.Substring(2);
int epclen = Convert.ToInt32(len,16);
string epc = tagInfo.Substring(0, epclen * 2);//EPC
tagInfo = tagInfo.Substring(epclen * 2);
string RSSI = tagInfo.Substring(0, 2);//RSSI
string scount = tagInfo.Substring(2);//COUNT
DataTable dt = dataGridView3.DataSource as DataTable;
if (dt == null)
{
dt = new DataTable();
dt.Columns.Add("Column1", Type.GetType("System.String"));
dt.Columns.Add("Column2", Type.GetType("System.String"));
dt.Columns.Add("Column3", Type.GetType("System.String"));
dt.Columns.Add("Column4", Type.GetType("System.String"));
dt.Columns.Add("Column5", Type.GetType("System.String"));
dt.Columns.Add("Column6", Type.GetType("System.String"));
DataRow dr = dt.NewRow();
dr["Column1"] = (dt.Rows.Count 1).ToString();
dr["Column2"] = epc;
dr["Column3"] = len;
dr["Column4"] = ant;
dr["Column5"] = RSSI;
dr["Column6"] = scount;
dt.Rows.Add(dr);
lxLed_BNum.Text = dt.Rows.Count.ToString();
}
else
{
DataRow[] dr;
dr = dt.Select("Column2='" epc "'");
DataRow dr2 = dt.NewRow();
dr2["Column1"] = (dt.Rows.Count 1).ToString();
dr2["Column2"] = epc;
dr2["Column3"] = len;
dr2["Column4"] = ant;
dr2["Column5"] = RSSI;
dr2["Column6"] = scount;
dt.Rows.Add(dr2);
lxLed_BNum.Text = dt.Rows.Count.ToString();
}
bool flagset = false;
flagset = (dataGridView3.DataSource == null) ? true : false;
dataGridView3.DataSource = dt;
if (flagset)
{
dataGridView3.Columns["Column1"].HeaderText = "No.";
dataGridView3.Columns["Column1"].Width = 80;
dataGridView3.Columns["Column2"].HeaderText = "EPC";
dataGridView3.Columns["Column2"].Width = 520;
dataGridView3.Columns["Column3"].HeaderText = "Length";
dataGridView3.Columns["Column3"].Width = 100;
dataGridView3.Columns["Column4"].HeaderText = "ANT";
dataGridView3.Columns["Column4"].Width = 150;
dataGridView3.Columns["Column5"].HeaderText = "RSSI";
dataGridView3.Columns["Column5"].Width = 100;
dataGridView3.Columns["Column6"].HeaderText = "Times";
dataGridView3.Columns["Column6"].Width = 150;
}
}
else if (m.Msg == WM_SHOWNUM)
{
lxLedControl5.Text = (System.Environment.TickCount - total_time).ToString();
}
else
base.DefWndProc(ref m);
}
int lastnum = 0;
string epcandtid = "";//标记整合数据
private void ReceiveData(string stemp)
{
try
{
IntPtr ptrWnd = IntPtr.Zero;
ptrWnd = FindWindow(null, "UHFReader288 Demo V1.2");
if (ptrWnd == IntPtr.Zero) // 检查当前统计窗口是否打开
{
return;
}
string value = stemp;
string M_TYPE = value.Substring(0, 1);
value = value.Substring(2);
string para = value;
if (M_TYPE == "1")//标签信息
{
SendMessage(ptrWnd, WM_SENDTAG, IntPtr.Zero, para);
TagisFind = true;
}
if (M_TYPE == "4")//标签信息
{
int gnum = Convert.ToInt32(para.Substring(0, 2), 16);
para = para.Substring(3);
int m = para.IndexOf(",");
string sEPC = para.Substring(0, m);
para = para.Substring(m 1);
string RSSI = para.Substring(0, 2);
RSSI = Convert.ToString(Convert.ToInt32(RSSI,16));
if (gnum < 0x80)//EPC号
{
lastnum = gnum;
epcandtid = sEPC;
}
else//附带数据
{
if (((lastnum & 0x3F) == ((gnum & 0x3F) - 1)) || ((lastnum & 0x3F) == 127 && ((gnum & 0x3F) == 0)))//相邻的滚码
{
epcandtid = epcandtid "-" sEPC;
SendMessage(ptrWnd, WM_MIXTAG, IntPtr.Zero, epcandtid "," RSSI);
TagisFind = true;
}
else
{
epcandtid = "";
}
}
if (epcandtid!="")
{
}
}
else if (M_TYPE == "0")//时间速度信息
{
SendMessage(ptrWnd, WM_SENDTAGSTAT, IntPtr.Zero, para);
if (TagisFind)
{
AA_times = 0;
}
else
{
AA_times ;
}
}
else if (M_TYPE == "2") //询查命令状态
{
SendMessage(ptrWnd, WM_SENDSTATU, IntPtr.Zero, para);
if (TagisFind)
{
AA_times = 0;
}
else
{
AA_times ;
}
}
else if (M_TYPE == "3")//缓存刷新
{
SendMessage(ptrWnd, WM_SENDBUFFTAG, IntPtr.Zero, para);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private delegate void WriteLogUnSafe(CustomControl.LogRichTextBox logRichTxt, string strLog, int nType);
private void WriteLog(CustomControl.LogRichTextBox logRichTxt, string strLog, int nType)
{
if (this.InvokeRequired)
{
WriteLogUnSafe InvokeWriteLog = new WriteLogUnSafe(WriteLog);
this.Invoke(InvokeWriteLog, new object[] { logRichTxt, strLog, nType });
}
else
{
if (lrtxtLog.Lines.Length > 20)
lrtxtLog.Clear();
if ((nType == 0) || (nType == 0x26) || (nType == 0x01) || (nType == 0x02) || (nType == 0xFB))
{
logRichTxt.AppendTextEx(strLog, Color.Indigo);
}
else
{
logRichTxt.AppendTextEx(strLog, Color.Red);
}
logRichTxt.Select(logRichTxt.TextLength, 0);
logRichTxt.ScrollToCaret();
}
}
/// <summary>
/// 16进制数组字符串转换
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
#region
public static 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;
}
public static 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
/// <summary>
/// 错误代码
/// </summary>
/// <param name="cmdRet"></param>
/// <returns></returns>
#region
private string GetReturnCodeDesc(int cmdRet)
{
switch (cmdRet)
{
case 0x00:
case 0x26:
return "successfully";
case 0x01:
return "Return before Inventory finished";
case 0x02:
return "the Inventory-scan-time overflow";
case 0x03:
return "More Data";
case 0x04:
return "Reader module MCU is Full";
case 0x05:
return "Access Password Error";
case 0x09:
return "Destroy Password Error";
case 0x0a:
return "Destroy Password Error Cannot be Zero";
case 0x0b:
return "Tag Not Support the command";
case 0x0c:
return "Use the commmand,Access Password Cannot be Zero";
case 0x0d:
return "Tag is protected,cannot set it again";
case 0x0e:
return "Tag is unprotected,no need to reset it";
case 0x10:
return "There is some locked bytes,write fail";
case 0x11:
return "can not lock it";
case 0x12:
return "is locked,cannot lock it again";
case 0x13:
return "Parameter Save Fail,Can Use Before Power";
case 0x14:
return "Cannot adjust";
case 0x15:
return "Return before Inventory finished";
case 0x16:
return "Inventory-Scan-Time overflow";
case 0x17:
return "More Data";
case 0x18:
return "Reader module MCU is full";
case 0x19:
return "'Not Support Command Or AccessPassword Cannot be Zero";
case 0x1A:
return "Tag custom function error";
case 0xF8:
return "Check antenna error";
case 0xF9:
return "Command execute error";
case 0xFA:
return "Get Tag,Poor Communication,Inoperable";
case 0xFB:
return "No Tag Operable";
case 0xFC:
return "Tag Return ErrorCode";
case 0xFD:
return "Command length wrong";
case 0xFE:
return "Illegal command";
case 0xFF:
return "Parameter Error";
case 0x30:
return "Communication error";
case 0x31:
return "CRC checksummat error";
case 0x32:
return "Return data length error";
case 0x33:
return "Communication busy";
case 0x34:
return "Busy,command is being executed";
case 0x35:
return "ComPort Opened";
case 0x36:
return "ComPort Closed";
case 0x37:
return "Invalid Handle";
case 0x38:
return "Invalid Port";
case 0xEE:
return "Return Command Error";
default:
return "";
}
}
private string GetErrorCodeDesc(int cmdRet)
{
switch (cmdRet)
{
case 0x00:
return "Other error";
case 0x03:
return "Memory out or pc not support";
case 0x04:
return "Memory Locked and unwritable";
case 0x0b:
return "No Power,memory write operation cannot be executed";
case 0x0f:
return "Not Special Error,tag not support special errorcode";
default:
return "";
}
}
#endregion
private void DisabledForm()
{
////应答模式下
lxLedControl1.Text = "0";
lxLedControl2.Text = "0";
lxLedControl3.Text = "0";
lxLedControl4.Text = "0";
lxLedControl5.Text = "0";
dataGridView1.DataSource = null;
dataGridView2.Rows.Clear();
comboBox_EPC.Items.Clear();
text_RDVersion.Text = "";
text_MDVersion.Text = "";
text_Serial.Text = "";
timer_answer.Enabled = false;
btIventoryG2.Text = "Start";
panel1.Enabled = false;
panel2.Enabled = false;
panel3.Enabled = false;
panel4.Enabled = false;
panel5.Enabled = false;
panel6.Enabled = false;
panel8.Enabled =false;
panel9.Enabled = false;
panel10.Enabled = false;
gpb_address.Enabled = false;
gpb_antconfig.Enabled = false;
gpb_baud.Enabled = false;
gpb_GPIO.Enabled = false;
gpb_beep.Enabled = false;
gpb_MDVersion.Enabled = false;
gpb_RDVersion.Enabled = false;
gpb_checkant.Enabled = false;
gpb_DBM.Enabled = false;
gpb_clock.Enabled = false;
gpb_Serial.Enabled = false;
gpb_Relay.Enabled = false;
gpb_OutputRep.Enabled = false;
gpb_Freq.Enabled = false;
gbp_buff.Enabled =false;
btDefault.Enabled = false;
btGetInformation.Enabled = false;
btFlashROM.Enabled = false;
group_maxtime.Enabled = false;
gbp_wpower.Enabled = false;
gbp_Retry.Enabled = false;
}
private void EnabledForm()
{
panel1.Enabled = true;
panel2.Enabled = true;
panel3.Enabled = true;
panel4.Enabled = true;
panel5.Enabled = true;
panel6.Enabled = true;
panel8.Enabled =true;
panel9.Enabled = true;
panel10.Enabled = true;
gpb_address.Enabled = true;
gpb_antconfig.Enabled = true;
gpb_baud.Enabled = true;
gpb_GPIO.Enabled = true;
gpb_beep.Enabled = true;
gpb_MDVersion.Enabled = true;
gpb_RDVersion.Enabled = true;
gpb_checkant.Enabled = true;
gpb_DBM.Enabled = true;
gpb_clock.Enabled = true;
gpb_Serial.Enabled = true;
gpb_Relay.Enabled = true;
gpb_OutputRep.Enabled = true;
gpb_Freq.Enabled = true;
gbp_buff.Enabled =true;
btDefault.Enabled = true;
btGetInformation.Enabled = true;
btFlashROM.Enabled = true;
group_maxtime.Enabled = true;
gbp_wpower.Enabled = true;
gbp_Retry.Enabled = true;
}
private void rb_rs232_CheckedChanged(object sender, EventArgs e)
{
if (rb_rs232.Checked)
{
if (frmcomportindex > 1024)
btDisConnectTcp_Click(null,null);
gpb_rs232.Enabled = true;
btDisConnect232.Enabled = false;
//设置按钮字体颜色
btConnect232.ForeColor = Color.Indigo;
SetButtonBold(btConnect232);
if (btConnectTcp.Font.Bold)
{
SetButtonBold(btConnectTcp);
}
gpb_tcp.Enabled = false;
}
}
private void rb_tcp_CheckedChanged(object sender, EventArgs e)
{
if (rb_tcp.Checked)
{
if ((frmcomportindex > 0) && (frmcomportindex<256))
btDisConnect232_Click(null, null);
gpb_tcp.Enabled = true;
btDisConnectTcp.Enabled = false;
//设置按钮字体颜色
btConnectTcp.ForeColor = Color.Indigo;
if (btConnect232.Font.Bold)
{
SetButtonBold(btConnect232);
}
SetButtonBold(btConnectTcp);
gpb_rs232.Enabled = false;
}
}
private void SetButtonBold(Button btnBold)
{
Font oldFont = btnBold.Font;
Font newFont = new Font(oldFont, oldFont.Style ^ FontStyle.Bold);
btnBold.Font = newFont;
}
private void SetRadioButtonBold(CheckBox ckBold)
{
Font oldFont = ckBold.Font;
Font newFont = new Font(oldFont, oldFont.Style ^ FontStyle.Bold);
ckBold.Font = newFont;
}
private void Form1_Load(object sender, EventArgs e)
{
gpb_rs232.Enabled = false;
gpb_tcp.Enabled = false;
rb_rs232.Checked = true;
ComboBox_COM.SelectedIndex = 0;
ComboBox_baud2.SelectedIndex = 3;
com_Q.SelectedIndex = 4;
com_Target.SelectedIndex = 0;
int i = 0;
for (i = 0x03; i <= 0xff; i )
{
com_scantime.Items.Add(Convert.ToString(i) "*100ms");
comboBox_maxtime.Items.Add(Convert.ToString(i) "*100ms");
}
com_scantime.SelectedIndex = 17;
comboBox_maxtime.SelectedIndex = 17;
com_S.SelectedIndex = 4;
DisabledForm();
radioButton_band2.Checked = true;
ComboBox_baud.SelectedIndex = 3;
ComboBox_PowerDbm.SelectedIndex = 30;
com_acQ.SelectedIndex = 6;
com_acS.SelectedIndex = 0;
ComboBox_Accuracy.SelectedIndex = 8;
comboBox_intervalT.SelectedIndex = 0;
for (i = 0; i < 256; i )
{
comboBox_trigger.Items.Add(Convert.ToString(i));
comboBox_RespTime.Items.Add(Convert.ToString(i));
com_MFliterTime.Items.Add(i.ToString() "*1s");
}
com_MFliterTime.SelectedIndex = 0;
comboBox_trigger.SelectedIndex = 0;
comboBox_Resp.SelectedIndex = 1;
comboBox_RespTime.SelectedIndex = 0;
comboBox_mode.SelectedIndex = 0;
for (i = 1; i < 256; i )
{
ComboBox_RelayTime.Items.Add(Convert.ToString(i));
}
ComboBox_RelayTime.SelectedIndex = 0;
uhf.ReceiveCallback = ReceiveData;
COM_MRPTime.SelectedIndex = 0;
com_MQ.SelectedIndex = 4;
com_MS.SelectedIndex = 4;
com_Mmode.SelectedIndex = 0;
com_wpower.SelectedIndex = 30;
com_retrytimes.SelectedIndex = 3;
com_MixMem.SelectedIndex = 2;
}
private void btConnect232_Click(object sender, EventArgs e)
{
int Port = ComboBox_COM.SelectedIndex 1;
fComAdr = 255;
byte Baud = (byte)ComboBox_baud2.SelectedIndex;
try
{
int fCmdRet = uhf.OpenByCom(Port, ref fComAdr, Baud);
if (fCmdRet == 0)
{
panel1.Enabled = true;
btConnect232.Enabled = false;
btDisConnect232.Enabled = true;
string strLog = "Connect: " ComboBox_COM.Text "@" ComboBox_baud2.Text;
WriteLog(lrtxtLog, strLog, 0);
}
else
{
string strLog = "Connect reader failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
return;
}
}
catch (System.Exception ex)
{
ex.ToString();
string strLog = "Connect reader failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
//处理界面元素是否有效
EnabledForm();
btConnect232.Enabled = false;
btDisConnect232.Enabled = true;
//设置按钮字体颜色
btConnect232.ForeColor = Color.Black;
btDisConnect232.ForeColor = Color.Indigo;
SetButtonBold(btConnect232);
SetButtonBold(btDisConnect232);
btGetInformation_Click(null,null);//获取读写器信息
}
private void btDisConnect232_Click(object sender, EventArgs e)
{
fCmdRet = uhf.CloseByCom();
if (fCmdRet == 0) frmcomportindex = -1;
DisabledForm();
btConnect232.Enabled = true;
btDisConnect232.Enabled = false;
btConnect232.ForeColor = Color.Indigo;
btDisConnect232.ForeColor = Color.Black;
SetButtonBold(btConnect232);
SetButtonBold(btDisConnect232);
}
private void btDisConnectTcp_Click(object sender, EventArgs e)
{
fCmdRet = uhf.CloseByTcp();
btConnectTcp.Enabled = true;
btDisConnectTcp.Enabled = false;
DisabledForm();
btConnectTcp.ForeColor = Color.Indigo;
btDisConnectTcp.ForeColor = Color.Black;
SetButtonBold(btConnectTcp);
SetButtonBold(btDisConnectTcp);
}
private void btConnectTcp_Click(object sender, EventArgs e)
{
try
{
string strException = string.Empty;
string ipAddress = ipServerIP.IpAddressStr;
int nPort = Convert.ToInt32(tb_Port.Text);
fComAdr = 255;
fCmdRet = uhf.OpenByTcp(ipAddress, nPort, ref fComAdr);
if (fCmdRet != 0)
{
string strLog = "Connect reader failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
return;
}
else
{
string strLog = "Connect: " ipAddress "@" nPort.ToString();
WriteLog(lrtxtLog, strLog, 0);
}
EnabledForm();
btConnectTcp.Enabled = false;
btDisConnectTcp.Enabled = true;
//设置按钮字体颜色
btConnectTcp.ForeColor = Color.Black;
btDisConnectTcp.ForeColor = Color.Indigo;
SetButtonBold(btConnectTcp);
SetButtonBold(btDisConnectTcp);
btGetInformation_Click(null, null);//获取读写器信息
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btFlashCl_Click(object sender, EventArgs e)
{
////应答模式下刷屏
if (tabControl2.SelectedTab == tabPage_answer)
{
lxLedControl1.Text = "0";
lxLedControl2.Text = "0";
lxLedControl3.Text = "0";
lxLedControl4.Text = "0";
lxLedControl5.Text = "0";
dataGridView1.DataSource = null;
}
////主动模式下刷屏
if (tabControl2.SelectedTab == tabPage_active)
{
lxLed_Num.Text = "0";
lxLed_cmdsud.Text = "0";
lxLed_toltag.Text = "0";
lxLed_toltime.Text = "0";
dataGridView2.Rows.Clear();
}
////缓存模式下刷屏
if (tabControl2.SelectedTab == tabPage_Buff)
{
lxLed_BNum.Text = "0";
lxLed_Bcmdsud.Text = "0";
lxLed_Btoltag.Text = "0";
lxLed_Btoltime.Text = "0";
lxLed_cmdTime.Text = "0";
dataGridView3.DataSource =null;
}
////实时查询刷屏
if (tabControl2.SelectedTab == tabPage_Realtime)
{
lxLed_Mtag.Text = "0";
lxLed_Mtime.Text = "0";
total_time = System.Environment.TickCount;
dataGridView4.Rows.Clear();
}
////6B标签刷屏
if (Maintab.SelectedTab == Main_Page3)
{
text_R6B.Text = "";
text_6BUID.Text = "";
text_Statu6B.Text = "";
}
if (tabControl3.SelectedTab == tabPage8)//TCP 服务器
{
stcprecv.Clear();
}
if (tabControl3.SelectedTab == tabPage9)//TCP 客户端
{
ctctrecv.Clear();
ctctsend.Text = "";
}
total_tagnum = 0;
total_time = System.Environment.TickCount;
//comboBox_EPC.Items.Clear();
lrtxtLog.Clear();
}
private static void GCCollect()
{
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
public static void ReduceMemory()
{
GCCollect();
System.Diagnostics.Process.GetCurrentProcess().MinWorkingSet = new System.IntPtr(5);
}
byte[] antlist = new byte[4];
private volatile bool fIsInventoryScan = false;
private volatile bool toStopThread = false;
private Thread mythread = null;
byte[] ReadAdr = new byte[2];
byte[] Psd = new byte[4];
byte ReadLen = 0;
byte ReadMem = 0;
private void btIventoryG2_Click(object sender, EventArgs e)
{
if ((text_readadr.Text.Length != 4) || (text_readLen.Text.Length != 2) || (text_readpsd.Text.Length != 8))
{
MessageBox.Show("Mix query parameter error!!!");
return;
}
if (btIventoryG2.Text == "Start")
{
if (rb_mix.Checked)
{
ReadMem = (byte)com_MixMem.SelectedIndex;
ReadAdr = HexStringToByteArray(text_readadr.Text);
ReadLen = Convert.ToByte(text_readLen.Text, 16);
Psd = HexStringToByteArray(text_readpsd.Text);
}
lxLedControl1.Text = "0";
lxLedControl2.Text = "0";
lxLedControl3.Text = "0";
lxLedControl4.Text = "0";
lxLedControl5.Text = "0";
dataGridView1.DataSource = null;
lrtxtLog.Clear();
comboBox_EPC.Items.Clear();
text_epc.Text = "";
AA_times = 0;
Scantime = Convert.ToByte(com_scantime.SelectedIndex 3);
if (checkBox_rate.Checked)
Qvalue = Convert.ToByte(com_Q.SelectedIndex | 0x80);
else
Qvalue = Convert.ToByte(com_Q.SelectedIndex);
Session = Convert.ToByte(com_S.SelectedIndex);
if (Session == 4)
Session = 255;
if (rb_epc.Checked)
TIDFlag = 0;
else
TIDFlag = 1;
total_tagnum = 0;
targettimes = Convert.ToInt32(text_target.Text);
total_time = System.Environment.TickCount;
fIsInventoryScan = false;
btIventoryG2.BackColor = Color.Indigo;
btIventoryG2.Text = "Stop";
Array.Clear(antlist, 0, 4);
if (check_ant1.Checked)
{
antlist[0] = 1;
InAnt = 0x80;
}
if (check_ant2.Checked)
{
antlist[1] = 1;
InAnt = 0x81;
}
if (check_ant3.Checked)
{
antlist[2] = 1;
InAnt = 0x82;
}
if (check_ant4.Checked)
{
antlist[3] = 1;
InAnt = 0x83;
}
Target = (byte)com_Target.SelectedIndex;
toStopThread = false;
if (fIsInventoryScan == false)
{
mythread = new Thread(new ThreadStart(inventory));
mythread.Start();
timer_answer.Enabled = true;
}
rb_mix.Enabled = false;
rb_epc.Enabled = false;
rb_tid.Enabled = false;
}
else
{
btIventoryG2.BackColor = Color.Transparent;
btIventoryG2.Text = "Start";
if (fIsInventoryScan)
{
toStopThread = true;//标志,接收数据线程判断stop为true,正常情况下会自动退出线程
if (mythread.Join(1000))
{
try
{
mythread.Abort();//若线程无法退出,强制结束
}
catch (Exception exp)
{
timer_answer.Enabled = false;
MessageBox.Show(exp.Message, "Thread error");
}
}
fIsInventoryScan = false;
}
timer_answer.Enabled = false;
rb_mix.Enabled = true;
rb_epc.Enabled = true;
rb_tid.Enabled = true;
}
}
private void flash_G2()
{
byte[] EPC = new byte[50000];
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
byte MaskFlag = 0;
byte AdrTID = 0;
byte LenTID = 0;
AdrTID = 0;
LenTID = 6;
MaskFlag = 0;
int cbtime = System.Environment.TickCount;
TagisFind = false;
fCmdRet = uhf.Inventory_G2(ref fComAdr, Qvalue, Session, MaskMem, MaskAdr, MaskLen, MaskData, MaskFlag, AdrTID, LenTID, TIDFlag, Target, InAnt, Scantime, FastFlag);
}
private void flashmix_G2()
{
byte[] EPC = new byte[50000];
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
byte MaskFlag = 0;
byte AdrTID = 0;
byte LenTID = 0;
AdrTID = 0;
LenTID = 6;
MaskFlag = 0;
int cbtime = System.Environment.TickCount;
TagisFind = false;
fCmdRet = uhf.InventoryMix_G2(ref fComAdr, Qvalue, Session, MaskMem, MaskAdr, MaskLen, MaskData, MaskFlag, ReadMem, ReadAdr, ReadLen, Psd, Target, InAnt, Scantime, FastFlag);
}
private void inventory()
{
fIsInventoryScan = true;
while (!toStopThread)
{
if(Session==255)
{
FastFlag = 0;
if (rb_mix.Checked)
{
flashmix_G2();
}
else
{
flash_G2();
}
}
else
{
for (int m = 0; m < 4; m )
{
switch (m)
{
case 0:
InAnt = 0x80;
break;
case 1:
InAnt = 0x81;
break;
case 2:
InAnt = 0x82;
break;
case 3:
InAnt = 0x83;
break;
}
FastFlag = 1;
if (antlist[m] == 1)
{
if ((Session == 2) || (Session==3))
{
if ((check_num.Checked) && (AA_times 1 > targettimes))
{
Target = Convert.ToByte(1 - Target); //如果连续2次未读到卡片,A/B状态切换。
}
else if (!check_num.Checked)
{
Target = (byte)com_Target.SelectedIndex;
}
}
if (rb_mix.Checked)
{
flashmix_G2();
}
else
{
flash_G2();
}
}
}
}
}
fIsInventoryScan = false;
}
private void timer_answer_Tick(object sender, EventArgs e)
{
IntPtr ptrWnd = IntPtr.Zero;
ptrWnd = FindWindow(null, "UHFReader288 Demo V1.2");
if (ptrWnd != IntPtr.Zero) // 检查当前统计窗口是否打开
{
string para = fCmdRet.ToString();
SendMessage(ptrWnd, WM_SHOWNUM, IntPtr.Zero, para);
}
ptrWnd = IntPtr.Zero;
}
private void radioButton_band1_CheckedChanged(object sender, EventArgs e)
{
int i;
ComboBox_dmaxfre.Items.Clear();
ComboBox_dminfre.Items.Clear();
for (i = 0; i < 20; i )
{
ComboBox_dminfre.Items.Add(Convert.ToString(920.125 i * 0.25) " MHz");
ComboBox_dmaxfre.Items.Add(Convert.ToString(920.125 i * 0.25) " MHz");
}
ComboBox_dmaxfre.SelectedIndex = 19;
ComboBox_dminfre.SelectedIndex = 0;
}
private void radioButton_band2_CheckedChanged(object sender, EventArgs e)
{
int i;
ComboBox_dmaxfre.Items.Clear();
ComboBox_dminfre.Items.Clear();
for (i = 0; i < 50; i )
{
ComboBox_dminfre.Items.Add(Convert.ToString(902.75 i * 0.5) " MHz");
ComboBox_dmaxfre.Items.Add(Convert.ToString(902.75 i * 0.5) " MHz");
}
ComboBox_dmaxfre.SelectedIndex = 49;
ComboBox_dminfre.SelectedIndex = 0;
}
private void radioButton_band3_CheckedChanged(object sender, EventArgs e)
{
int i;
ComboBox_dmaxfre.Items.Clear();
ComboBox_dminfre.Items.Clear();
for (i = 0; i < 32; i )
{
ComboBox_dminfre.Items.Add(Convert.ToString(917.1 i * 0.2) " MHz");
ComboBox_dmaxfre.Items.Add(Convert.ToString(917.1 i * 0.2) " MHz");
}
ComboBox_dmaxfre.SelectedIndex = 31;
ComboBox_dminfre.SelectedIndex = 0;
}
private void radioButton_band4_CheckedChanged(object sender, EventArgs e)
{
int i;
ComboBox_dminfre.Items.Clear();
ComboBox_dmaxfre.Items.Clear();
for (i = 0; i < 15; i )
{
ComboBox_dminfre.Items.Add(Convert.ToString(865.1 i * 0.2) " MHz");
ComboBox_dmaxfre.Items.Add(Convert.ToString(865.1 i * 0.2) " MHz");
}
ComboBox_dmaxfre.SelectedIndex = 14;
ComboBox_dminfre.SelectedIndex = 0;
}
private void CheckBox_SameFre_CheckedChanged(object sender, EventArgs e)
{
if (CheckBox_SameFre.Checked)
ComboBox_dmaxfre.SelectedIndex = ComboBox_dminfre.SelectedIndex;
}
private void btworkmode_Click(object sender, EventArgs e)
{
byte Read_mode = 0;
Read_mode = Convert.ToByte(comboBox_mode.SelectedIndex);
fCmdRet = uhf.SetWorkMode(ref fComAdr, Read_mode);
if (fCmdRet != 0)
{
string strLog = "Set Work Mode failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set Work Mode success: " comboBox_mode.Text;
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btResponse_Click(object sender, EventArgs e)
{
byte RepCondition = 0;
byte RepPauseTime = 0;
RepCondition = Convert.ToByte(comboBox_Resp.SelectedIndex);
RepPauseTime = Convert.ToByte(comboBox_RespTime.SelectedIndex);
fCmdRet = uhf.SetResponsePamametersofAuto_runningMode(ref fComAdr, RepCondition, RepPauseTime);
if (fCmdRet != 0)
{
string strLog = "Set Response Pamameter failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set Response Pamameter success: " comboBox_Resp.Text;
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btGetWorkmodepara_Click(object sender, EventArgs e)
{
byte Read_mode = 0;
byte Accuracy = 0;
byte RepCondition = 0;
byte RepPauseTime = 0;
byte ReadPauseTim = 0;
byte TagProtocol = 0;
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte[] MaskData = new byte[100];
byte MaskLen = 0;
byte TriggerTime = 0;
byte AdrTID = 0;
byte LenTID = 0;
int i, m_byte;
string temp;
temp = "";
text_madds.Text = "";
text_mlen.Text = "";
text_mdata.Text = "";
text_tidaddr.Text = "";
text_tidlen.Text = "";
fCmdRet = uhf.GetSystemParameter(ref fComAdr, ref Read_mode, ref Accuracy, ref RepCondition, ref RepPauseTime, ref ReadPauseTim, ref TagProtocol, ref MaskMem, MaskAdr, ref MaskLen, MaskData, ref TriggerTime, ref AdrTID, ref LenTID);
if (fCmdRet != 0)
{
string strLog = "Get System Parameter failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
comboBox_mode.SelectedIndex = Convert.ToInt32(Read_mode);
if ((Accuracy & 0x80) == 0x80)
rbEASAcc.Checked = true;
else
rbNone.Checked = true;
ComboBox_Accuracy.SelectedIndex = Convert.ToInt32(Accuracy & 0x3F);
comboBox_Resp.SelectedIndex = RepCondition;
comboBox_RespTime.SelectedIndex = RepPauseTime;
if (comboBox_Resp.SelectedIndex == 1)
comboBox_RespTime.Enabled = true;
else
comboBox_RespTime.Enabled = false;
comboBox_intervalT.SelectedIndex = Convert.ToInt32(ReadPauseTim);
switch (TagProtocol)
{
case 0:
rb_180006c.Checked = true;
rb_G2.Checked = true;
break;
case 2:
rb_180006c.Checked = true;
rb_EAS.Checked = true;
break;
case 0x10:
rb_180006c.Checked = true;
rb_G2TID.Checked = true;
break;
case 0x80:
rb_180006B.Checked = true;
break;
}
switch (MaskMem)
{
case 1:
rb_MaskEPC.Checked = true;
break;
case 2:
rb_MaskTID.Checked = true;
break;
case 3:
rb_MaskUser.Checked = true;
break;
}
for (i = 0; i < 2; i )
temp = temp Convert.ToString(MaskAdr[i], 16).PadLeft(2, '0');
text_madds.Text = temp;
text_mlen.Text = Convert.ToString(MaskLen, 16).PadLeft(2, '0');
temp = "";
if ((MaskLen % 8) == 0)
m_byte = MaskLen / 8;
else
m_byte = MaskLen / 8 1;
for (i = 0; i < m_byte; i )
temp = temp Convert.ToString(MaskData[i], 16).PadLeft(2, '0');
text_mdata.Text = temp;
comboBox_trigger.SelectedIndex = TriggerTime;
text_tidaddr.Text = Convert.ToString(AdrTID, 16).PadLeft(2, '0');
text_tidlen.Text = Convert.ToString(LenTID, 16).PadLeft(2, '0');
string strLog = "Get System Parameter success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void comboBox_Resp_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox_Resp.SelectedIndex == 1)
comboBox_RespTime.Enabled = true;
else
comboBox_RespTime.Enabled = false;
}
private void btGetActivedata_Click(object sender, EventArgs e)
{
}
private bool CheckCRC(string s)
{
int i, j;
int current_crc_value;
byte crcL, crcH;
byte[] data = HexStringToByteArray(s);
current_crc_value = 0xFFFF;
for (i = 0; i <= (data.Length - 1); i )
{
current_crc_value = current_crc_value ^ (data[i]);
for (j = 0; j < 8; j )
{
if ((current_crc_value & 0x01) != 0)
current_crc_value = (current_crc_value >> 1) ^ 0x8408;
else
current_crc_value = (current_crc_value >> 1);
}
}
crcL = Convert.ToByte(current_crc_value & 0xFF);
crcH = Convert.ToByte((current_crc_value >> 8) & 0xFF);
if (crcH == 0 && crcL==0)
{
return true;
}
else
{
return false;
}
}
private void GetData()
{
byte[] ScanModeData = new byte[40960];
int nLen, NumLen;
string temp1 = "";
string syear = "";
string smonth = "";
string sday = "";
string shour = "";
string smin = "";
string ssec = "";
string Lyear = "";
string Lmonth = "";
string Lday = "";
string Lhour = "";
string Lmin = "";
string Lsec = "";
string binarystr1 = "";
string binarystr2 = "";
string CountStr = "";
string AntStr = "";
string EPCStr = "";
int ValidDatalength;
string temp;
ValidDatalength = 0;
DataGridViewRow rows = new DataGridViewRow();
int xtime = System.Environment.TickCount;
fCmdRet = uhf.ReadActiveModeData(ScanModeData, ref ValidDatalength);
if (fCmdRet == 0)
{
try
{
byte[] daw = new byte[ValidDatalength];
Array.Copy(ScanModeData, 0, daw, 0, ValidDatalength);
temp = ByteArrayToHexString(daw);
fInventory_EPC_List = fInventory_EPC_List temp;//把字符串存进列表
nLen = fInventory_EPC_List.Length;
while (fInventory_EPC_List.Length > 34)
{
string FlagStr = Convert.ToString(fComAdr, 16).PadLeft(2, '0') "EE00";//查找头位置标志字符串
int nindex = fInventory_EPC_List.IndexOf(FlagStr);
if (nindex > 1)
fInventory_EPC_List = fInventory_EPC_List.Substring(nindex - 2);
else
{
fInventory_EPC_List = fInventory_EPC_List.Substring(2);
continue;
}
NumLen = Convert.ToInt32(fInventory_EPC_List.Substring(0, 2), 16) * 2 2;//取第一个帧的长度
if (fInventory_EPC_List.Length < NumLen)
{
break;
}
temp1 = fInventory_EPC_List.Substring(0, NumLen);
fInventory_EPC_List = fInventory_EPC_List.Substring(NumLen);
if (!CheckCRC(temp1)) continue;
binarystr1 = Convert.ToString(Convert.ToInt32(temp1.Substring(8, 8), 16), 2).PadLeft(32, '0');
syear = Convert.ToString(Convert.ToInt32(binarystr1.Substring(0, 6), 2)).PadLeft(2, '0');
smonth = Convert.ToString(Convert.ToInt32(binarystr1.Substring(6, 4), 2)).PadLeft(2, '0');
sday = Convert.ToString(Convert.ToInt32(binarystr1.Substring(10, 5), 2)).PadLeft(2, '0');
shour = Convert.ToString(Convert.ToInt32(binarystr1.Substring(15, 5), 2)).PadLeft(2, '0');
smin = Convert.ToString(Convert.ToInt32(binarystr1.Substring(20, 6), 2)).PadLeft(2, '0');
ssec = Convert.ToString(Convert.ToInt32(binarystr1.Substring(26, 6), 2)).PadLeft(2, '0');
binarystr2 = Convert.ToString(Convert.ToInt32(temp1.Substring(16, 8), 16), 2).PadLeft(32, '0');
Lyear = Convert.ToString(Convert.ToInt32(binarystr2.Substring(0, 6), 2)).PadLeft(2, '0');
Lmonth = Convert.ToString(Convert.ToInt32(binarystr2.Substring(6, 4), 2)).PadLeft(2, '0');
Lday = Convert.ToString(Convert.ToInt32(binarystr2.Substring(10, 5), 2)).PadLeft(2, '0');
Lhour = Convert.ToString(Convert.ToInt32(binarystr2.Substring(15, 5), 2)).PadLeft(2, '0');
Lmin = Convert.ToString(Convert.ToInt32(binarystr2.Substring(20, 6), 2)).PadLeft(2, '0');
Lsec = Convert.ToString(Convert.ToInt32(binarystr2.Substring(26, 6), 2)).PadLeft(2, '0');
CountStr = Convert.ToString(Convert.ToInt32(temp1.Substring(24, 4), 16), 10);
AntStr = Convert.ToString(Convert.ToInt32(temp1.Substring(28, 2), 16), 2).PadLeft(4, '0');
EPCStr = temp1.Substring(30, temp1.Length - 34);
bool isonlistview = false;
for (int i = 0; i < dataGridView2.RowCount; i )
{
if ((dataGridView2.Rows[i].Cells[1].Value != null) && (EPCStr == dataGridView2.Rows[i].Cells[1].Value.ToString()))
{
rows = dataGridView2.Rows[i];
rows.Cells[3].Value = "20" Lyear "-" Lmonth "-" Lday " " Lhour ":" Lmin ":" Lsec; ;
rows.Cells[4].Value = AntStr;
rows.Cells[5].Value = CountStr;
isonlistview = true;
break;
}
}
if (!isonlistview)
{
string[] arr = new string[6];
arr[0] = (dataGridView2.RowCount 1).ToString();
arr[1] = EPCStr;
arr[2] = "20" syear "-" smonth "-" sday " " shour ":" smin ":" ssec;
arr[3] = "20" Lyear "-" Lmonth "-" Lday " " Lhour ":" Lmin ":" Lsec;
arr[4] = AntStr;
arr[5] = CountStr;
dataGridView2.Rows.Insert(dataGridView2.RowCount, arr);
}
total_tagnum = total_tagnum 1;////每解析一条记录加一
lxLed_toltag.Text = total_tagnum.ToString();
lxLed_toltime.Text = (System.Environment.TickCount - total_time).ToString();
}
}
catch (System.Exception ex)
{
ex.ToString();
}
}
xtime = System.Environment.TickCount - xtime;
lxLed_Num.Text = dataGridView2.RowCount.ToString();
if ((System.Environment.TickCount - total_time)>0)
lxLed_cmdsud.Text = (total_tagnum * 1000 / (System.Environment.TickCount - total_time)).ToString();
}
private void timer_runmode_Tick(object sender, EventArgs e)
{
if (fIsInventoryScan)
return;
fIsInventoryScan = true;
GetData();
fIsInventoryScan = false;
}
private void Maintab_SelectedIndexChanged(object sender, EventArgs e)
{
if (fIsInventoryScan)
{
toStopThread = true;//标志,接收数据线程判断stop为true,正常情况下会自动退出线程
if (mythread.Join(1000))
{
try
{
mythread.Abort();//若线程无法退出,强制结束
timer_answer.Enabled = false;
}
catch (Exception exp)
{
MessageBox.Show(exp.Message, "Thread error");
}
}
fIsInventoryScan = false;
}
if (fIsBuffScan)
{
toStopThread = true;//标志,接收数据线程判断stop为true,正常情况下会自动退出线程
if (ReadThread.Join(1000))
{
try
{
ReadThread.Abort();//若线程无法退出,强制结束
timer_Buff.Enabled = false;
}
catch (Exception exp)
{
MessageBox.Show(exp.Message, "Thread error");
}
}
fIsInventoryScan = false;
}
timer_runmode.Enabled = false;
timer_answer.Enabled = false;
timer_EAS.Enabled = false;
Timer_Test_6B.Enabled = false;
timer_Buff.Enabled = false;
timer_RealTime.Enabled = false;
btIventoryG2.Text = "Start";
btGetrunmodedata.Text = "Start";
btCheckEASAlarm.Text = "Detect";
btStartBuff.Text = "Start";
btStartMactive.Text = "Start";
pictureBox2.Visible = false;
btIventoryG2.BackColor = Color.Transparent;
btGetrunmodedata.BackColor = Color.Transparent;
btStartBuff.BackColor = Color.Transparent;
btInventory6B.Text = "Start";
btInventory6B.BackColor = Color.Transparent;
btStartMactive.BackColor = Color.Transparent;
if (comboBox_EPC.Text =="" && comboBox_EPC.Items.Count>0)
{
comboBox_EPC.SelectedIndex = 0;
}
if(ReadTypes == "16")//单口
{
group_ant1.Enabled = false;
group_ant2.Enabled = false;
check_ant1.Checked = true;
check_ant2.Checked = false;
check_ant3.Checked = false;
check_ant4.Checked = false;
BAnt1.Checked = true;
BAnt2.Checked = false;
BAnt3.Checked = false;
BAnt4.Checked = false;
}
else
{
if(com_S.SelectedIndex<4)
group_ant1.Enabled = true;
else
group_ant1.Enabled = false;
group_ant2.Enabled = true;
}
}
private void btClearBuffer_Click(object sender, EventArgs e)
{
fCmdRet = uhf.ClearTagBuffer(ref fComAdr);
if (fCmdRet != 0)
{
string strLog = "Clear data failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Clear datda success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btGettagbuffer_Click(object sender, EventArgs e)
{
byte[] Data = new byte[8000];
int dataLength = 0;
int nLen, NumLen;
string temp = "";
string temp1 = "";
string syear = "";
string smonth = "";
string sday = "";
string shour = "";
string smin = "";
string ssec = "";
string Lyear = "";
string Lmonth = "";
string Lday = "";
string Lhour = "";
string Lmin = "";
string Lsec = "";
string binarystr1 = "";
string binarystr2 = "";
string CountStr = "";
string AntStr = "";
string EPCStr = "";
dataGridView2.Rows.Clear();
lxLed_Num.Text = "0";
lxLed_cmdsud.Text = "0";
lxLed_toltag.Text = "0";
lxLed_toltime.Text = "0";
total_time = System.Environment.TickCount;
fCmdRet = uhf.GetTagBufferInfo(ref fComAdr, Data, ref dataLength);
if (fCmdRet != 0)
{
string strLog = "Read Command notify data failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
nLen = dataLength * 2;
temp = ByteArrayToHexString(Data);
while (nLen > 0)
{
NumLen = 24 Convert.ToInt32(temp.Substring(22, 2), 16) * 2;
temp1 = temp.Substring(0, NumLen);
binarystr1 = Convert.ToString(Convert.ToInt32(temp1.Substring(0, 8), 16), 2).PadLeft(32, '0');
syear = Convert.ToString(Convert.ToInt32(binarystr1.Substring(0, 6), 2)).PadLeft(2, '0');
smonth = Convert.ToString(Convert.ToInt32(binarystr1.Substring(6, 4), 2)).PadLeft(2, '0');
sday = Convert.ToString(Convert.ToInt32(binarystr1.Substring(10, 5), 2)).PadLeft(2, '0');
shour = Convert.ToString(Convert.ToInt32(binarystr1.Substring(15, 5), 2)).PadLeft(2, '0');
smin = Convert.ToString(Convert.ToInt32(binarystr1.Substring(20, 6), 2)).PadLeft(2, '0');
ssec = Convert.ToString(Convert.ToInt32(binarystr1.Substring(26, 6), 2)).PadLeft(2, '0');
binarystr2 = Convert.ToString(Convert.ToInt32(temp1.Substring(8, 8), 16), 2).PadLeft(32, '0');
Lyear = Convert.ToString(Convert.ToInt32(binarystr2.Substring(0, 6), 2)).PadLeft(2, '0');
Lmonth = Convert.ToString(Convert.ToInt32(binarystr2.Substring(6, 4), 2)).PadLeft(2, '0');
Lday = Convert.ToString(Convert.ToInt32(binarystr2.Substring(10, 5), 2)).PadLeft(2, '0');
Lhour = Convert.ToString(Convert.ToInt32(binarystr2.Substring(15, 5), 2)).PadLeft(2, '0');
Lmin = Convert.ToString(Convert.ToInt32(binarystr2.Substring(20, 6), 2)).PadLeft(2, '0');
Lsec = Convert.ToString(Convert.ToInt32(binarystr2.Substring(26, 6), 2)).PadLeft(2, '0');
CountStr = Convert.ToString(Convert.ToInt32(temp1.Substring(16, 4), 16), 10);
AntStr = Convert.ToString(Convert.ToInt32(temp1.Substring(20, 2), 16), 2).PadLeft(4, '0');
EPCStr = temp1.Substring(24, temp1.Length - 24);
string[] arr = new string[6];
arr[0] = (dataGridView2.RowCount 1).ToString();
arr[1] = EPCStr;
arr[2] = "20" syear "-" smonth "-" sday " " shour ":" smin ":" ssec;
arr[3] = "20" Lyear "-" Lmonth "-" Lday " " Lhour ":" Lmin ":" Lsec;
arr[4] = AntStr;
arr[5] = CountStr;
dataGridView2.Rows.Insert(dataGridView2.RowCount, arr);
if ((temp.Length - NumLen) > 0)
temp = temp.Substring(NumLen, temp.Length - NumLen);
nLen = nLen - NumLen;
}
string strLog = "Read Command notify data success ";
WriteLog(lrtxtLog, strLog, 0);
int xtime = System.Environment.TickCount - total_time;
lxLed_Num.Text = dataGridView2.RowCount.ToString();
lxLed_cmdsud.Text = (dataGridView2.RowCount * 1000 / xtime).ToString();
lxLed_toltag.Text = dataGridView2.RowCount.ToString();
lxLed_toltime.Text = xtime.ToString();
}
}
private void btGetrunmodedata_Click(object sender, EventArgs e)
{
timer_runmode.Enabled = !timer_runmode.Enabled;
if (!timer_runmode.Enabled)
{
btGetrunmodedata.Text = "Start";
btGetrunmodedata.BackColor = Color.Transparent;
}
else
{
fInventory_EPC_List = "";
lxLed_Num.Text = "0";
lxLed_cmdsud.Text = "0";
lxLed_toltag.Text = "0";
lxLed_toltime.Text = "0";
total_time = System.Environment.TickCount;
total_tagnum = 0;
dataGridView2.Rows.Clear();
btGetrunmodedata.BackColor = Color.Indigo;
fIsInventoryScan = false;
btGetrunmodedata.Text = "Stop";
}
}
private void tb_Port_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = ("0123456789".IndexOf(Char.ToUpper(e.KeyChar)) < 0);
}
private void text_address_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = ("0123456789ABCDEF".IndexOf(Char.ToUpper(e.KeyChar)) < 0);
}
private void btGetInformation_Click(object sender, EventArgs e)
{
byte TrType = 0;
byte[] VersionInfo = new byte[2];
byte ReaderType = 0;
byte ScanTime = 0;
byte dmaxfre = 0;
byte dminfre = 0;
byte powerdBm = 0;
byte FreBand = 0;
byte Ant = 0;
byte BeepEn = 0;
byte OutputRep = 0;
byte CheckAnt = 0;
text_RDVersion.Text = "";
int ctime= System.Environment.TickCount ;
fCmdRet = uhf.GetReaderInformation(ref fComAdr, VersionInfo, ref ReaderType, ref TrType, ref dmaxfre, ref dminfre, ref powerdBm, ref ScanTime, ref Ant, ref BeepEn, ref OutputRep, ref CheckAnt);
if (fCmdRet != 0)
{
string strLog = "Get reader information failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
CommunicationTime = System.Environment.TickCount - ctime;
switch(ReaderType)
{
case 0x8A://2881
{
ReadTypes = "8A";
//模块版本号显示
gpb_MDVersion.Visible = true;
btFlashROM.Visible = true;
//时钟可设置
gpb_clock.Enabled = true;
//GPIO显示
check_out3.Visible = true;
check_out4.Visible = true;
check_int2.Visible = true;
check_int3.Visible = true;
check_int4.Visible = true;
//天线显示
gpb_checkant.Enabled = true;
gpb_antconfig.Enabled = true;
//主动模式显示
if (tabControl1.TabPages.IndexOf(tabPage_Mx) == -1)
tabControl1.TabPages.Add(tabPage_Mx);
if (tabControl1.TabPages.IndexOf(tabPage_Module) == -1)
tabControl1.TabPages.Add(tabPage_Module);
//主动询查显示
if (tabControl2.TabPages.IndexOf(tabPage_active) == -1)
tabControl2.TabPages.Add(tabPage_active);
if (tabControl2.TabPages.IndexOf(tabPage_Realtime) == -1)
tabControl2.TabPages.Add(tabPage_Realtime);
//缓存显示
gbp_buff.Enabled = true;
if (tabControl2.TabPages.IndexOf(tabPage_Buff) == -1)
tabControl2.TabPages.Add(tabPage_Buff);
// tabControl2.TabPages.Remove(tabPage_Realtime);
text_RDVersion.Text = "UHFReader288--" Convert.ToString(VersionInfo[0], 10).PadLeft(2, '0') "." Convert.ToString(VersionInfo[1], 10).PadLeft(2, '0');
}
break;
case 0x8B://2881
{
ReadTypes = "8B";
//模块版本号显示
gpb_MDVersion.Visible = true;
btFlashROM.Visible = true;
//时钟可设置
gpb_clock.Enabled = true;
//GPIO显示
check_out3.Visible = true;
check_out4.Visible = true;
check_int2.Visible = true;
check_int3.Visible = true;
check_int4.Visible = true;
//天线显示
gpb_checkant.Enabled = true;
gpb_antconfig.Enabled = true;
//主动模式显示
if (tabControl1.TabPages.IndexOf(tabPage_Mx) == -1)
tabControl1.TabPages.Add(tabPage_Mx);
if (tabControl1.TabPages.IndexOf(tabPage_Module) == -1)
tabControl1.TabPages.Add(tabPage_Module);
//主动询查显示
if (tabControl2.TabPages.IndexOf(tabPage_active) == -1)
tabControl2.TabPages.Add(tabPage_active);
if (tabControl2.TabPages.IndexOf(tabPage_Realtime) == -1)
tabControl2.TabPages.Add(tabPage_Realtime);
//缓存显示
gbp_buff.Enabled = true;
if (tabControl2.TabPages.IndexOf(tabPage_Buff) == -1)
tabControl2.TabPages.Add(tabPage_Buff);
text_RDVersion.Text = "UHFReader288ADV--" Convert.ToString(VersionInfo[0], 10).PadLeft(2, '0') "." Convert.ToString(VersionInfo[1], 10).PadLeft(2, '0');
}
break;
case 0x0C://2881lite
{
ReadTypes = "0C";
//模块版本号显示
gpb_MDVersion.Visible = false;
btFlashROM.Visible = false;
//时钟可设置
gpb_clock.Enabled = false;
//GPIO显示
check_out3.Visible = false;
check_out4.Visible = false;
check_int2.Visible = false;
check_int3.Visible = false;
check_int4.Visible = false;
//天线显示
gpb_checkant.Enabled = true;
gpb_antconfig.Enabled = true;
//主动模式显示
if (tabControl1.TabPages.IndexOf(tabPage_Module) == -1)
tabControl1.TabPages.Add(tabPage_Module);
int m = tabControl1.TabPages.IndexOf(tabPage_Mx);
if (tabControl1.TabPages.IndexOf(tabPage_Mx) > 0)
tabControl1.TabPages.Remove(tabPage_Mx);
//主动询查显示
if (tabControl2.TabPages.IndexOf(tabPage_Realtime) == -1)
tabControl2.TabPages.Add(tabPage_Realtime);
if (tabControl2.TabPages.IndexOf(tabPage_active) > 0)
tabControl2.TabPages.Remove(tabPage_active);
//缓存显示
gbp_buff.Enabled = true;
if (tabControl2.TabPages.IndexOf(tabPage_Buff) == -1)
tabControl2.TabPages.Add(tabPage_Buff);
text_RDVersion.Text = "UHFReader288M--" Convert.ToString(VersionInfo[0], 10).PadLeft(2, '0') "." Convert.ToString(VersionInfo[1], 10).PadLeft(2, '0');
}
break;
case 0x16://9883M
{
ReadTypes = "16";
//模块版本号显示
gpb_MDVersion.Visible = false;
btFlashROM.Visible = false;
//时钟可设置
gpb_clock.Enabled = false;
//GPIO显示
check_out3.Visible = false;
check_out4.Visible = false;
check_int2.Visible = false;
check_int3.Visible = false;
check_int4.Visible = false;
//天线显示
gpb_checkant.Enabled = false;
gpb_antconfig.Enabled = false;
//主动模式显示
tabControl1.TabPages.Remove(tabPage_Mx);
tabControl1.TabPages.Remove(tabPage_Module);
//主动询查显示
tabControl2.TabPages.Remove(tabPage_active);
tabControl2.TabPages.Remove(tabPage_Realtime);
//缓存显示
gbp_buff.Enabled = false;
tabControl2.TabPages.Remove(tabPage_Buff);
text_RDVersion.Text = "UHFReader883M--" Convert.ToString(VersionInfo[0], 10).PadLeft(2, '0') "." Convert.ToString(VersionInfo[1], 10).PadLeft(2, '0');
}
break;
}
ComboBox_PowerDbm.SelectedIndex = Convert.ToInt32(powerdBm);
text_address.Text = Convert.ToString(fComAdr, 16).PadLeft(2, '0');
comboBox_maxtime.SelectedIndex = Convert.ToInt32(ScanTime-3);
FreBand = Convert.ToByte(((dmaxfre & 0xc0) >> 4) | (dminfre >> 6));
switch (FreBand)
{
case 1:
{
radioButton_band1.Checked = true;
fdminfre = 920.125 (dminfre & 0x3F) * 0.25;
fdmaxfre = 920.125 (dmaxfre & 0x3F) * 0.25;
}
break;
case 2:
{
radioButton_band2.Checked = true;
fdminfre = 902.75 (dminfre & 0x3F) * 0.5;
fdmaxfre = 902.75 (dmaxfre & 0x3F) * 0.5;
}
break;
case 3:
{
radioButton_band3.Checked = true;
fdminfre = 917.1 (dminfre & 0x3F) * 0.2;
fdmaxfre = 917.1 (dmaxfre & 0x3F) * 0.2;
}
break;
case 4:
{
radioButton_band4.Checked = true;
fdminfre = 865.1 (dminfre & 0x3F) * 0.2;
fdmaxfre = 865.1 (dmaxfre & 0x3F) * 0.2;
}
break;
}
if (fdmaxfre != fdminfre)
CheckBox_SameFre.Checked = false;
ComboBox_dminfre.SelectedIndex = dminfre & 0x3F;
ComboBox_dmaxfre.SelectedIndex = dmaxfre & 0x3F;
switch (BeepEn)
{
case 1:
Radio_beepEn.Checked = true;
break;
case 0:
Radio_beepDis.Checked = true;
break;
}
if ((Ant & 0x01) == 1)
{
check_ant1.Checked = true;
checkant1.Checked = true;
BAnt1.Checked = true;
}
else
{
check_ant1.Checked = false;
checkant1.Checked = false;
BAnt1.Checked = false;
}
if ((Ant & 0x02) == 2)
{
check_ant2.Checked = true;
checkant2.Checked = true;
BAnt2.Checked = true;
}
else
{
check_ant2.Checked = false;
checkant2.Checked = false;
BAnt2.Checked = false;
}
if ((Ant & 0x04) == 4)
{
check_ant3.Checked = true;
checkant3.Checked = true;
BAnt3.Checked = true;
}
else
{
check_ant3.Checked = false;
checkant3.Checked = false;
BAnt3.Checked = false;
}
if ((Ant & 0x08) == 8)
{
check_ant4.Checked = true;
checkant4.Checked = true;
BAnt4.Checked = true;
}
else
{
check_ant4.Checked = false;
checkant4.Checked = false; ;
BAnt3.Checked = false;
}
if ((OutputRep & 0x01) == 1)
check_OutputRep1.Checked = true;
else
check_OutputRep1.Checked = false;
if ((OutputRep & 0x02) == 2)
check_OutputRep2.Checked = true;
else
check_OutputRep2.Checked = false;
if ((OutputRep & 0x04) == 4)
check_OutputRep3.Checked = true;
else
check_OutputRep3.Checked = false;
if ((OutputRep & 0x08) == 8)
check_OutputRep4.Checked = true;
else
check_OutputRep4.Checked = false;
if (CheckAnt == 0)
{
rb_Closecheckant.Checked = true;
}
else
{
rb_Opencheckant.Checked = true;
}
string strLog = "Get reader information success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btDefault_Click(object sender, EventArgs e)
{
byte aNewComAdr, powerDbm, dminfre, dmaxfre, scantime;
dminfre = 128;
dmaxfre = 49;
aNewComAdr = 0x00;
powerDbm = 30;
fBaud = 5;
scantime = 20;
ComboBox_baud.SelectedIndex = 3;
fCmdRet = uhf.SetAddress(ref fComAdr, aNewComAdr);
if (fCmdRet != 0)
{
string strLog = "Set Reader address failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set Reader address success ";
WriteLog(lrtxtLog, strLog, 0);
}
fCmdRet = uhf.SetRfPower(ref fComAdr, powerDbm);
if (fCmdRet != 0)
{
string strLog = "Set Power failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set power success ";
WriteLog(lrtxtLog, strLog, 0);
}
fCmdRet = uhf.SetRegion(ref fComAdr, dmaxfre, dminfre);
if (fCmdRet != 0)
{
string strLog = "Set Region failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set Region success";
WriteLog(lrtxtLog, strLog, 0);
}
fCmdRet = uhf.SetBaudRate(ref fComAdr, fBaud);
if (fCmdRet != 0)
{
string strLog = "Set baud rate failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set baud rate success ";
WriteLog(lrtxtLog, strLog, 0);
}
fCmdRet = uhf.SetInventoryScanTime(ref fComAdr, scantime);
if (fCmdRet != 0)
{
string strLog = "Set inventory scan time failed:: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set inventory scan time success ";
WriteLog(lrtxtLog, strLog, 0);
}
btGetInformation_Click(null,null);
}
private void btaddress_Click(object sender, EventArgs e)
{
byte aNewComAdr = Convert.ToByte(text_address.Text,16);
fCmdRet = uhf.SetAddress(ref fComAdr, aNewComAdr);
if (fCmdRet != 0)
{
string strLog = "Set reader address failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set reader address success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btFreq_Click(object sender, EventArgs e)
{
byte dminfre, dmaxfre;
int band = 2;
if (radioButton_band1.Checked)
band = 1;
if (radioButton_band2.Checked)
band = 2;
if (radioButton_band3.Checked)
band = 3;
if (radioButton_band4.Checked)
band = 4;
dminfre = Convert.ToByte(((band & 3) << 6) | (ComboBox_dminfre.SelectedIndex & 0x3F));
dmaxfre = Convert.ToByte(((band & 0x0c) << 4) | (ComboBox_dmaxfre.SelectedIndex & 0x3F));
fCmdRet = uhf.SetRegion(ref fComAdr, dmaxfre, dminfre);
if (fCmdRet != 0)
{
string strLog = "Set region failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set region success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void BT_DBM_Click(object sender, EventArgs e)
{
byte powerDbm = (byte)ComboBox_PowerDbm.SelectedIndex;
fCmdRet = uhf.SetRfPower(ref fComAdr, powerDbm);
if (fCmdRet != 0)
{
string strLog = "Set power failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set power success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btBaudRate_Click(object sender, EventArgs e)
{
byte fBaud = (byte)ComboBox_baud.SelectedIndex;
if (fBaud > 2)
fBaud = (byte)(fBaud 2);
fCmdRet = uhf.SetBaudRate(ref fComAdr, fBaud);
if (fCmdRet != 0)
{
string strLog = "Set baud rate failed " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set baud rate success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btSerial_Click(object sender, EventArgs e)
{
byte[] SeriaNo = new byte[4];
text_Serial.Text = "";
fCmdRet = uhf.GetSeriaNo(ref fComAdr, SeriaNo);
if (fCmdRet != 0)
{
string strLog = "Get serial number failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
text_Serial.Text = ByteArrayToHexString(SeriaNo);
string strLog = "Get serial number success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btMDVersion_Click(object sender, EventArgs e)
{
byte[] Version = new byte[2];
text_MDVersion.Text = "";
fCmdRet = uhf.GetModuleVersion(ref fComAdr, Version);
if (fCmdRet != 0)
{
string strLog = "Get module version failed:" GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
text_MDVersion.Text = Convert.ToString(Version[0], 10).PadLeft(2, '0') "." Convert.ToString(Version[1], 10).PadLeft(2, '0');
string strLog = "Get module version success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void Button_Beep_Click(object sender, EventArgs e)
{
byte BeepEn = 0;
if (Radio_beepEn.Checked)
BeepEn = 1;
else
BeepEn = 0;
fCmdRet = uhf.SetBeepNotification(ref fComAdr, BeepEn);
if (fCmdRet != 0)
{
string strLog = "Set beep failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set beep success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btRelay_Click(object sender, EventArgs e)
{
byte RelayTime = 0;
RelayTime = Convert.ToByte(ComboBox_RelayTime.SelectedIndex 1);
fCmdRet = uhf.SetRelay(ref fComAdr, RelayTime);
if (fCmdRet != 0)
{
string strLog = "Set relay failed:" GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set relay success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btOutputRep_Click(object sender, EventArgs e)
{
byte OutputRep = 0;
if (check_OutputRep1.Checked)
OutputRep = Convert.ToByte(OutputRep | 0x01);
if (check_OutputRep2.Checked)
OutputRep = Convert.ToByte(OutputRep | 0x02);
if (check_OutputRep3.Checked)
OutputRep = Convert.ToByte(OutputRep | 0x04);
if (check_OutputRep3.Checked)
OutputRep = Convert.ToByte(OutputRep | 0x08);
fCmdRet = uhf.SetNotificationPulseOutput(ref fComAdr, OutputRep);
if (fCmdRet != 0)
{
string strLog = "Set notification pulse output failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set notification pulse output success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void Button_SetGPIO_Click(object sender, EventArgs e)
{
byte OutputPin = 0;
if (check_out1.Checked)
OutputPin = Convert.ToByte(OutputPin | 0x01);
if (check_out2.Checked)
OutputPin = Convert.ToByte(OutputPin | 0x02);
if (check_out3.Checked)
OutputPin = Convert.ToByte(OutputPin | 0x04);
if (check_out4.Checked)
OutputPin = Convert.ToByte(OutputPin | 0x08);
fCmdRet = uhf.SetGPIO(ref fComAdr, OutputPin);
if (fCmdRet != 0)
{
string strLog = "Set GPIO failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set GPIO success";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void Button_GetGPIO_Click(object sender, EventArgs e)
{
byte OutputPin = 0;
fCmdRet = uhf.GetGPIOStatus(ref fComAdr, ref OutputPin);
if (fCmdRet != 0)
{
string strLog = "Get GPIO failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
if ((OutputPin & 0x10) == 0x10)
check_out1.Checked = true;
else
check_out1.Checked = false;
if ((OutputPin & 0x20) == 0x20)
check_out2.Checked = true;
else
check_out2.Checked = false;
if ((OutputPin & 0x40) == 0x40)
check_out3.Checked = true;
else
check_out3.Checked = false;
if ((OutputPin & 0x80) == 0x80)
check_out4.Checked = true;
else
check_out4.Checked = false;
if ((OutputPin & 0x01) == 1)
check_int1.Checked = true;
else
check_int1.Checked = false;
if ((OutputPin & 0x02) == 2)
check_int2.Checked = true;
else
check_int2.Checked = false;
if ((OutputPin & 0x04) == 4)
check_int3.Checked = true;
else
check_int3.Checked = false;
if ((OutputPin & 0x08) == 8)
check_int4.Checked = true;
else
check_int4.Checked = false;
string strLog = "Get GPIO success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btSetcheckant_Click(object sender, EventArgs e)
{
byte CheckAnt = 0;
if (rb_Opencheckant.Checked)
CheckAnt = 1;
else
CheckAnt = 0;
fCmdRet = uhf.SetCheckAnt(ref fComAdr, CheckAnt);
if (fCmdRet != 0)
{
string strLog = "Set antenna check failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set antenna check success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void Button_Ant_Click(object sender, EventArgs e)
{
byte ANT = 0;
byte ANT1 = 0;
if (checkant1.Checked) ANT = Convert.ToByte(ANT | 1);
if (checkant2.Checked) ANT = Convert.ToByte(ANT | 2);
if (checkant3.Checked) ANT = Convert.ToByte(ANT | 4);
if (checkant4.Checked) ANT = Convert.ToByte(ANT | 8);
ANT1 = ANT;
fCmdRet = uhf.SetAntennaMultiplexing(ref fComAdr, ANT);
if (fCmdRet != 0)
{
string strLog = "Antenna config failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
if ((ANT1 & 0x01) == 1)
{
check_ant1.Checked = true;
BAnt1.Checked = true;
}
else
{
check_ant1.Checked = false;
BAnt1.Checked = false;
}
if ((ANT1 & 0x02) == 2)
{
check_ant2.Checked = true;
BAnt2.Checked = true;
}
else
{
check_ant2.Checked = false;
BAnt2.Checked = false;
}
if ((ANT1 & 0x04) == 4)
{
check_ant3.Checked = true;
BAnt3.Checked = true;
}
else
{
check_ant3.Checked = false;
BAnt3.Checked = false;
}
if ((ANT1 & 0x08) == 8)
{
check_ant4.Checked = true;
BAnt4.Checked = true;
}
else
{
check_ant4.Checked = false;
BAnt4.Checked = false;
}
string strLog = "Antenna config success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void ClockCMD_Click(object sender, EventArgs e)
{
byte[] SetTime = new byte[6];
byte[] CurrentTime = new byte[6];
if (SetClock.Checked)
{
if ((Text_year.Text == "") || (Text_month.Text == "") || (Text_day.Text == "") || (Text_hour.Text == "") || (Text_min.Text == "") || (Text_sec.Text == ""))
{
MessageBox.Show("Please input right data", "information");
return;
}
SetTime[0] = Convert.ToByte(Text_year.Text); //需要设置的时间
SetTime[1] = Convert.ToByte(Text_month.Text);
SetTime[2] = Convert.ToByte(Text_day.Text);
SetTime[3] = Convert.ToByte(Text_hour.Text);
SetTime[4] = Convert.ToByte(Text_min.Text);
SetTime[5] = Convert.ToByte(Text_sec.Text);
if ((Convert.ToByte(Text_year.Text) < 0) || (Convert.ToByte(Text_year.Text) > 0x63))
{
MessageBox.Show("Please input data from 00-99", "information");
return;
}
fCmdRet = uhf.SetReal_timeClock(ref fComAdr, SetTime);
if (fCmdRet != 0)
{
string strLog = "Set real-time clock failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set real-time clock success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
else
{
fCmdRet = uhf.GetTime(ref fComAdr, CurrentTime);
if (fCmdRet != 0)
{
string strLog = "Get real-time clock failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
Text_year.Text = Convert.ToString(CurrentTime[0]).PadLeft(2, '0');
Text_month.Text = Convert.ToString(CurrentTime[1]).PadLeft(2, '0');
Text_day.Text = Convert.ToString(CurrentTime[2]).PadLeft(2, '0');
Text_hour.Text = Convert.ToString(CurrentTime[3]).PadLeft(2, '0');
Text_min.Text = Convert.ToString(CurrentTime[4]).PadLeft(2, '0');
Text_sec.Text = Convert.ToString(CurrentTime[5]).PadLeft(2, '0');
string strLog = "Get real-time clock success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
}
private void btAccuracy_Click(object sender, EventArgs e)
{
byte Accuracy = Convert.ToByte(ComboBox_Accuracy.SelectedIndex);
if (rbEASAcc.Checked)
Accuracy = Convert.ToByte(Accuracy | 0x80);
fCmdRet = uhf.SetEASSensitivity(ref fComAdr, Accuracy);
if (fCmdRet != 0)
{
string strLog = "Set EAS sensitivity failed:" GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set EAS sensitivity success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btMaskSet_Click(object sender, EventArgs e)
{
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
if ((text_madds.Text.Length != 4) || (text_mlen.Text.Length != 2) || (text_mdata.Text.Length % 2 != 0))
{
MessageBox.Show("Please input right data", "information");
return;
}
if (rb_MaskEPC.Checked) MaskMem = 1;
if (rb_MaskTID.Checked) MaskMem = 2;
if (rb_MaskUser.Checked) MaskMem = 3;
MaskAdr = HexStringToByteArray(text_madds.Text.Trim());
MaskLen = Convert.ToByte(text_mlen.Text, 16);
MaskData = HexStringToByteArray(text_mdata.Text.Trim());
fCmdRet = uhf.SetMask(ref fComAdr, MaskMem, MaskAdr, MaskLen, MaskData);
if (fCmdRet != 0)
{
string strLog = "Set mask failed:" GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set mask success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void bt_typeTag_Click(object sender, EventArgs e)
{
byte Protocol = 0;
if (rb_180006c.Checked)
{
if (rb_G2.Checked) Protocol = 0;
if (rb_EAS.Checked) Protocol = 2;
if (rb_G2TID.Checked) Protocol = 0x10;
}
else
{
Protocol = 0x80;
}
fCmdRet = uhf.SelectTagType(ref fComAdr, Protocol);
if (fCmdRet != 0)
{
string strLog = "Set tag type failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set tag type success";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void bttrigger_Click(object sender, EventArgs e)
{
byte TriggerTime = 0;
TriggerTime = Convert.ToByte(comboBox_trigger.SelectedIndex);
fCmdRet = uhf.SetTriggerTime(ref fComAdr, TriggerTime);
if (fCmdRet != 0)
{
string strLog = "Set trigger time failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set trigger time success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btTIDpara_Click(object sender, EventArgs e)
{
byte LenTID = 0;
byte AdrTID = 0;
if ((text_tidaddr.Text.Length != 2) || (text_tidlen.Text.Length != 2))
{
MessageBox.Show("TID parameter error", "Information");
return;
}
AdrTID = Convert.ToByte(text_tidaddr.Text, 16);
LenTID = Convert.ToByte(text_tidlen.Text, 16);
fCmdRet = uhf.SetTIDParameter(ref fComAdr, AdrTID, LenTID);
if (fCmdRet != 0)
{
string strLog = "Set TID parameter failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set TID parameter success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btSetQS_Click(object sender, EventArgs e)
{
byte QValue, Session;
QValue = Convert.ToByte(com_acQ.SelectedIndex);
Session = Convert.ToByte(com_acS.SelectedIndex);
fCmdRet = uhf.SetQS(ref fComAdr, QValue, Session);
if (fCmdRet != 0)
{
string strLog = "Set Q/Session failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set Q/Session success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btGetQS_Click(object sender, EventArgs e)
{
byte QValue, Session;
QValue = 0;
Session = 0;
fCmdRet = uhf.GetQS(ref fComAdr, ref QValue, ref Session);
if (fCmdRet != 0)
{
string strLog = "Get Q/Session failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
com_acQ.SelectedIndex = QValue;
com_acS.SelectedIndex = Session;
string strLog = "Get Q/Session success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btInterval_Click(object sender, EventArgs e)
{
byte ReadPauseTim = 0;
ReadPauseTim = Convert.ToByte(comboBox_intervalT.SelectedIndex);
fCmdRet = uhf.SetInventoryInterval(ref fComAdr, ReadPauseTim);
if (fCmdRet != 0)
{
string strLog = "Set inventory interval failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set inventory interval success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btSelectTag_Click(object sender, EventArgs e)
{
text_epc.Text = comboBox_EPC.Text;
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
maskadr_textbox.Enabled = true;
maskLen_textBox.Enabled = true;
maskData_textBox.Enabled = true;
R_EPC.Enabled = true;
R_TID.Enabled = true;
R_User.Enabled = true;
}
else
{
maskadr_textbox.Enabled = false;
maskLen_textBox.Enabled = false;
maskData_textBox.Enabled = false;
R_EPC.Enabled = false;
R_TID.Enabled = false;
R_User.Enabled = false;
}
}
private void btRead_Click(object sender, EventArgs e)
{
byte WordPtr, ENum;
byte Num = 0;
byte Mem = 0;
string str = ""; ;
byte[] CardData = new byte[320];
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
text_WriteData.Text = "";
if (checkBox1.Checked)
{
if ((maskadr_textbox.Text == "") || (maskLen_textBox.Text == "") || (maskData_textBox.Text == ""))
{
return;
}
ENum = 255;
if (R_EPC.Checked) MaskMem = 1;
if (R_TID.Checked) MaskMem = 2;
if (R_User.Checked) MaskMem = 3;
MaskAdr = HexStringToByteArray(maskadr_textbox.Text);
MaskLen = Convert.ToByte(maskLen_textBox.Text, 16);
MaskData = HexStringToByteArray(maskData_textBox.Text);
}
else
{
if (check_selecttag.Checked)
str = text_epc.Text;
else
str = "";
ENum = Convert.ToByte(str.Length / 4);
}
byte[] EPC = new byte[ENum * 2];
EPC = HexStringToByteArray(str);
if (C_Reserve.Checked)
Mem = 0;
if (C_EPC.Checked)
Mem = 1;
if (C_TID.Checked)
Mem = 2;
if (C_User.Checked)
Mem = 3;
if (text_WordPtr.Text == "" || text_RWlen.Text == "" || text_AccessCode2.Text.Length != 8)
{
return;
}
WordPtr = (byte)Convert.ToInt32(text_WordPtr.Text, 16);
Num = Convert.ToByte(text_RWlen.Text);
fPassWord = HexStringToByteArray(text_AccessCode2.Text);
for (int p = 0; p < 10; p )
{
fCmdRet = uhf.ReadData_G2(ref fComAdr, EPC, ENum, Mem, WordPtr, Num, fPassWord, MaskMem, MaskAdr, MaskLen, MaskData, CardData, ref ferrorcode);
if(fCmdRet==0)break;
}
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Read failed " "Return = 0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Read failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
byte[] daw = new byte[Num * 2];
Array.Copy(CardData, daw, Num * 2);
text_WriteData.Text = ByteArrayToHexString(daw);
string strLog = "Read success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btWrite_Click(object sender, EventArgs e)
{
byte WordPtr, ENum;
byte WNum = 0;
byte Mem = 0;
string str = ""; ;
byte[] CardData = new byte[320];
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
if (checkBox1.Checked)
{
if ((maskadr_textbox.Text == "") || (maskLen_textBox.Text == "") || (maskData_textBox.Text == ""))
{
return;
}
ENum = 255;
if (R_EPC.Checked) MaskMem = 1;
if (R_TID.Checked) MaskMem = 2;
if (R_User.Checked) MaskMem = 3;
MaskAdr = HexStringToByteArray(maskadr_textbox.Text);
MaskLen = Convert.ToByte(maskLen_textBox.Text, 16);
MaskData = HexStringToByteArray(maskData_textBox.Text);
}
else
{
if (check_selecttag.Checked)
str = text_epc.Text;
else
str = "";
ENum = Convert.ToByte(str.Length / 4);
}
byte[] EPC = new byte[ENum * 2];
EPC = HexStringToByteArray(str);
if (C_Reserve.Checked)
Mem = 0;
if (C_EPC.Checked)
Mem = 1;
if (C_TID.Checked)
Mem = 2;
if (C_User.Checked)
Mem = 3;
if (text_WordPtr.Text == "" || text_AccessCode2.Text.Length != 8)
{
return;
}
string epcstr=text_WriteData.Text;
if (epcstr.Length % 4 != 0 || epcstr.Length==0)
{
MessageBox.Show("Input data by word.", "Write");
return;
}
WNum = Convert.ToByte(epcstr.Length / 4);
byte[] Writedata = new byte[WNum * 2 1];
Writedata = HexStringToByteArray(epcstr);
WordPtr = (byte)Convert.ToInt32(text_WordPtr.Text, 16);
fPassWord = HexStringToByteArray(text_AccessCode2.Text);
if ((checkBox_pc.Checked) && (C_EPC.Checked))
{
WordPtr = 1;
WNum = Convert.ToByte(epcstr.Length / 4 1);
Writedata = HexStringToByteArray(textBox_pc.Text epcstr);
}
for (int p = 0; p < 10; p )
{
fCmdRet = uhf.WriteData_G2(ref fComAdr, EPC, WNum, ENum, Mem, WordPtr, Writedata, fPassWord, MaskMem, MaskAdr, MaskLen, MaskData, ref ferrorcode);
if (fCmdRet == 0) break;
}
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Write failed: " "Return = 0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Write failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Write success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void checkBox_pc_CheckedChanged(object sender, EventArgs e)
{
if (checkBox_pc.Checked && C_EPC.Checked)
{
text_WordPtr.Text = "0002";
text_WordPtr.ReadOnly = true;
int m, n;
n = text_WriteData.Text.Length;
if (n % 4 == 0)
{
m = n / 4;
m = (m & 0x3F) << 3;
textBox_pc.Text = Convert.ToString(m, 16).PadLeft(2, '0') "00";
}
}
else
{
text_WordPtr.ReadOnly = false;
}
}
private void text_WriteData_TextChanged(object sender, EventArgs e)
{
int m, n;
n = text_WriteData.Text.Length;
if ((checkBox_pc.Checked) && (n % 4 == 0) && (C_EPC.Checked))
{
m = n / 4;
m = (m & 0x3F) << 3;
textBox_pc.Text = Convert.ToString(m, 16).PadLeft(2, '0') "00";
}
}
private void C_EPC_CheckedChanged(object sender, EventArgs e)
{
if (checkBox_pc.Checked)
{
text_WordPtr.Text = "0002";
text_WordPtr.ReadOnly = true;
}
else
{
text_WordPtr.ReadOnly = false;
}
}
private void btBlockWrite_Click(object sender, EventArgs e)
{
byte WordPtr, ENum;
byte WNum = 0;
byte Mem = 0;
string str = ""; ;
byte[] CardData = new byte[320];
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
if (checkBox1.Checked)
{
if ((maskadr_textbox.Text == "") || (maskLen_textBox.Text == "") || (maskData_textBox.Text == ""))
{
return;
}
ENum = 255;
if (R_EPC.Checked) MaskMem = 1;
if (R_TID.Checked) MaskMem = 2;
if (R_User.Checked) MaskMem = 3;
MaskAdr = HexStringToByteArray(maskadr_textbox.Text);
MaskLen = Convert.ToByte(maskLen_textBox.Text, 16);
MaskData = HexStringToByteArray(maskData_textBox.Text);
}
else
{
if (check_selecttag.Checked)
str = text_epc.Text;
else
str = "";
ENum = Convert.ToByte(str.Length / 4);
}
byte[] EPC = new byte[ENum * 2];
EPC = HexStringToByteArray(str);
if (C_Reserve.Checked)
Mem = 0;
if (C_EPC.Checked)
Mem = 1;
if (C_TID.Checked)
Mem = 2;
if (C_User.Checked)
Mem = 3;
if (text_WordPtr.Text == "" || text_AccessCode2.Text.Length != 8)
{
return;
}
string epcstr = text_WriteData.Text;
if (epcstr.Length % 4 != 0 || epcstr.Length == 0)
{
MessageBox.Show("Input data by word.", "Write");
return;
}
WNum = Convert.ToByte(epcstr.Length / 4);
byte[] Writedata = new byte[WNum * 2 1];
Writedata = HexStringToByteArray(epcstr);
WordPtr = (byte)Convert.ToInt32(text_WordPtr.Text, 16);
fPassWord = HexStringToByteArray(text_AccessCode2.Text);
if ((checkBox_pc.Checked) && (C_EPC.Checked))
{
WordPtr = 1;
WNum = Convert.ToByte(epcstr.Length / 4 1);
Writedata = HexStringToByteArray(textBox_pc.Text epcstr);
}
for (int p = 0; p < 10; p )
{
fCmdRet = uhf.BlockWrite_G2(ref fComAdr, EPC, WNum, ENum, Mem, WordPtr, Writedata, fPassWord, MaskMem, MaskAdr, MaskLen, MaskData, ref ferrorcode);
if(fCmdRet==0)break;
}
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Block write failed: " "Return = 0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Block write failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Block write success";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btBlockErase_Click(object sender, EventArgs e)
{
byte WordPtr, ENum;
byte Num = 0;
byte Mem = 0;
string str = ""; ;
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
text_WriteData.Text = "";
if (checkBox1.Checked)
{
if ((maskadr_textbox.Text == "") || (maskLen_textBox.Text == "") || (maskData_textBox.Text == ""))
{
return;
}
ENum = 255;
if (R_EPC.Checked) MaskMem = 1;
if (R_TID.Checked) MaskMem = 2;
if (R_User.Checked) MaskMem = 3;
MaskAdr = HexStringToByteArray(maskadr_textbox.Text);
MaskLen = Convert.ToByte(maskLen_textBox.Text, 16);
MaskData = HexStringToByteArray(maskData_textBox.Text);
}
else
{
if (check_selecttag.Checked)
str = text_epc.Text;
else
str = "";
ENum = Convert.ToByte(str.Length / 4);
}
byte[] EPC = new byte[ENum * 2];
EPC = HexStringToByteArray(str);
if (C_Reserve.Checked)
Mem = 0;
if (C_EPC.Checked)
Mem = 1;
if (C_TID.Checked)
Mem = 2;
if (C_User.Checked)
Mem = 3;
if (text_WordPtr.Text == "" || text_RWlen.Text == "" || text_AccessCode2.Text.Length != 8)
{
return;
}
WordPtr = (byte)Convert.ToInt32(text_WordPtr.Text, 16);
Num = Convert.ToByte(text_RWlen.Text);
fPassWord = HexStringToByteArray(text_AccessCode2.Text);
fCmdRet = uhf.BlockErase_G2(ref fComAdr, EPC, ENum, Mem, WordPtr, Num, fPassWord, MaskMem, MaskAdr, MaskLen, MaskData, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Block erase failed: " "Return = 0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Block erase failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Block erase success";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btSetProtectState_Click(object sender, EventArgs e)
{
byte select = 0;
byte setprotect = 0;
string str="";
byte ENum;
byte[] CardData = new byte[320];
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
if (checkBox1.Checked)
{
if ((maskadr_textbox.Text.Length != 4) || (maskLen_textBox.Text.Length != 2) || (maskData_textBox.Text.Length % 2 != 0) && (maskData_textBox.Text.Length == 0))
{
MessageBox.Show("Mask data error", "Information");
return;
}
ENum = 255;
if (R_EPC.Checked) MaskMem = 1;
if (R_TID.Checked) MaskMem = 2;
if (R_User.Checked) MaskMem = 3;
MaskAdr = HexStringToByteArray(maskadr_textbox.Text);
MaskLen = Convert.ToByte(maskLen_textBox.Text, 16);
MaskData = HexStringToByteArray(maskData_textBox.Text);
}
else
{
if (check_selecttag.Checked)
str = text_epc.Text;
else
str = "";
ENum = Convert.ToByte(str.Length / 4);
}
byte[] EPC = new byte[ENum * 2];
EPC = HexStringToByteArray(str);
if (Edit_AccessCode6.Text.Length != 8)
{
MessageBox.Show("Access Password Less Than 8 digit!", "Information");
return;
}
fPassWord = HexStringToByteArray(Edit_AccessCode6.Text);
if (P_kill.Checked)
select = 0x00;
else if (p_pass.Checked)
select = 0x01;
else if (P_EPC.Checked)
select = 0x02;
else if (P_TID.Checked)
select = 0x03;
else if (P_User.Checked)
select = 0x04;
if (NoProect2.Checked)
setprotect = 0x00;
else if (Proect2.Checked)
setprotect = 0x02;
else if (Always2.Checked)
{
setprotect = 0x01;
if (MessageBox.Show(this, "Set unlock forever?", "Information", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
return;
}
else if (AlwaysNot2.Checked)
{
setprotect = 0x03;
if (MessageBox.Show(this, "Set lock forever?", "Information", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
return;
}
fCmdRet = uhf.Lock_G2(ref fComAdr, EPC, ENum, select, setprotect, fPassWord, MaskMem, MaskAdr, MaskLen, MaskData, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Lock failed: " "Return = 0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Lock failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Lock success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btDestroyCard_Click(object sender, EventArgs e)
{
string str = "";
byte ENum;
byte[] CardData = new byte[320];
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
if (checkBox1.Checked)
{
if ((maskadr_textbox.Text.Length != 4) || (maskLen_textBox.Text.Length != 2) || (maskData_textBox.Text.Length % 2 != 0) && (maskData_textBox.Text.Length == 0))
{
MessageBox.Show("Mask data error!", "Information");
return;
}
ENum = 255;
if (R_EPC.Checked) MaskMem = 1;
if (R_TID.Checked) MaskMem = 2;
if (R_User.Checked) MaskMem = 3;
MaskAdr = HexStringToByteArray(maskadr_textbox.Text);
MaskLen = Convert.ToByte(maskLen_textBox.Text, 16);
MaskData = HexStringToByteArray(maskData_textBox.Text);
}
else
{
if (check_selecttag.Checked)
str = text_epc.Text;
else
str = "";
ENum = Convert.ToByte(str.Length / 4);
}
byte[] EPC = new byte[ENum * 2];
EPC = HexStringToByteArray(str);
if (text_DestroyCode.Text.Length != 8)
{
MessageBox.Show("Access Password Less Than 8 digit!", "Information");
return;
}
fPassWord = HexStringToByteArray(text_DestroyCode.Text);
fCmdRet = uhf.KillTag_G2(ref fComAdr, EPC, ENum, fPassWord, MaskMem, MaskAdr, MaskLen, MaskData, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Kill tag failed: " "Return = 0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Kill tag failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Kill tag success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btWriteEPC_G2_Click(object sender, EventArgs e)
{
byte[] WriteEPC = new byte[200];
byte WriteEPClen;
byte ENum;
if (text_AccessCode3.Text.Length < 8)
{
MessageBox.Show("Access Password Less Than 8 digit!", "Information");
return;
}
if ((text_WriteEPC.Text.Length % 4) != 0 || text_WriteEPC.Text.Length==0)
{
MessageBox.Show("Please input Data by words in hexadecimal form!' #13 #10 'For example: 1234、12345678", "information");
return;
}
WriteEPClen = Convert.ToByte(text_WriteEPC.Text.Length / 2);
ENum = Convert.ToByte(text_WriteEPC.Text.Length / 4);
byte[] EPC = new byte[ENum];
EPC = HexStringToByteArray(text_WriteEPC.Text);
fPassWord = HexStringToByteArray(text_AccessCode3.Text);
fCmdRet = uhf.WriteEPC_G2(ref fComAdr, fPassWord, EPC, ENum, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Write EPC failed: " "Return = 0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Write EPC failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
if (comboBox_EPC.Items.IndexOf(text_WriteEPC.Text) == -1)
comboBox_EPC.Items.Add(text_WriteEPC.Text);
string strLog = "Write EPC success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btSetReadProtect_G2_Click(object sender, EventArgs e)
{
string str = "";
byte ENum;
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
if (checkBox1.Checked)
{
if ((maskadr_textbox.Text.Length != 4) || (maskLen_textBox.Text.Length != 2) || (maskData_textBox.Text.Length % 2 != 0) && (maskData_textBox.Text.Length == 0))
{
MessageBox.Show("Mask data error", "Information");
return;
}
ENum = 255;
if (R_EPC.Checked) MaskMem = 1;
if (R_TID.Checked) MaskMem = 2;
if (R_User.Checked) MaskMem = 3;
MaskAdr = HexStringToByteArray(maskadr_textbox.Text);
MaskLen = Convert.ToByte(maskLen_textBox.Text, 16);
MaskData = HexStringToByteArray(maskData_textBox.Text);
}
else
{
if (check_selecttag.Checked)
str = text_epc.Text;
else
str = "";
ENum = Convert.ToByte(str.Length / 4);
}
byte[] EPC = new byte[ENum * 2];
EPC = HexStringToByteArray(str);
if (text_AccessCode4.Text.Length != 8)
{
MessageBox.Show("Access Password Less Than 8 digit!Please input again!!", "information");
return;
}
fPassWord = HexStringToByteArray(text_AccessCode4.Text);
fCmdRet = uhf.SetPrivacyByEPC_G2(ref fComAdr, EPC, ENum, fPassWord, MaskMem, MaskAdr, MaskLen, MaskData, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Set privacy by EPC failed: " "Return = 0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Set privacy by EPC failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set privacy by EPC success";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btSetMultiReadProtect_G2_Click(object sender, EventArgs e)
{
if (text_AccessCode4.Text.Length != 8)
{
MessageBox.Show("Access Password Less Than 8 digit!Please input again!!", "information");
return;
}
fPassWord = HexStringToByteArray(text_AccessCode4.Text);
fCmdRet = uhf.SetPrivacyWithoutEPC_G2(ref fComAdr, fPassWord, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Set privacy without EPC failed: " "Return = 0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Set privacy without EPC failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set privacy without EPC success: ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btRemoveReadProtect_G2_Click(object sender, EventArgs e)
{
if (text_AccessCode4.Text.Length != 8)
{
MessageBox.Show("Access Password Less Than 8 digit!Please input again!!", "information");
return;
}
fPassWord = HexStringToByteArray(text_AccessCode4.Text);
fCmdRet = uhf.ResetPrivacy_G2(ref fComAdr, fPassWord, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Reset privacy failed: " "Return = 0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Reset privacy failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Reset privacy success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btCheckReadProtected_G2_Click(object sender, EventArgs e)
{
byte readpro = 2;
fCmdRet = uhf.CheckPrivacy_G2(ref fComAdr, ref readpro, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Check privacy faile: " "Return = 0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Check privacy faile: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "";
if (readpro == 0)
strLog = " 'Check privacy success'command return=0x00" "(Single Tag is unprotected)";
if (readpro == 1)
strLog = " 'Check privacy success'command return=0x01" "(Single Tag is protected)";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btSetEASAlarm_G2_Click(object sender, EventArgs e)
{
byte EAS = 0;
byte ENum;
string str="";
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
text_WriteData.Text = "";
if (checkBox1.Checked)
{
if ((maskadr_textbox.Text == "") || (maskLen_textBox.Text == "") || (maskData_textBox.Text == ""))
{
return;
}
ENum = 255;
if (R_EPC.Checked) MaskMem = 1;
if (R_TID.Checked) MaskMem = 2;
if (R_User.Checked) MaskMem = 3;
MaskAdr = HexStringToByteArray(maskadr_textbox.Text);
MaskLen = Convert.ToByte(maskLen_textBox.Text, 16);
MaskData = HexStringToByteArray(maskData_textBox.Text);
}
else
{
if (check_selecttag.Checked)
str = text_epc.Text;
else
str = "";
ENum = Convert.ToByte(str.Length / 4);
}
byte[] EPC = new byte[ENum * 2];
EPC = HexStringToByteArray(str);
if (text_AccessCode5.Text.Length != 8)
{
MessageBox.Show("Access Password Less Than 8 digit!Please input again!!", "information");
return;
}
fPassWord = HexStringToByteArray(text_AccessCode5.Text);
if (Alarm_G2.Checked)
EAS = 1;
else
EAS = 0;
fCmdRet = uhf.EASConfigure_G2(ref fComAdr, EPC, ENum, fPassWord, EAS, MaskMem, MaskAdr, MaskLen, MaskData, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "EAS Configure failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "";
if (Alarm_G2.Checked)
strLog = " 'EAS Configure' command return=0x00" "(Set EAS Alarm successfully)";
else
strLog = " 'EAS Configure' command return=0x00" "(Clear EAS Alarm successfully)";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btCheckEASAlarm_Click(object sender, EventArgs e)
{
timer_EAS.Enabled = !timer_EAS.Enabled;
if (!timer_EAS.Enabled)
{
pictureBox2.Visible = false;
btCheckEASAlarm.Text = "Detect";
btCheckEASAlarm.BackColor = Color.Transparent;
}
else
{
fIsInventoryScan = false;
btCheckEASAlarm.Text = "Stop";
btCheckEASAlarm.BackColor = Color.Indigo;
}
}
private void timer_EAS_Tick(object sender, EventArgs e)
{
if (fIsInventoryScan)
return;
fIsInventoryScan = true;
fCmdRet = uhf.EASAlarm_G2(ref fComAdr, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "No EAS Alarm";
WriteLog(lrtxtLog, strLog, 1);
pictureBox2.Visible = false;
}
else
{
pictureBox2.Visible = true;
string strLog = "EAS Alarm";
WriteLog(lrtxtLog, strLog, 0);
}
fIsInventoryScan = false;
}
private void btInventory6B_Click(object sender, EventArgs e)
{
Timer_Test_6B.Enabled = !Timer_Test_6B.Enabled;
if (!Timer_Test_6B.Enabled)
{
btInventory6B.Text = "Start";
btInventory6B.BackColor = Color.Transparent;
}
else
{
fisinventoryscan_6B = false;
ListView_ID_6B.Items.Clear();
btInventory6B.BackColor = Color.Indigo;
btInventory6B.Text = "Stop";
}
}
public void ChangeSubItem1(ListViewItem ListItem, int subItemIndex, string ItemText, string ant, string RSSI)
{
if (subItemIndex == 1)
{
if (ListItem.SubItems[subItemIndex].Text != ItemText)
{
ListItem.SubItems[subItemIndex].Text = ItemText;
ListItem.SubItems[subItemIndex 2].Text = "1";
ListItem.SubItems[subItemIndex 1].Text = ant;
}
else
{
ListItem.SubItems[subItemIndex 2].Text = Convert.ToString(Convert.ToUInt32(ListItem.SubItems[subItemIndex 2].Text) 1);
if ((Convert.ToUInt32(ListItem.SubItems[subItemIndex 2].Text) > 9999))
ListItem.SubItems[subItemIndex 2].Text = "1";
ListItem.SubItems[subItemIndex 1].Text = Convert.ToString(Convert.ToInt32(ListItem.SubItems[subItemIndex 1].Text, 2) | Convert.ToInt32(ant, 2), 2).PadLeft(4, '0');
}
ListItem.SubItems[subItemIndex 3].Text = RSSI;
}
}
private void Inventory_6B()
{
int CardNum = 0;
byte[] ID_6B = new byte[2000];
byte[] ID2_6B = new byte[5000];
bool isonlistview;
string temps;
string s, ss, sID;
ListViewItem aListItem = new ListViewItem();
int i, j;
byte Condition = 0;
byte StartAddress;
byte mask = 0;
byte[] ConditionContent = new byte[300];
byte ant = 0;
if (rb_single.Checked)
{
fCmdRet = uhf.InventorySingle_6B(ref fComAdr, ref ant, ID_6B);
if (fCmdRet == 0)
{
byte[] daw = new byte[10];
Array.Copy(ID_6B, daw, 10);
temps = ByteArrayToHexString(daw);
string RSSI = daw[9].ToString();
temps = temps.Substring(2, 16);
if (!list.Contains(temps))
{
CardNum1 = CardNum1 1;
list.Add(temps);
}
string sant = Convert.ToString(ant, 2).PadLeft(4, '0');
isonlistview = false;
for (i = 0; i < ListView_ID_6B.Items.Count; i ) //判断是否在ListView列表内
{
if (temps == ListView_ID_6B.Items[i].SubItems[1].Text)
{
aListItem = ListView_ID_6B.Items[i];
ChangeSubItem1(aListItem, 1, temps, sant, RSSI);
isonlistview = true;
break;
}
}
if (!isonlistview)
{
aListItem = ListView_ID_6B.Items.Add((ListView_ID_6B.Items.Count 1).ToString());
aListItem.SubItems.Add("");
aListItem.SubItems.Add("");
aListItem.SubItems.Add("");
aListItem.SubItems.Add("");
aListItem.SubItems.Add("");
s = temps;
ChangeSubItem1(aListItem, 1, s, sant, RSSI);
}
}
}
if (rb_mutiple.Checked)
{
Condition = 1;
ss = "0000000000000000";//4种条件这里选择的是非全0的标签
byte[] daw = HexStringToByteArray(ss);
mask = 0xFF;
StartAddress = 0;
CardNum = 0;
fCmdRet = uhf.InventoryMultiple_6B(ref fComAdr, Condition, StartAddress, mask, daw, ref ant, ID2_6B, ref CardNum);
if ((fCmdRet == 0x15) | (fCmdRet == 0x16) | (fCmdRet == 0x17) | (fCmdRet == 0x18) | (fCmdRet == 0xFB))
{
byte[] daw1 = new byte[CardNum * 10];
Array.Copy(ID2_6B, daw1, CardNum * 10);
temps = ByteArrayToHexString(daw1);
string sant = Convert.ToString(ant, 2).PadLeft(4, '0');
for (i = 0; i < CardNum; i )
{
sID = temps.Substring(20 * i 2, 16);
string RSSI = temps.Substring(20 * i 18, 2);
RSSI = Convert.ToByte(RSSI, 16).ToString();
if ((sID.Length) != 16)
return;
if (CardNum == 0)
return;
isonlistview = false;
for (j = 0; j < ListView_ID_6B.Items.Count; j ) //判断是否在Listview列表内
{
if (sID == ListView_ID_6B.Items[j].SubItems[1].Text)
{
aListItem = ListView_ID_6B.Items[j];
ChangeSubItem1(aListItem, 1, sID, sant, RSSI);
isonlistview = true;
break;
}
}
if (!isonlistview)
{
aListItem = ListView_ID_6B.Items.Add((ListView_ID_6B.Items.Count 1).ToString());
aListItem.SubItems.Add("");
aListItem.SubItems.Add("");
aListItem.SubItems.Add("");
aListItem.SubItems.Add("");
aListItem.SubItems.Add("");
s = sID;
ChangeSubItem1(aListItem, 1, s, sant, RSSI);
}
}
}
}
WriteLog(lrtxtLog, "18000-6B Query", 0);
}
private void Timer_Test_6B_Tick(object sender, EventArgs e)
{
if (fisinventoryscan_6B)
return;
fisinventoryscan_6B = true;
Inventory_6B();
fisinventoryscan_6B = false;
}
private void ListView_ID_6B_DoubleClick(object sender, EventArgs e)
{
if (this.ListView_ID_6B.SelectedIndices.Count > 0 && this.ListView_ID_6B.SelectedIndices[0] != -1)
{
text_6BUID.Text = ListView_ID_6B.SelectedItems[0].SubItems[1].Text;
}
}
//E004000085D94502
private void btRead6B_Click(object sender, EventArgs e)
{
string temp, temps;
byte[] CardData = new byte[320];
byte[] ID_6B = new byte[8];
byte Num, StartAddress;
if (text_6BUID.Text == "")
{
MessageBox.Show("Select one tag in the list");
return;
}
temp = text_6BUID.Text;
ID_6B = HexStringToByteArray(temp);
if (text_R6BAddr.Text == "")
return;
StartAddress = Convert.ToByte(text_R6BAddr.Text, 16);
if (text_R6BLen.Text == "")
return;
Num = Convert.ToByte(text_R6BLen.Text,16);
fCmdRet = uhf.ReadData_6B(ref fComAdr, ID_6B, StartAddress, Num, CardData, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Read data failed: " "tag return error=0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Read data failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
byte[] data = new byte[Num];
Array.Copy(CardData, data, Num);
temps = ByteArrayToHexString(data);
text_R6B.Text = temps;
string strLog = "Read data success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btWrite6B_Click(object sender, EventArgs e)
{
string temp;
byte[] CardData = new byte[320];
byte[] ID_6B = new byte[8];
byte StartAddress;
byte Writedatalen;
int writtenbyte = 0;
if (text_6BUID.Text == "")
{
MessageBox.Show("Select one tag in the list");
return;
}
// text_6BUID.Text = "E004000085D94502";
temp = text_6BUID.Text;
ID_6B = HexStringToByteArray(temp);
if (text_W6BAddr.Text == "")
return;
StartAddress = Convert.ToByte(text_W6BAddr.Text, 16);
if (text_W6BLen.Text == "")
return;
Writedatalen = Convert.ToByte(text_W6BLen.Text, 16);
if ((text_W6B.Text == "") | ((text_W6B.Text.Length / 2) != Writedatalen) | ((text_W6B.Text.Length % 2) != 0))
return;
byte[] Writedata = new byte[Writedatalen];
Writedata = HexStringToByteArray(text_W6B.Text);
fCmdRet = uhf.WriteData_6B(ref fComAdr, ID_6B, StartAddress, Writedata, Writedatalen, ref writtenbyte, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Write data failed: " "tag return error=0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Write data failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Write data success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void text_W6BLen_TextChanged(object sender, EventArgs e)
{
text_W6B.MaxLength = Convert.ToInt32(text_W6BLen.Text,16)*2;
}
private void btLock6B_Click(object sender, EventArgs e)
{
byte Address;
string temps;
byte[] ID_6B = new byte[8];
if (text_6BUID.Text == "")
{
MessageBox.Show("Select one tag in the list");
return;
}
temps = text_6BUID.Text;
ID_6B = HexStringToByteArray(temps);
if (text_lock6b.Text == "")
return;
Address = Convert.ToByte(text_lock6b.Text,16);
if (MessageBox.Show(this, "Lock forever?", "information", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
return;
fCmdRet = uhf.Lock_6B(ref fComAdr, ID_6B, Address, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Lock failed: " "tag return error=0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Lock failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Lock success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btCheckLock6B_Click(object sender, EventArgs e)
{
byte Address, ReLockState = 2;
string temps;
byte[] ID_6B = new byte[8];
if (text_6BUID.Text == "")
{
MessageBox.Show("Select one tag in the list");
return;
}
temps = text_6BUID.Text;
ID_6B = HexStringToByteArray(temps);
if (text_checkaddr.Text == "")
return;
Address = Convert.ToByte(text_checkaddr.Text,16);
fCmdRet = uhf.CheckLock_6B(ref fComAdr, ID_6B, Address, ref ReLockState, ref ferrorcode);
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Detect lock failed: " "tag return error=0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Detect lock failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "";
if (ReLockState == 0)
text_Statu6B.Text = "Unlocked";
if (ReLockState == 1)
text_Statu6B.Text = "Locked";
strLog = "Detect lock success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btGetSeriaPort_Click(object sender, EventArgs e)
{
try
{
SeriaATflag = false;
byte timeout = 0;
byte cmdlen = 0;
byte[] data = new byte[100];
byte[] cmddata = new byte[100];
byte recvLen = 0;
byte[] recvdata = new byte[1000];
string cmd = "AT!SP?";
data = Encoding.ASCII.GetBytes(cmd);
cmdlen = Convert.ToByte(cmd.Length);
Array.Copy(data, cmddata, cmdlen);
timeout = 30;
cmddata[cmdlen] = 0x0d;
cmddata[cmdlen 1] = 0x0a;
cmdlen = Convert.ToByte(cmdlen 2);
fCmdRet = uhf.TransparentCMD(ref fComAdr, timeout, cmdlen, cmddata, ref recvLen, recvdata);
if (fCmdRet != 0)
{
string strLog = "AT CMD failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string recvs = Encoding.ASCII.GetString(recvdata);
if ((recvs.IndexOf("ERROR") > 0) || (recvLen == 0))
{
MessageBox.Show("Get failed!", "Information");
SeriaATflag = true;
return;
}
int m = 0;
int n = 0;
protocolCB.SelectedIndex = 0;
string code = "";
m = recvs.IndexOf(":");
recvs = recvs.Substring(m 2);
n = recvs.IndexOf(",");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 1);
n = recvs.IndexOf(",");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 1);
n = recvs.IndexOf(",");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 1);
baudrateCB.SelectedIndex = Convert.ToInt32(code);
n = recvs.IndexOf(",");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 1);
databitCB.SelectedIndex = Convert.ToInt32(code);
n = recvs.IndexOf(",");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 1);
stopbitCB.SelectedIndex = Convert.ToInt32(code);
n = recvs.IndexOf(",");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 1);
parityCB.SelectedIndex = Convert.ToInt32(code);
n = recvs.IndexOf(",");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 1);
flowCB.SelectedIndex = Convert.ToInt32(code);
n = recvs.IndexOf("\r\n");
code = recvs.Substring(0, n);
fifoCB.SelectedIndex = Convert.ToInt32(code);
string strLog = "AT CMD success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
catch (System.Exception ex)
{
ex.ToString();
}
}
private void btSetSerialPort_Click(object sender, EventArgs e)
{
try
{
byte timeout = 0;
byte cmdlen = 0;
byte[] data = new byte[100];
byte[] cmddata = new byte[100];
byte recvLen = 0;
byte[] recvdata = new byte[1000];
string cmd = "AT!SP=0,1,";
cmd = cmd baudrateCB.SelectedIndex.ToString() "," databitCB.SelectedIndex.ToString()
"," stopbitCB.SelectedIndex.ToString() "," parityCB.SelectedIndex.ToString()
"," flowCB.SelectedIndex.ToString() "," fifoCB.SelectedIndex.ToString();
data = Encoding.ASCII.GetBytes(cmd);
cmdlen = Convert.ToByte(cmd.Length);
Array.Copy(data, cmddata, cmdlen);
timeout = 30;
cmddata[cmdlen] = 0x0d;
cmddata[cmdlen 1] = 0x0a;
cmdlen = Convert.ToByte(cmdlen 2);
fCmdRet = uhf.TransparentCMD(ref fComAdr, timeout, cmdlen, cmddata, ref recvLen, recvdata);
if (fCmdRet != 0)
{
string strLog = "AT CMD failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string recvs = Encoding.ASCII.GetString(recvdata);
if ((recvs.IndexOf("ERROR") > 0) || (recvLen == 0))
{
MessageBox.Show("Set failed!", "Information");
}
string strLog = "AT CMD success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
catch (System.Exception ex)
{
ex.ToString();
}
}
private void btGetCnt_Click(object sender, EventArgs e)
{
try
{
SeriaATflag = false;
byte timeout = 0;
byte cmdlen = 0;
byte[] data = new byte[100];
byte[] cmddata = new byte[100];
byte recvLen = 0;
byte[] recvdata = new byte[1000];
string cmd = "AT!TC?";
data = Encoding.ASCII.GetBytes(cmd);
cmdlen = Convert.ToByte(cmd.Length);
Array.Copy(data, cmddata, cmdlen);
timeout = 30;
cmddata[cmdlen] = 0x0d;
cmddata[cmdlen 1] = 0x0a;
cmdlen = Convert.ToByte(cmdlen 2);
fCmdRet = uhf.TransparentCMD(ref fComAdr, timeout, cmdlen, cmddata, ref recvLen, recvdata);
if (fCmdRet != 0)
{
string strLog = "AT CMD failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string recvs = Encoding.ASCII.GetString(recvdata);
if ((recvs.IndexOf("ERROR") > 0) || (recvLen == 0))
{
MessageBox.Show("Get failed!", "information");
SeriaATflag = true;
return;
}
int m = 0;
int n = 0;
string code = "";
m = recvs.IndexOf(",");
recvs = recvs.Substring(m 1);
n = recvs.IndexOf(",");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 1);
workasCB.SelectedIndex = Convert.ToInt32(code);
n = recvs.IndexOf(",");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 1);
tcpActiveCB.SelectedIndex = Convert.ToInt32(code) - 1;
n = recvs.IndexOf(",");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 1);
tcpLocalPortNUD.Text = code;
if (recvs.IndexOf("1800") > 0)
{
recvs = recvs.Substring(1);
n = recvs.IndexOf("\"");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 2);
tcpRomteHostTB.Text = code;
n = recvs.IndexOf(",");
code = recvs.Substring(0, n);
tcpRemotePortNUD.Text = code;
}
else
{
n = recvs.IndexOf("\"");
code = recvs.Substring(0, n - 1);
recvs = recvs.Substring(n 1);
tcpRemotePortNUD.Text = code;
n = recvs.IndexOf(",");
code = recvs.Substring(0, n - 1);
recvs = recvs.Substring(n 1);
tcpRomteHostTB.Text = code;
}
string strLog = "AT CMD success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
catch (System.Exception ex)
{
ex.ToString();
}
}
private void btSetCnt_Click(object sender, EventArgs e)
{
try
{
byte timeout = 0;
byte cmdlen = 0;
byte[] data = new byte[100];
byte[] cmddata = new byte[100];
byte recvLen = 0;
byte[] recvdata = new byte[1000];
string cmd = "AT!TC=0,";
cmd = cmd workasCB.SelectedIndex.ToString() "," Convert.ToString(tcpActiveCB.SelectedIndex 1)
"," tcpLocalPortNUD.Text ",\"" tcpRomteHostTB.Text
"\"," tcpRemotePortNUD.Text "," ",";
data = Encoding.ASCII.GetBytes(cmd);
cmdlen = Convert.ToByte(cmd.Length);
Array.Copy(data, cmddata, cmdlen);
timeout = 30;
cmddata[cmdlen] = 0x0d;
cmddata[cmdlen 1] = 0x0a;
cmdlen = Convert.ToByte(cmdlen 2);
fCmdRet = uhf.TransparentCMD(ref fComAdr, timeout, cmdlen, cmddata, ref recvLen, recvdata);
if (fCmdRet != 0)
{
string strLog = "AT CMD failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string recvs = Encoding.ASCII.GetString(recvdata);
if ((recvs.IndexOf("ERROR") > 0) || (recvLen == 0))
{
Thread.Sleep(500);
cmd = "AT!TC=0,";
cmd = cmd workasCB.SelectedIndex.ToString() "," Convert.ToString(tcpActiveCB.SelectedIndex 1)
"," tcpLocalPortNUD.Text ",\"" tcpRemotePortNUD.Text
"\"," tcpRomteHostTB.Text "," ",";
data = Encoding.ASCII.GetBytes(cmd);
cmdlen = Convert.ToByte(cmd.Length);
Array.Copy(data, cmddata, cmdlen);
timeout = 30;
cmddata[cmdlen] = 0x0d;
cmddata[cmdlen 1] = 0x0a;
cmdlen = Convert.ToByte(cmdlen 2);
fCmdRet = uhf.TransparentCMD(ref fComAdr, timeout, cmdlen, cmddata, ref recvLen, recvdata);
if (fCmdRet == 0)
{
recvs = Encoding.ASCII.GetString(recvdata);
if ((recvs.IndexOf("ERROR") > 0) || (recvLen == 0))
{
MessageBox.Show("Set failed!", "information");
return;
}
string strLog = "AT CMD success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
}
}
catch (System.Exception ex)
{
ex.ToString();
}
}
private void btGetNet_Click(object sender, EventArgs e)
{
try
{
SeriaATflag = false;
byte timeout = 0;
byte cmdlen = 0;
byte[] data = new byte[100];
byte[] cmddata = new byte[100];
byte recvLen = 0;
byte[] recvdata = new byte[1000];
string cmd = "AT!IC?";
data = Encoding.ASCII.GetBytes(cmd);
cmdlen = Convert.ToByte(cmd.Length);
Array.Copy(data, cmddata, cmdlen);
timeout = 30;
cmddata[cmdlen] = 0x0d;
cmddata[cmdlen 1] = 0x0a;
cmdlen = Convert.ToByte(cmdlen 2);
fCmdRet = uhf.TransparentCMD(ref fComAdr, timeout, cmdlen, cmddata, ref recvLen, recvdata);
if (fCmdRet != 0)
{
string strLog = "AT CMD failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string recvs = Encoding.ASCII.GetString(recvdata);
if ((recvs.IndexOf("ERROR") > 0) || (recvLen == 0))
{
MessageBox.Show("Get failed!", "information");
SeriaATflag = true;
return;
}
int m = 0;
int n = 0;
string code = "";
m = recvs.IndexOf("\"");
recvs = recvs.Substring(m 1);
n = recvs.IndexOf("\"");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 3);
ipTB.Text = code;
n = recvs.IndexOf("\"");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 3);
subnetTB.Text = code;
n = recvs.IndexOf("\"");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 3);
gatewayTB.Text = code;
n = recvs.IndexOf("\"");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 3);
pDNSTB.Text = code;
n = recvs.IndexOf("\"");
code = recvs.Substring(0, n);
recvs = recvs.Substring(n 1);
altDNSTB.Text = code;
}
Thread.Sleep(500);
cmd = "AT!EC?";
data = Encoding.ASCII.GetBytes(cmd);
cmdlen = Convert.ToByte(cmd.Length);
Array.Copy(data, cmddata, cmdlen);
timeout = 30;
cmddata[cmdlen] = 0x0d;
cmddata[cmdlen 1] = 0x0a;
cmdlen = Convert.ToByte(cmdlen 2);
fCmdRet = uhf.TransparentCMD(ref fComAdr, timeout, cmdlen, cmddata, ref recvLen, recvdata);
if (fCmdRet != 0)
{
string strLog = "AT CMD failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string recvs = Encoding.ASCII.GetString(recvdata);
if ((recvs.IndexOf("ERROR") > 0) || (recvLen == 0))
{
MessageBox.Show("Get failed!", "information");
SeriaATflag = true;
return;
}
int m = 0;
int n = 0;
string code = "";
m = recvs.IndexOf("\"");
recvs = recvs.Substring(m 1);
n = recvs.IndexOf("\"");
code = recvs.Substring(0, n);
macTB.Text = code;
string strLog = "AT CMD success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
catch (System.Exception ex)
{
ex.ToString();
}
}
private void btSetNet_Click(object sender, EventArgs e)
{
try
{
byte timeout = 0;
byte cmdlen = 0;
byte[] data = new byte[100];
byte[] cmddata = new byte[100];
byte recvLen = 0;
byte[] recvdata = new byte[1000];
string cmd = "AT!IC=0,\"";
cmd = cmd ipTB.Text "\",\"" subnetTB.Text
"\",\"" gatewayTB.Text "\",\"" pDNSTB.Text
"\",\"" altDNSTB.Text "\"";
data = Encoding.ASCII.GetBytes(cmd);
cmdlen = Convert.ToByte(cmd.Length);
Array.Copy(data, cmddata, cmdlen);
timeout = 30;
cmddata[cmdlen] = 0x0d;
cmddata[cmdlen 1] = 0x0a;
cmdlen = Convert.ToByte(cmdlen 2);
fCmdRet = uhf.TransparentCMD(ref fComAdr, timeout, cmdlen, cmddata, ref recvLen, recvdata);
if (fCmdRet != 0)
{
string strLog = "AT CMD failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string recvs = Encoding.ASCII.GetString(recvdata);
if ((recvs.IndexOf("ERROR") > 0) || (recvLen == 0))
{
Thread.Sleep(500);
cmd = "AT!IC=0,\"";
cmd = cmd ipTB.Text "\","
",\"" gatewayTB.Text "\",\"" pDNSTB.Text
"\",\"" altDNSTB.Text "\"";
data = Encoding.ASCII.GetBytes(cmd);
cmdlen = Convert.ToByte(cmd.Length);
Array.Copy(data, cmddata, cmdlen);
timeout = 60;
cmddata[cmdlen] = 0x0d;
cmddata[cmdlen 1] = 0x0a;
cmdlen = Convert.ToByte(cmdlen 2);
fCmdRet = uhf.TransparentCMD(ref fComAdr, timeout, cmdlen, cmddata, ref recvLen, recvdata);
if (fCmdRet == 0)
{
recvs = Encoding.ASCII.GetString(recvdata);
if ((recvs.IndexOf("ERROR") > 0) || (recvLen == 0))
{
MessageBox.Show("Set failed!", "information");
return;
}
}
}
string strLog = "AT CMD success";
WriteLog(lrtxtLog, strLog, 0);
}
}
catch (System.Exception ex)
{
ex.ToString();
}
}
private void btLoadDefault_Click(object sender, EventArgs e)
{
try
{
byte timeout = 0;
byte cmdlen = 0;
byte[] data = new byte[100];
byte[] cmddata = new byte[100];
byte recvLen = 0;
byte[] recvdata = new byte[1000];
string cmd = "AT!LD";
data = Encoding.ASCII.GetBytes(cmd);
cmdlen = Convert.ToByte(cmd.Length);
Array.Copy(data, cmddata, cmdlen);
timeout = 30;
cmddata[cmdlen] = 0x0d;
cmddata[cmdlen 1] = 0x0a;
cmdlen = Convert.ToByte(cmdlen 2);
fCmdRet = uhf.TransparentCMD(ref fComAdr, timeout, cmdlen, cmddata, ref recvLen, recvdata);
if (fCmdRet != 0)
{
string strLog = "AT CMD failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string recvs = Encoding.ASCII.GetString(recvdata);
if ((recvs.IndexOf("ERROR") > 0) || (recvLen == 0))
{
MessageBox.Show("Set failed!", "information");
return;
}
string strLog = "AT CMD success";
WriteLog(lrtxtLog, strLog, 0);
}
}
catch (System.Exception ex)
{
ex.ToString();
}
}
private void btSave_Click(object sender, EventArgs e)
{
try
{
byte timeout = 0;
byte cmdlen = 0;
byte[] data = new byte[100];
byte[] cmddata = new byte[100];
byte recvLen = 0;
byte[] recvdata = new byte[1000];
string cmd = "AT!S";
data = Encoding.ASCII.GetBytes(cmd);
cmdlen = Convert.ToByte(cmd.Length);
Array.Copy(data, cmddata, cmdlen);
timeout = 30;
cmddata[cmdlen] = 0x0d;
cmddata[cmdlen 1] = 0x0a;
cmdlen = Convert.ToByte(cmdlen 2);
fCmdRet = uhf.TransparentCMD(ref fComAdr, timeout, cmdlen, cmddata, ref recvLen, recvdata);
if (fCmdRet != 0)
{
string strLog = "AT CMD failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
Thread.Sleep(500);
cmd = "AT!R";
data = Encoding.ASCII.GetBytes(cmd);
cmdlen = Convert.ToByte(cmd.Length);
Array.Copy(data, cmddata, cmdlen);
timeout = 30;
cmddata[cmdlen] = 0x0d;
cmddata[cmdlen 1] = 0x0a;
cmdlen = Convert.ToByte(cmdlen 2);
fCmdRet = uhf.TransparentCMD(ref fComAdr, timeout, cmdlen, cmddata, ref recvLen, recvdata);
string strLog = "AT CMD success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
catch (System.Exception ex)
{
ex.ToString();
}
}
private void btGotoAT_Click(object sender, EventArgs e)
{
byte ATMode = 1;
SeriaATflag = false;
fCmdRet = uhf.ChangeATMode(ref fComAdr, ATMode);
if (fCmdRet != 0)
{
SeriaATflag = true;
string strLog = "Goto AT mode failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Goto AT mode success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btExitAT_Click(object sender, EventArgs e)
{
byte ATMode = 0;
fCmdRet = uhf.ChangeATMode(ref fComAdr, ATMode);
if (fCmdRet != 0)
{
string strLog = "Exit AT mode failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Exit AT mode success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
/// <summary>
/// 将Device List中所记录设备显示至DeviceListView控件;
/// </summary>
private void ReflashDeviceListView(List<DeviceClass> deviceList)
{
this.DeviceListView.Items.Clear();
foreach (DeviceClass device in deviceList)
{
IPAddress ipAddr = getIPAddress(device.DeviceIP);
ListViewItem deviceListViewItem = new ListViewItem(new string[] { device.DeviceName, ipAddr.ToString(), device.DeviceMac });
deviceListViewItem.ImageIndex = 0;
this.DeviceListView.Items.Add(deviceListViewItem);
}
}
/// <summary>
/// 将Device List中所记录设备显示至DeviceListView控件;
/// </summary>
private void ClearDeviceListView()
{
DevControl.tagErrorCode eCode;
List<DeviceClass> deviceList = DevList;
foreach (DeviceClass device in deviceList)
{
eCode = DevControl.DM_FreeDevice(device.DevHandle);
Debug.Assert(eCode == DevControl.tagErrorCode.DM_ERR_OK);
}
//清空设备列表,并清空对应显示控件;
DevList.Clear();
ReflashDeviceListView(DevList);
}
/// <summary>
/// 搜索设备,然后将记录搜索结果的DevList显示至DeviceListView控件;
/// </summary>
private bool SearchDevice(uint targetIP)
{
ClearDeviceListView();
DevControl.tagErrorCode eCode = DevControl.DM_SearchDevice(targetIP, 1500);
if (eCode == DevControl.tagErrorCode.DM_ERR_OK)
{
ReflashDeviceListView(DevList);
return true;
}
else
{
//异常处理;
string errMsg = ErrorHandling.HandleError(eCode);
System.Windows.Forms.MessageBox.Show(errMsg);
return false;
}
}
/// <summary>
/// 配置选定设备,开启对应配置窗体;
/// </summary>
private void ConfigSelectedDevice()
{
if (this.DeviceListView.SelectedIndices.Count > 0
&& this.DeviceListView.SelectedIndices[0] != -1)
{
//通过用户在显示控件中选择的索引值,在查找其所对应的设备对象;
DeviceClass currentDevice = DevList[DeviceListView.SelectedIndices[0]];
LoginForm loginform = new LoginForm();
DialogResult result = loginform.ShowDialog();
if (result == DialogResult.OK)
{
DevControl.tagErrorCode eCode = currentDevice.Login(loginform.UserName, loginform.Password);
if (eCode == DevControl.tagErrorCode.DM_ERR_OK)
{
//记录当前选择设备对象,作为父窗体属性传递至新开启的子配置窗体;
this.SelectedDevice = currentDevice;
ConfigForm deviceConfigForm = new ConfigForm(this.SelectedDevice);
deviceConfigForm.ShowDialog(this);
deviceConfigForm.Dispose();
}
else
{
//异常处理;
string errMsg = ErrorHandling.HandleError(eCode);
System.Windows.Forms.MessageBox.Show(errMsg);
}
}
loginform.Dispose();
}
}
private void searchToolStripMenuItem_Click(object sender, EventArgs e)
{
//使用广播搜索设备;
SearchDevice(DeviceClass.Broadcast);
}
private void configToolStripMenuItem_Click(object sender, EventArgs e)
{
ConfigSelectedDevice();
}
private void clearToolStripMenuItem_Click(object sender, EventArgs e)
{
ClearDeviceListView();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
//关闭主窗体并退出程序;
this.Close();
}
private void iEToolStripMenuItem_Click(object sender, EventArgs e)
{
//开启IE访问目标设备;
try
{
if (DeviceListView.SelectedIndices.Count > 0
&& DeviceListView.SelectedIndices[0] != -1)
{
DeviceClass currentDevice = DevList[DeviceListView.SelectedIndices[0]];
System.Diagnostics.Process.Start("iexplore.exe", "HTTP://" getIPAddress(currentDevice.DeviceIP).ToString());
}
}
catch (Exception ex)
{
Log.WriteException(ex);
}
}
private void telnetToolStripMenuItem_Click(object sender, EventArgs e)
{
//开启TELNET客户端访问目标设备;
try
{
if (DeviceListView.SelectedIndices.Count > 0
&& DeviceListView.SelectedIndices[0] != -1)
{
DeviceClass currentDevice = DevList[DeviceListView.SelectedIndices[0]];
System.Diagnostics.Process.Start("telnet.exe", getIPAddress(currentDevice.DeviceIP).ToString());
}
}
catch (Exception ex)
{
Log.WriteException(ex);
}
}
private void pingToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
if (DeviceListView.SelectedIndices.Count > 0
&& DeviceListView.SelectedIndices[0] != -1)
{
DeviceClass currentDevice = DevList[DeviceListView.SelectedIndices[0]];
System.Diagnostics.Process.Start("ping.exe", getIPAddress(currentDevice.DeviceIP).ToString() " -t");
}
}
catch (Exception ex)
{
Log.WriteException(ex);
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
DevControl.tagErrorCode eCode = DevControl.DM_DeInit();
if (eCode != DevControl.tagErrorCode.DM_ERR_OK)
{
ErrorHandling.HandleError(eCode);
}
}
private void DeviceListView_DoubleClick(object sender, EventArgs e)
{
ConfigSelectedDevice();
}
private void btFlashROM_Click(object sender, EventArgs e)
{
if (MessageBox.Show(this, " if change to flush mode,need restart power to restore.are you sure do this?", "Information", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
return;
fCmdRet = uhf.SetFlashRom(ref fComAdr);
if (fCmdRet != 0)
{
string strLog = "Change to flush mode failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Change to flush mode success ";
WriteLog(lrtxtLog, strLog, 0);
if (frmcomportindex > 0 && frmcomportindex<256)
{
btDisConnect232_Click(null,null);
}
}
}
private void tabPage8_Click(object sender, EventArgs e)
{
}
public class ctcplist//存储100客户端信息.
{
public Socket[] tempSocket=new Socket[100];
public string[] ip = new string[100];
public int[] port = new int[100];
}
ctcplist tcplist = new ctcplist();
Thread listenThread = null;//监听进程
Socket newsock = null;
private void StartListening() //main listening thread
{
int port = Convert.ToInt32(stcpport.Text);
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, port);//绑定端口
newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//tcp协议
newsock.Bind(ipep);
newsock.Listen(10);
while (true)
{
try
{
Socket client = newsock.Accept();//等待TCP客户端的链接请求
//查找空缺,插入信息
int m = 0;
for (m = 0; m < 100; m )
{
if (tcplist.ip[m] == null)
{
int nport = ((System.Net.IPEndPoint)client.RemoteEndPoint).Port;
IPAddress ip = ((System.Net.IPEndPoint)client.RemoteEndPoint).Address;
tcplist.tempSocket[m] = client;
tcplist.ip[m] = ip.ToString();
tcplist.port[m] = nport;
this.Invoke((EventHandler)delegate
{
listtcp.Items.Add(ip.ToString() ":" nport.ToString());
});
break;
}
}
ParameterizedThreadStart ParStart = new ParameterizedThreadStart(ServiceClient);
Thread clientService = new Thread(ParStart);
clientService.IsBackground = true;
object o = client;
clientService.Start(o);
}
catch (System.Exception ex)
{
ex.ToString();
break;
}
}
}
private void btListen_Click(object sender, EventArgs e)
{
//创建监听进程
stcpport.Enabled = false;
btListen.Enabled = false;
listenThread = new Thread(new ThreadStart(StartListening));
listenThread.IsBackground = true;
listenThread.Start();
}
public static string ByteArrayToHexString2(byte[] data)
{
StringBuilder sb = new StringBuilder(data.Length * 3);
foreach (byte b in data)
sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadLeft(3,' '));
return sb.ToString().ToUpper();
}
public void ServiceClient(object ParObject)
{
Socket tempSocket = (Socket)ParObject;
IPEndPoint newclient = (IPEndPoint)tempSocket.RemoteEndPoint;
// NetworkStream ns = new NetworkStream(tempSocket);
// StreamReader sr = new StreamReader(ns);
byte[] myReadBuffer = new byte[1024];
IPAddress ip = (newclient).Address;
int nport = (newclient).Port;
int count=0;
string temp = "";
while (true)
{
try
{
count=tempSocket.Receive(myReadBuffer);
if (count > 0)
{
byte[] data = new byte[count];
Array.Copy(myReadBuffer, data, count);
temp = ByteArrayToHexString2(data);
this.Invoke((EventHandler)delegate
{
stcprecv.AppendText(Environment.NewLine ip.ToString() ":" nport.ToString() " " temp);
stcprecv.Select(stcprecv.TextLength, 0);
stcprecv.ScrollToCaret();
});
}
else
{
this.Invoke((EventHandler)delegate
{
int m = 0;
for (m = 0; m < 100; m )
{
if (tcplist.ip[m] == ip.ToString() && (tcplist.port[m] == nport))//找到
{
int n = listtcp.Items.IndexOf(ip.ToString() ":" nport.ToString());
listtcp.Items.RemoveAt(n);
tcplist.tempSocket[m].Close();
tcplist.ip[m] = null;
tcplist.port[m] = 0;
tcplist.tempSocket[m] = null;
break;
}
}
});
break;
}
}
catch
{
//查找断开连接的设备IP
this.Invoke((EventHandler)delegate
{
int m = 0;
for (m = 0; m < 100; m )
{
if (tcplist.ip[m] == ip.ToString() && (tcplist.port[m] == nport))//找到
{
int n = listtcp.Items.IndexOf(ip.ToString() ":" nport.ToString());
listtcp.Items.RemoveAt(n);
tcplist.tempSocket[m].Close();
tcplist.ip[m] = null;
tcplist.port[m] = 0;
tcplist.tempSocket[m] = null;
break;
}
}
});
break;
}
}
}
private void btStop_Click(object sender, EventArgs e)
{
int m = 0;
for (m = 0; m < 100; m )
{
if (tcplist.tempSocket[m] != null)//找到
{
int n = listtcp.Items.IndexOf(tcplist.ip[m] ":" tcplist.port[m].ToString());
listtcp.Items.RemoveAt(n);
tcplist.tempSocket[m].Close();
tcplist.ip[m] = null;
tcplist.port[m] = 0;
tcplist.tempSocket[m] = null;
}
}
if (newsock != null)
newsock.Close();
if (listenThread != null)
listenThread.Abort();
stcpport.Enabled = true;
btListen.Enabled = true;
}
Socket m_client;
Thread clientThread = null;//接收数据线程
private void bttcpconnect_Click(object sender, EventArgs e)
{
try
{
string ip = tcpremoteIp.IpAddressStr;
int nipport = Convert.ToInt32(remotePort.Text);
m_client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ie = new IPEndPoint(IPAddress.Parse(ip), nipport);
m_client.Connect(ie);
if (m_client.Connected)
{
tcpremoteIp.Enabled = false;
remotePort.Enabled =false;
bttcpconnect.Enabled = false;//连接成功创建接收数据线程
bttcpsend.Enabled = true;
clientThread = new Thread(new ThreadStart(StartRead));
clientThread.IsBackground = true;
clientThread.Start();
}
else
{
tcpremoteIp.Enabled = true;
remotePort.Enabled = true;
bttcpconnect.Enabled = true;
bttcpsend.Enabled = false;
}
}
catch (SocketException ex)
{
ex.ToString();
tcpremoteIp.Enabled = true;
remotePort.Enabled = true;
bttcpconnect.Enabled = true;
bttcpsend.Enabled = false;
}
}
private void StartRead()
{
byte[] buffs = new byte[2048];
IPEndPoint newclient = (IPEndPoint)m_client.RemoteEndPoint;
IPAddress ip = (newclient).Address;
int nport = (newclient).Port;
while (true)
{
try
{
int count = m_client.Receive(buffs);
if (count > 0)
{
byte[] data = new byte[count];
Array.Copy(buffs, data, count);
string temp = ByteArrayToHexString2(data);
this.Invoke((EventHandler)delegate
{
ctctrecv.AppendText(Environment.NewLine ip.ToString() ":" nport.ToString() " " temp);
ctctrecv.Select(stcprecv.TextLength, 0);
ctctrecv.ScrollToCaret();
});
}
}
catch (System.Exception ex)
{
ex.ToString();
if (m_client.Connected)
{
m_client.Shutdown(SocketShutdown.Both);
m_client.Close();
}
this.Invoke((EventHandler)delegate
{
tcpremoteIp.Enabled = true;
remotePort.Enabled = true;
bttcpconnect.Enabled = true;
});
break;
}
}
}
private void bttcpsend_Click(object sender, EventArgs e)
{
if(m_client.Connected)
{
string temp = ctctsend.Text.Replace(" ","");
if(temp=="")return;
if (temp.Length % 2 != 0)
temp = temp "0";
byte[] buff=new byte[1024];
buff = HexStringToByteArray(temp);
int m=m_client.Send(buff);
}
}
private void bttcpdisconnect_Click(object sender, EventArgs e)
{
if(m_client.Connected)
{
m_client.Shutdown(SocketShutdown.Both);
m_client.Close();
clientThread.Abort();
tcpremoteIp.Enabled = true;
remotePort.Enabled = true;
bttcpconnect.Enabled = true;
bttcpsend.Enabled = false;
}
}
private void com_S_SelectedIndexChanged(object sender, EventArgs e)
{
if (com_S.SelectedIndex>1)
{
check_num.Enabled = true;
}
else
{
check_num.Enabled = false;
}
if (com_S.SelectedIndex==4)
{
group_ant1.Enabled = false;
}
else
{
group_ant1.Enabled = true;
}
}
private void btSetEPCandTIDLen_Click(object sender, EventArgs e)
{
byte SaveLen = 0;
if (rb128.Checked)
{
SaveLen = 0;
}
else
{
SaveLen = 1;
}
fCmdRet = uhf.SetSaveLen(ref fComAdr, SaveLen);
if (fCmdRet == 0)
{
string strLog = "Set save length success ";
WriteLog(lrtxtLog, strLog, 0);
}
else
{
string strLog = "Set save length failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btGetEPCandTIDLen_Click(object sender, EventArgs e)
{
byte SaveLen = 0;
fCmdRet = uhf.GetSaveLen(ref fComAdr, ref SaveLen);
if (fCmdRet == 0)
{
if (SaveLen == 0)
rb128.Checked = true;
else
rb496.Checked = true;
string strLog = "Get save length success ";
WriteLog(lrtxtLog, strLog, 0);
}
else
{
string strLog = "Get save length failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btReadBuff_Click(object sender, EventArgs e)
{
byte[] pEPCList = new byte[30000];
lxLed_BNum.Text = "0";
//lxLed_Bcmdsud.Text = "0";
//lxLed_Btoltag.Text = "0";
//lxLed_Btoltime.Text = "0";
//lxLed_cmdTime.Text = "0";
dataGridView3.DataSource =null;
fCmdRet = uhf.ReadBuffer_G2(ref fComAdr);
string strLog = "Read buffer over";
WriteLog(lrtxtLog, strLog, 0);
}
private void btClearBuff_Click(object sender, EventArgs e)
{
fCmdRet = uhf.ClearBuffer_G2(ref fComAdr);
if (fCmdRet == 0)
{
string strLog = "Clear buffer success ";
WriteLog(lrtxtLog, strLog, 0);
}
else
{
string strLog = "Clear buffer failed";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btRandCbuff_Click(object sender, EventArgs e)
{
btReadBuff_Click(null,null);
btClearBuff_Click(null, null);
}
private void btQueryBuffNum_Click(object sender, EventArgs e)
{
int Count = 0;
//lxLed_Bcmdsud.Text = "0";
//lxLed_cmdTime.Text = "0";
lxLed_BNum.Text = "0";
//lxLed_Btoltag.Text = "0";
//lxLed_Btoltime.Text = "0";
fCmdRet = uhf.GetBufferCnt_G2(ref fComAdr, ref Count);
if (fCmdRet == 0)
{
lxLed_BNum.Text = Count.ToString();
string strLog = "Get buffer tag number success ";
WriteLog(lrtxtLog, strLog, 0);
}
else
{
string strLog = "Get buffer tag number failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 0);
}
}
private Thread ReadThread = null;
private volatile bool fIsBuffScan = false;
private void btStartBuff_Click(object sender, EventArgs e)
{
if (btStartBuff.Text == "Start")
{
if (rb_bepc.Checked)
TIDFlag = 0;
else
TIDFlag = 1;
total_time = System.Environment.TickCount;
total_tagnum = 0;
btStartBuff.BackColor = Color.Indigo;
btStartBuff.Text = "Stop";
toStopThread = false;
if (fIsBuffScan == false)
{
ReadThread = new Thread(new ThreadStart(ReadProcess));
ReadThread.Start();
}
timer_Buff.Enabled = true;
}
else
{
btStartBuff.BackColor = Color.Transparent;
btStartBuff.Text = "Start";
if (fIsBuffScan)
{
toStopThread = true;//标志,接收数据线程判断stop为true,正常情况下会自动退出线程
if (ReadThread.Join(1000))
{
try
{
ReadThread.Abort();//若线程无法退出,强制结束
}
catch (Exception exp)
{
MessageBox.Show(exp.Message, "Thread error");
}
}
fIsBuffScan = false;
}
timer_Buff.Enabled = false;
}
}
private void GetBuffData()
{
int TagNum = 0;
int BufferCount = 0;
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
byte MaskFlag = 0;
byte AdrTID = 0;
byte LenTID = 0;
AdrTID = 0;
LenTID = 6;
MaskFlag = 0;
int cbtime = System.Environment.TickCount;
TagNum = 0;
BufferCount = 0;
Target = 0;
Scantime = 0x14;
Qvalue = 6;
if (TIDFlag == 0)
Session = 255;
else
Session = 0;
FastFlag = 0;
fCmdRet = uhf.InventoryBuffer_G2(ref fComAdr, Qvalue, Session, MaskMem, MaskAdr, MaskLen, MaskData, MaskFlag, AdrTID, LenTID, TIDFlag, Target, InAnt, Scantime, FastFlag, ref BufferCount, ref TagNum);
int x_time = System.Environment.TickCount - cbtime;//命令时间
//string strLog = "带缓存查询: " GetReturnCodeDesc(fCmdRet);
//WriteLog(lrtxtLog, strLog, 0);
///////////设置网络断线重连
if (fCmdRet == 0)//代表已查找结束,
{
IntPtr ptrWnd = IntPtr.Zero;
ptrWnd = FindWindow(null, "UHFReader288 Demo V1.2");
if (ptrWnd != IntPtr.Zero) // 检查当前统计窗口是否打开
{
total_tagnum = total_tagnum TagNum;
int tagrate = (TagNum * 1000) / x_time;//速度等于张数/时间
string para = BufferCount.ToString() "," x_time.ToString() "," tagrate.ToString() "," total_tagnum.ToString();
SendMessage(ptrWnd, WM_SENDBUFF, IntPtr.Zero, para);
}
}
}
private void ReadProcess()
{
fIsBuffScan = true;
while (!toStopThread)
{
if (BAnt1.Checked)
{
InAnt = 0x80;
GetBuffData();
}
if (BAnt2.Checked)
{
InAnt = 0x81;
GetBuffData();
}
if (BAnt3.Checked)
{
InAnt = 0x82;
GetBuffData();
}
if (BAnt4.Checked)
{
InAnt = 0x83;
GetBuffData();
}
Thread.Sleep(10);
}
fIsBuffScan = false;
}
private void timer_Buff_Tick(object sender, EventArgs e)
{
lxLed_Btoltime.Text = (System.Environment.TickCount - total_time).ToString();
}
private void btExtRead_Click(object sender, EventArgs e)
{
byte ENum;
byte Num = 0;
byte Mem = 0;
byte[] WordPtr=new byte[2];
string str = ""; ;
byte[] CardData = new byte[320];
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
text_WriteData.Text = "";
if (checkBox1.Checked)
{
if ((maskadr_textbox.Text == "") || (maskLen_textBox.Text == "") || (maskData_textBox.Text == ""))
{
return;
}
ENum = 255;
if (R_EPC.Checked) MaskMem = 1;
if (R_TID.Checked) MaskMem = 2;
if (R_User.Checked) MaskMem = 3;
MaskAdr = HexStringToByteArray(maskadr_textbox.Text);
MaskLen = Convert.ToByte(maskLen_textBox.Text, 16);
MaskData = HexStringToByteArray(maskData_textBox.Text);
}
else
{
if (check_selecttag.Checked)
str = text_epc.Text;
else
str = "";
ENum = Convert.ToByte(str.Length / 4);
}
byte[] EPC = new byte[ENum * 2];
EPC = HexStringToByteArray(str);
if (C_Reserve.Checked)
Mem = 0;
if (C_EPC.Checked)
Mem = 1;
if (C_TID.Checked)
Mem = 2;
if (C_User.Checked)
Mem = 3;
if (text_WordPtr.Text == "" || text_RWlen.Text == "" || text_AccessCode2.Text.Length != 8)
{
return;
}
WordPtr = HexStringToByteArray(text_WordPtr.Text);
Num = Convert.ToByte(text_RWlen.Text);
fPassWord = HexStringToByteArray(text_AccessCode2.Text);
for (int p = 0; p < 10; p )
{
fCmdRet = uhf.ExtReadData_G2(ref fComAdr, EPC, ENum, Mem, WordPtr, Num, fPassWord, MaskMem, MaskAdr, MaskLen, MaskData, CardData, ref ferrorcode);
if (fCmdRet == 0) break;
}
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Extense read failed: " "Return = 0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Extense read failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
byte[] daw = new byte[Num * 2];
Array.Copy(CardData, daw, Num * 2);
text_WriteData.Text = ByteArrayToHexString(daw);
string strLog = "Extense read success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btExtWrite_Click(object sender, EventArgs e)
{
byte ENum;
byte WNum = 0;
byte Mem = 0;
string str = "";
byte[] WordPtr = new byte[2];
byte[] CardData = new byte[320];
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[100];
if (checkBox1.Checked)
{
if ((maskadr_textbox.Text == "") || (maskLen_textBox.Text == "") || (maskData_textBox.Text == ""))
{
return;
}
ENum = 255;
if (R_EPC.Checked) MaskMem = 1;
if (R_TID.Checked) MaskMem = 2;
if (R_User.Checked) MaskMem = 3;
MaskAdr = HexStringToByteArray(maskadr_textbox.Text);
MaskLen = Convert.ToByte(maskLen_textBox.Text, 16);
MaskData = HexStringToByteArray(maskData_textBox.Text);
}
else
{
if (check_selecttag.Checked)
str = text_epc.Text;
else
str = "";
ENum = Convert.ToByte(str.Length / 4);
}
byte[] EPC = new byte[ENum * 2];
EPC = HexStringToByteArray(str);
if (C_Reserve.Checked)
Mem = 0;
if (C_EPC.Checked)
Mem = 1;
if (C_TID.Checked)
Mem = 2;
if (C_User.Checked)
Mem = 3;
if (text_WordPtr.Text == "" || text_AccessCode2.Text.Length != 8)
{
return;
}
string epcstr = text_WriteData.Text;
if (epcstr.Length % 4 != 0 || epcstr.Length == 0)
{
MessageBox.Show("Input data by word", "Write");
return;
}
WNum = Convert.ToByte(epcstr.Length / 4);
byte[] Writedata = new byte[WNum * 2 1];
Writedata = HexStringToByteArray(epcstr);
WordPtr = HexStringToByteArray(text_WordPtr.Text);
fPassWord = HexStringToByteArray(text_AccessCode2.Text);
if ((checkBox_pc.Checked) && (C_EPC.Checked))
{
WordPtr = HexStringToByteArray("0001");
WNum = Convert.ToByte(epcstr.Length / 4 1);
Writedata = HexStringToByteArray(textBox_pc.Text epcstr);
}
for (int p = 0; p < 10; p )
{
fCmdRet = uhf.ExtWriteData_G2(ref fComAdr, EPC, WNum, ENum, Mem, WordPtr, Writedata, fPassWord, MaskMem, MaskAdr, MaskLen, MaskData, ref ferrorcode);
if (fCmdRet == 0) break;
}
if (fCmdRet != 0)
{
string strLog = "";
if (fCmdRet == 0xFC)
strLog = "Extense write failed: " "Return = 0x" Convert.ToString(ferrorcode, 16) "(" GetErrorCodeDesc(ferrorcode) ")";
else
strLog = "Extense write failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Extense write success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btSetMaxtime_Click(object sender, EventArgs e)
{
byte Scantime=0;
Scantime=Convert.ToByte(comboBox_maxtime.SelectedIndex 3);
fCmdRet = uhf.SetInventoryScanTime(ref fComAdr, Scantime);
if (fCmdRet != 0)
{
string strLog = "Set inventory scan time failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set inventory scan time success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btSetMmode_Click(object sender, EventArgs e)
{
byte ReadMode = 0;
string temp = text_RDVersion.Text;
if (temp.IndexOf("UHFReader288M") == -1)//没找到
{
if (com_Mmode.SelectedIndex == 0)
{
ReadMode = 0;
}
else
{
ReadMode = 6;
}
fCmdRet = uhf.SetWorkMode(ref fComAdr, ReadMode);
}
else
{
ReadMode = (byte)com_Mmode.SelectedIndex;
fCmdRet = uhf.SetReadMode(ref fComAdr, ReadMode);
}
if (fCmdRet != 0)
{
string strLog = "Set read mode failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set read mode success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btMGetParameter_Click(object sender, EventArgs e)
{
byte[] Parameter = new byte[200];
fCmdRet = uhf.GetReadParameter(ref fComAdr, Parameter);
if (fCmdRet != 0)
{
string strLog = "Get read parameter failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
com_Mmode.SelectedIndex = Parameter[0];
if (Parameter[1] == 0)
{
MRB_G2.Checked = true;
}
else
{
MRB_6B.Checked = true;
}
COM_MRPTime.SelectedIndex = Parameter[2];
com_MFliterTime.SelectedIndex = Parameter[3];
com_MQ.SelectedIndex = Parameter[4];
if (Parameter[5] == 255)
com_MS.SelectedIndex = 4;
else
com_MS.SelectedIndex = Parameter[5];
if (Parameter[6] == 1)
{
RBM_EPC.Checked = true;
}
else if (Parameter[6] == 2)
{
RBM_TID.Checked = true;
}
else if (Parameter[6] == 3)
{
RBM_USER.Checked = true;
}
byte[] maskaddr = new byte[2];
Array.Copy(Parameter, 7, maskaddr, 0, 2);
txt_Maddr.Text = ByteArrayToHexString(maskaddr);
txt_Mlen.Text = Convert.ToString(Parameter[9], 16).PadLeft(2, '0');
byte[] data = new byte[32];
Array.Copy(Parameter, 10, data, 0, 32);
string temp = ByteArrayToHexString(data);
int len = Parameter[9];
if ((len % 8) == 0)
{
len = len / 8;
}
else
{
len = len / 8 1;
}
if (len <= 32)
{
temp = temp.Substring(0, len * 2);
}
txt_Mdata.Text = temp;
txt_mtidaddr.Text = Convert.ToString(Parameter[42], 16).PadLeft(2, '0');
txt_Mtidlen.Text = Convert.ToString(Parameter[43], 16).PadLeft(2, '0');
string strLog = "Get read parameter success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btMSetParameter_Click(object sender, EventArgs e)
{
byte[] Parameter = new byte[200];
byte MaskMem = 0;
byte[] MaskAdr = new byte[2];
byte MaskLen = 0;
byte[] MaskData = new byte[200];
byte MaskFlag = 0;
byte AdrTID = 0;
byte LenTID = 0;
byte TIDFlag = 0;
if (MRB_G2.Checked)
{
Parameter[0] = 0;
}
else
{
Parameter[0] = 1;
}
Parameter[1] = (byte)COM_MRPTime.SelectedIndex;
Parameter[2] = (byte)com_MFliterTime.SelectedIndex;
Parameter[3] = (byte)com_MQ.SelectedIndex;
Parameter[4] = (byte)com_MS.SelectedIndex;
if (Parameter[4] > 3) Parameter[4] = 255;
if (checkBox_mask.Checked)
{
if (RBM_EPC.Checked)
{
MaskMem = 1;
}
else if (RBM_TID.Checked)
{
MaskMem = 2;
}
else if (RBM_USER.Checked)
{
MaskMem = 3;
}
if ((txt_Maddr.Text.Length != 4) || (txt_Mlen.Text.Length != 2) || (txt_Mdata.Text.Length % 2 != 0))
{
MessageBox.Show("Mask error!", "information");
return;
}
MaskAdr = HexStringToByteArray(txt_Maddr.Text);
int len = Convert.ToInt32(txt_Mlen.Text, 16);
MaskLen = (byte)len;
MaskData = HexStringToByteArray(txt_Mdata.Text);
MaskFlag = 1;
}
if (checkBox_tid.Checked)
{
AdrTID = Convert.ToByte(txt_mtidaddr.Text, 16);
LenTID = Convert.ToByte(txt_Mtidlen.Text, 16);
TIDFlag = 1;
}
fCmdRet = uhf.SetReadParameter(ref fComAdr, Parameter, MaskMem, MaskAdr, MaskLen, MaskData, MaskFlag, AdrTID, LenTID, TIDFlag);
if (fCmdRet != 0)
{
string strLog = "Set read parameter failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set read parameter success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void btStartMactive_Click(object sender, EventArgs e)
{
timer_RealTime.Enabled = !timer_RealTime.Enabled;
if (!timer_RealTime.Enabled)
{
btStartMactive.Text = "Start";
btStartMactive.BackColor = Color.Transparent;
}
else
{
fInventory_EPC_List = "";
total_time = System.Environment.TickCount;
lxLed_Mtag.Text = "0";
lxLed_Mtime.Text = "0";
dataGridView4.Rows.Clear();
btStartMactive.BackColor = Color.Indigo;
fIsInventoryScan = false;
btStartMactive.Text = "Stop";
}
}
private void GetRealtiemeData()
{
byte[] ScanModeData = new byte[40960];
int nLen, NumLen;
string temp1 = "";
string RSSI = "";
string AntStr = "";
string lenstr = "";
string EPCStr = "";
int ValidDatalength;
string temp;
ValidDatalength = 0;
DataGridViewRow rows = new DataGridViewRow();
int xtime = System.Environment.TickCount;
fCmdRet = uhf.ReadActiveModeData(ScanModeData, ref ValidDatalength);
if (fCmdRet == 0)
{
byte[] daw = new byte[ValidDatalength];
Array.Copy(ScanModeData, 0, daw, 0, ValidDatalength);
temp = ByteArrayToHexString(daw);
fInventory_EPC_List = fInventory_EPC_List temp;//把字符串存进列表
nLen = fInventory_EPC_List.Length;
while (fInventory_EPC_List.Length > 4)
{
try
{
string FlagStr = Convert.ToString(fComAdr, 16).PadLeft(2, '0') "EE00";//查找头位置标志字符串
int nindex = fInventory_EPC_List.IndexOf(FlagStr);
if (nindex > 1)
fInventory_EPC_List = fInventory_EPC_List.Substring(nindex - 2);
else
{
fInventory_EPC_List = fInventory_EPC_List.Substring(2);
continue;
}
NumLen = Convert.ToInt32(fInventory_EPC_List.Substring(0, 2), 16) * 2 2;//取第一个帧的长度
if (fInventory_EPC_List.Length < NumLen)
{
break;
}
temp1 = fInventory_EPC_List.Substring(0, NumLen);
fInventory_EPC_List = fInventory_EPC_List.Substring(NumLen);
if (!CheckCRC(temp1)) continue;
AntStr = Convert.ToString(Convert.ToInt32(temp1.Substring(8, 2), 16), 2).PadLeft(4, '0');
lenstr = Convert.ToString(Convert.ToInt32(temp1.Substring(10, 2), 16), 10);
EPCStr = temp1.Substring(12, temp1.Length - 18);
RSSI = temp1.Substring(temp1.Length - 6, 2);
bool isonlistview = false;
for (int i = 0; i < dataGridView4.RowCount; i )
{
if ((dataGridView4.Rows[i].Cells[1].Value != null) && (EPCStr == dataGridView4.Rows[i].Cells[1].Value.ToString()))
{
rows = dataGridView4.Rows[i];
rows.Cells[3].Value = AntStr;
rows.Cells[4].Value = RSSI;
isonlistview = true;
break;
}
}
if (!isonlistview)
{
string[] arr = new string[6];
arr[0] = (dataGridView4.RowCount 1).ToString();
arr[1] = EPCStr;
arr[2] = lenstr;
arr[3] = AntStr;
arr[4] = RSSI;
dataGridView4.Rows.Insert(dataGridView4.RowCount, arr);
}
lxLed_Mtime.Text = (System.Environment.TickCount - total_time).ToString();
}
catch (System.Exception ex)
{
break;
}
}
}
lxLed_Mtag.Text = dataGridView4.RowCount.ToString();
}
private void timer_RealTime_Tick(object sender, EventArgs e)
{
if (fIsInventoryScan) return;
fIsInventoryScan = true;
GetRealtiemeData();
fIsInventoryScan = false;
}
private void groupBox1_Enter(object sender, EventArgs e)
{
}
private void bt_SetWpower_Click(object sender, EventArgs e)
{
byte WritePower = 0;
WritePower = (byte)(com_wpower.SelectedIndex);
if (rb_wp1.Checked)
{
WritePower = WritePower;
}
else
{
WritePower = Convert.ToByte(WritePower | 0x80);
}
fCmdRet = uhf.WriteRfPower(ref fComAdr, WritePower);
if (fCmdRet != 0)
{
string strLog = "Set failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void bt_GetWpower_Click(object sender, EventArgs e)
{
byte WritePower = 0;
fCmdRet = uhf.ReadRfPower(ref fComAdr, ref WritePower);
if (fCmdRet != 0)
{
string strLog = "Get failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
if ((WritePower & 0x80) == 0)
{
rb_wp1.Checked = true;
com_wpower.SelectedIndex = Convert.ToInt32(WritePower);
}
else
{
com_wpower.SelectedIndex = Convert.ToInt32(WritePower & 0x3F);
rb_wp2.Checked = true;
}
string strLog = "Get success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void bt_Setretry_Click(object sender, EventArgs e)
{
byte RetryTime = 0;
RetryTime = (byte)(com_retrytimes.SelectedIndex | 0x80);
fCmdRet = uhf.RetryTimes(ref fComAdr, ref RetryTime);
if (fCmdRet != 0)
{
string strLog = "Set failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
string strLog = "Set success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void bt_Getretry_Click(object sender, EventArgs e)
{
byte Times = 0;
fCmdRet = uhf.RetryTimes(ref fComAdr, ref Times);
if (fCmdRet != 0)
{
string strLog = "Get failed: " GetReturnCodeDesc(fCmdRet);
WriteLog(lrtxtLog, strLog, 1);
}
else
{
com_retrytimes.SelectedIndex = Convert.ToInt32(Times);
string strLog = "Get success ";
WriteLog(lrtxtLog, strLog, 0);
}
}
private void rb_epc_CheckedChanged(object sender, EventArgs e)
{
gbp_MixRead.Enabled = false;
com_S.Items.Clear();
com_S.Items.Add("0");
com_S.Items.Add("1");
com_S.Items.Add("2");
com_S.Items.Add("3");
com_S.Items.Add("Auto");
com_S.SelectedIndex = 4;
}
private void rb_mix_CheckedChanged(object sender, EventArgs e)
{
gbp_MixRead.Enabled = true;
com_S.Items.Clear();
com_S.Items.Add("0");
com_S.Items.Add("1");
com_S.Items.Add("2");
com_S.Items.Add("3");
com_S.SelectedIndex = 0;
}
private void rb_tid_CheckedChanged(object sender, EventArgs e)
{
gbp_MixRead.Enabled = false;
com_S.Items.Clear();
com_S.Items.Add("0");
com_S.Items.Add("1");
com_S.Items.Add("2");
com_S.Items.Add("3");
com_S.SelectedIndex = 0;
}
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论