0% found this document useful (0 votes)
126 views

Codigo

The document discusses code for configuring and communicating with an RFID reader device. It defines variables and methods for opening serial ports, sending commands to the reader to get status information and configuration values, and setting parameters like the reader address, frequency settings, baud rate, and more. Key methods include initializing serial port and reader lists, opening a serial port, sending commands to get reader info, and sending commands to set the reader address, power level, frequency range, and baud rate. Status updates and command results are logged.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
126 views

Codigo

The document discusses code for configuring and communicating with an RFID reader device. It defines variables and methods for opening serial ports, sending commands to the reader to get status information and configuration values, and setting parameters like the reader address, frequency settings, baud rate, and more. Key methods include initializing serial port and reader lists, opening a serial port, sending commands to get reader info, and sending commands to set the reader address, power level, frequency range, and baud rate. Status updates and command results are logged.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 12

using using using using using using using using using using using using using using using

using

System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms; System.Collections; System.Resources; System.Reflection; ReaderB; System.IO.Ports; System.IO; System.Net; System.Net.Sockets; System.Threading;

namespace DL920demomain { public partial class Form1 : Form { private bool fAppClosed; private byte fComAdr = 0xff; private byte fBaud; private double fdminfre; private double fdmaxfre; private int fCmdRet = 30; private int fOpenComIndex; private bool fIsInventoryScan; private byte[] fOperEPC = new byte[36]; private byte[] fPassWord = new byte[4]; private byte[] fOperID_6B = new byte[8]; ArrayList list = new ArrayList(); private string fInventory_EPC_List; private int frmcomportindex; private bool ComOpen = false; public string fRecvUDPstring = ""; public string RemostIP = ""; public Form1() { InitializeComponent(); } private void RefreshStatus() { if (!(ComboBox_AlreadyOpenCOM.Items.Count != 0)) StatusBar1.Panels[1].Text = "COM Closed"; else StatusBar1.Panels[1].Text = " COM" + Convert.ToString(frmcomport index); StatusBar1.Panels[0].Text = ""; StatusBar1.Panels[2].Text = ""; } private string GetReturnCodeDesc(int cmdRet) { switch (cmdRet) { case 0x00: return "Operation Successed"; 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"; default: return ""; } } private byte[] HexStringToByteArray(string s) { s = s.Replace(" ", ""); byte[] buffer = new byte[s.Length / 2]; for (int i = 0; i < s.Length; i += 2) buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16); return buffer; } private string ByteArrayToHexString(byte[] data) { StringBuilder sb = new StringBuilder(data.Length * 3); foreach (byte b in data) sb.Append(Convert.ToString(b, 16).PadLeft(2, '0')); return sb.ToString().ToUpper(); } private void AddCmdLog(string CMD, string cmdStr, int cmdRet) { try { StatusBar1.Panels[0].Text = ""; StatusBar1.Panels[0].Text = DateTime.Now.ToLongTimeString() + " " + cmdStr + ": " + GetReturnCodeDesc(cmdRet); } finally { ; } } private void AddCmdLog(string CMD, string cmdStr, int cmdRet, int erroco de) { try { StatusBar1.Panels[0].Text = ""; StatusBar1.Panels[0].Text = DateTime.Now.ToLongTimeString() + " " + cmdStr + ": " + GetReturnCodeDesc(cmdRet) + " " + "0

x" + Convert.ToString(errocode, 16).PadLeft(2, '0'); } finally { ; } } private void InitComList() { int i = 0; ComboBox_COM.Items.Clear(); ComboBox_COM.Items.Add(" AUTO"); for (i = 1; i < 13; i++) ComboBox_COM.Items.Add(" COM" + Convert.ToString(i)); ComboBox_COM.SelectedIndex = 0; RefreshStatus(); } private void InitReaderList() { int i = 0; ComboBox_baud.SelectedIndex = 3; for (i = 0; i < 63; i++) { ComboBox_dminfre.Items.Add(Convert.ToString(902.6 + i * 0.4) + " MHz"); ComboBox_dmaxfre.Items.Add(Convert.ToString(902.6 + i * 0.4) + " MHz"); } ComboBox_dmaxfre.SelectedIndex = 62; ComboBox_dminfre.SelectedIndex = 0; for (i = 0x03; i <= 0xff; i++) ComboBox_scantime.Items.Add(Convert.ToString(i) + "*100ms"); ComboBox_scantime.SelectedIndex = 7; i = 40; while (i <= 300) { this.ComboBox_IntervalTime.Items.Add(Convert.ToString(i) + "ms") ; i = i + 10; } this.ComboBox_IntervalTime.SelectedIndex = 1; for (i = 0; i < 7; i++) i = 40; } private void Form1_Load(object sender, EventArgs e) { fOpenComIndex = -1; fComAdr = 0; fBaud = 5; InitComList(); InitReaderList(); fAppClosed = false; fIsInventoryScan = false; Timer_Test_.Enabled = false; Timer_G2_Read.Enabled = false; button2.Enabled = false;

ComboBox_baud2.SelectedIndex = 3; radioButton22.Checked = true; } private void OpenPort_Click(object sender, EventArgs e) { int port = 0; int openresult, i; openresult = 30; string temp; Cursor = Cursors.WaitCursor; if (Edit_CmdComAddr.Text == "") Edit_CmdComAddr.Text = "FF"; fComAdr = Convert.ToByte(Edit_CmdComAddr.Text, 16); // $FF; try { if (ComboBox_COM.SelectedIndex == 0)//Auto { fBaud = Convert.ToByte(ComboBox_baud2.SelectedIndex); if (fBaud > 2) { fBaud = Convert.ToByte(fBaud + 2); } openresult = StaticClassReaderB.AutoOpenComPort(ref port, re f fComAdr, fBaud, ref frmcomportindex); fOpenComIndex = frmcomportindex; if (openresult == 0) { ComOpen = true; if (fBaud > 3) { ComboBox_baud.SelectedIndex = Convert.ToInt32(fBaud - 2); } else { ComboBox_baud.SelectedIndex = Convert.ToInt32(fBaud) ; } Button3_Click(sender, e); //??????????? if ((fCmdRet == 0x35) | (fCmdRet == 0x30)) { MessageBox.Show("Serial Communication Error or Occup ied", "Information"); StaticClassReaderB.CloseSpecComPort(frmcomportindex) ; ComOpen = false; } } } else { temp = ComboBox_COM.SelectedItem.ToString(); temp = temp.Trim(); port = Convert.ToInt32(temp.Substring(3, temp.Length - 3)); for (i = 6; i >= 0; i--) { fBaud = Convert.ToByte(i); if (fBaud == 3)

continue; openresult = StaticClassReaderB.OpenComPort(port, ref fC omAdr, fBaud, ref frmcomportindex); fOpenComIndex = frmcomportindex; if (openresult == 0x35) { MessageBox.Show("COM Opened", "Information"); return; } if (openresult == 0) { ComOpen = true; Button3_Click(sender, e); if (fBaud > 3) { ComboBox_baud.SelectedIndex = Convert.ToInt32(fB aud - 2); } else { ComboBox_baud.SelectedIndex = Convert.ToInt32(fB aud); } if ((fCmdRet == 0x35) || (fCmdRet == 0x30)) { ComOpen = false; MessageBox.Show("Serial Communication Error or O ccupied", "Information"); StaticClassReaderB.CloseSpecComPort(frmcomportin dex); return; } RefreshStatus(); break; } } } } finally { Cursor = Cursors.Default; } if ((fOpenComIndex != -1) & (openresult != 0X35) & (openresult != 0X 30)) { ComboBox_AlreadyOpenCOM.Items.Add("COM" + Convert.ToString(fOpen ComIndex)); ComboBox_AlreadyOpenCOM.SelectedIndex = ComboBox_AlreadyOpenCOM. SelectedIndex + 1; button2.Enabled = true; ComOpen = true; } if ((fOpenComIndex == -1) && (openresult == 0x30)) MessageBox.Show("Serial Communication Error", "Information"); if ((ComboBox_AlreadyOpenCOM.Items.Count != 0) & (fOpenComIndex != 1) & (openresult != 0X35) & (openresult != 0X30) & (fCmdRet == 0))

{ temp = ComboBox_AlreadyOpenCOM.SelectedItem.ToString(); frmcomportindex = Convert.ToInt32(temp.Substring(3, temp.Length - 3)); } RefreshStatus(); } private void Button3_Click(object sender, EventArgs e) { byte[] TrType = new byte[2]; byte[] VersionInfo = new byte[2]; byte ReaderType = 0; byte ScanTime = 0; byte dmaxfre = 0; byte dminfre = 0; byte powerdBm = 0; byte FreBand = 0; ComboBox_PowerDbm.Items.Clear(); fCmdRet = StaticClassReaderB.GetReaderInformation(ref fComAdr, Versi onInfo, ref ReaderType, TrType, ref dmaxfre, ref dminfre, ref powerdBm, ref Scan Time, frmcomportindex); if (fCmdRet == 0) { if (VersionInfo[1] >= 30) { for (int i = 0; i < 31; i++) ComboBox_PowerDbm.Items.Add(Convert.ToString(i)); if (powerdBm > 30) ComboBox_PowerDbm.SelectedIndex = 30; else ComboBox_PowerDbm.SelectedIndex = powerdBm; } else { for (int i = 0; i < 19; i++) ComboBox_PowerDbm.Items.Add(Convert.ToString(i)); if (powerdBm > 18) ComboBox_PowerDbm.SelectedIndex = 18; else ComboBox_PowerDbm.SelectedIndex = powerdBm; } Edit_NewComAdr.Text = Convert.ToString(fComAdr, 16).PadLeft(2, ' 0'); ComboBox_scantime.SelectedIndex = ScanTime - 3; FreBand = Convert.ToByte(((dmaxfre & 0xc0) >> 4) | (dminfre >> 6 )); switch (FreBand) { case 0: {

fdminfre = 902.6 + (dminfre & 0x3F) * 0.4; fdmaxfre = 902.6 + (dmaxfre & 0x3F) * 0.4; } break; case 1: { fdminfre = 920.125 + (dminfre & 0x3F) * 0.25; fdmaxfre = 920.125 + (dmaxfre & 0x3F) * 0.25; } break; case 2: { fdminfre = 902.75 + (dminfre & 0x3F) * 0.5; fdmaxfre = 902.75 + (dmaxfre & 0x3F) * 0.5; } break; case 3: { fdminfre = 917.1 + (dminfre & 0x3F) * 0.2; fdmaxfre = 917.1 + (dmaxfre & 0x3F) * 0.2; } break; case 4: { 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; } AddCmdLog("GetReaderInformation", "GetReaderInformation", fCmdRet); } private void Button1_Click(object sender, EventArgs e) { byte aNewComAdr, powerDbm, dminfre, dmaxfre, scantime; string returninfo = ""; string returninfoDlg = ""; string setinfo; dminfre = 0; dmaxfre = 62; aNewComAdr = 0X00; fBaud = 5; scantime = 10; setinfo = " Recovery "; ComboBox_baud.SelectedIndex = 3; fCmdRet = StaticClassReaderB.WriteComAdr(ref fComAdr, ref aNewComAdr , frmcomportindex);

if (fCmdRet == 0x13) fComAdr = aNewComAdr; if (fCmdRet == 0) { fComAdr = aNewComAdr; returninfo = returninfo + setinfo + "Address Successfully"; } else if (fCmdRet == 0xEE) returninfo = returninfo + setinfo + "Address Response Command Er ror"; else { returninfo = returninfo + setinfo + "Address Fail"; returninfoDlg = returninfoDlg + setinfo + "Address Fail Command Response=0x" + Convert.ToString(fCmdRet) + "(" + GetReturnCodeDesc(fCmdR et) + ")"; } if (fCmdRet == 0) returninfo = returninfo + ",Power Success"; else if (fCmdRet == 0xEE) returninfo = returninfo + ",Power Response Command Error"; else { returninfo = returninfo + ",Power Fail"; returninfoDlg = returninfoDlg + " " + setinfo + "Power Fail Comm and Response=0x" + Convert.ToString(fCmdRet) + "(" + GetReturnCodeDesc(fCmdR et) + ")"; } fCmdRet = StaticClassReaderB.Writedfre(ref fComAdr, ref dmaxfre, ref dminfre, frmcomportindex); if (fCmdRet == 0) returninfo = returninfo + ",Frequency Success"; else if (fCmdRet == 0xEE) returninfo = returninfo + ",Frequency Response Command Error"; else { returninfo = returninfo + ",Frequency Fail"; returninfoDlg = returninfoDlg + " " + setinfo + "Frequency Fail Command Response=0x" + Convert.ToString(fCmdRet) + "(" + GetReturnCodeDesc(fCmdR et) + ")"; } fCmdRet = StaticClassReaderB.Writebaud(ref fComAdr, ref fBaud, frmco mportindex); if (fCmdRet == 0) returninfo = returninfo + ",Baud Rate else if (fCmdRet == 0xEE) returninfo = returninfo + ",Baud Rate else { returninfo = returninfo + ",Baud Rate returninfoDlg = returninfoDlg + " " + Command Response=0x" Success"; Response Command Error"; Fail"; setinfo + "Baud Rate Fail

+ Convert.ToString(fCmdRet) + "(" + GetReturnCodeDesc(fCmdR et) + ")"; } fCmdRet = StaticClassReaderB.WriteScanTime(ref fComAdr, ref scantime , frmcomportindex); if (fCmdRet == 0) returninfo = returninfo + ",InventoryScanTime Success"; else if (fCmdRet == 0xEE) returninfo = returninfo + ",InventoryScanTime Response Command E rror"; else { returninfo = returninfo + ",InventoryScanTime Fail"; returninfoDlg = returninfoDlg + " " + setinfo + "InventoryScanTi me Fail Command Response=0x" + Convert.ToString(fCmdRet) + "(" + GetReturnCodeDesc(fCmdR et) + ")"; } Button3_Click(sender, e); StatusBar1.Panels[0].Text = DateTime.Now.ToLongTimeString() + return info; if (returninfoDlg != "") MessageBox.Show(returninfoDlg, "Information"); } private void ComboBox_dfreSelect(object sender, EventArgs e) { if (CheckBox_SameFre.Checked) { ComboBox_dminfre.SelectedIndex = ComboBox_dmaxfre.SelectedIndex; } else if (ComboBox_dminfre.SelectedIndex > ComboBox_dmaxfre.SelectedI ndex) { ComboBox_dminfre.SelectedIndex = ComboBox_dmaxfre.SelectedIndex; MessageBox.Show("Min.Frequency is equal or lesser than Max.Frequ ency", "Error Information"); } } public void ChangeSubItem(ListViewItem ListItem, int subItemIndex, strin g ItemText) { if (subItemIndex == 1) { if (ItemText == "") { ListItem.SubItems[subItemIndex].Text = ItemText; if (ListItem.SubItems[subItemIndex + 2].Text == "") { ListItem.SubItems[subItemIndex + 2].Text = "1"; } else { ListItem.SubItems[subItemIndex + 2].Text = Convert.ToStr ing(Convert.ToInt32(ListItem.SubItems[subItemIndex + 2].Text) + 1); }

} else if (ListItem.SubItems[subItemIndex].Text != ItemText) { ListItem.SubItems[subItemIndex].Text = ItemText; ListItem.SubItems[subItemIndex + 2].Text = "1"; } else { ListItem.SubItems[subItemIndex + 2].Text = Convert.ToStr ing(Convert.ToInt32(ListItem.SubItems[subItemIndex + 2].Text) + 1); if ((Convert.ToUInt32(ListItem.SubItems[subItemIndex + 2 ].Text) > 9999)) ListItem.SubItems[subItemIndex + 2].Text = "1"; } } if (subItemIndex == 2) { if (ListItem.SubItems[subItemIndex].Text != ItemText) { ListItem.SubItems[subItemIndex].Text = ItemText; } } } private void button2_Click(object sender, EventArgs e) { if (this.CheckBox_TID.Checked) { if ((this.textBox4.Text.Length) != 2 || ((this.textBox5.Text.Len gth) != 2)) { StatusBar1.Panels[0].Text = "TID Parameter Error!"; return; } } Timer_Test_.Enabled = !Timer_Test_.Enabled; if (!Timer_Test_.Enabled) { this.textBox4.Enabled = true; this.textBox5.Enabled = true; this.CheckBox_TID.Enabled = true; AddCmdLog("Inventory", "Exit Query", 0); button2.Text = "Query Tag"; } else { this.textBox4.Enabled = false; this.textBox5.Enabled = false; this.CheckBox_TID.Enabled = false; this.ListView1_EPC.Items.Clear(); this.button2.Text = "Stop"; } } private void Inventory() { int i; int CardNum = 0;

int Totallen = 0; int EPClen, m; byte[] EPC = new byte[5000]; int CardIndex; string temps; string s, sEPC; bool isonlistview; fIsInventoryScan = true; byte AdrTID = 0; byte LenTID = 0; byte TIDFlag = 0; if (CheckBox_TID.Checked) { AdrTID = Convert.ToByte(this.textBox4.Text, 16); LenTID = Convert.ToByte(textBox5.Text, 16); TIDFlag = 1; } else { AdrTID = 0; LenTID = 0; TIDFlag = 0; } ListViewItem aListItem = new ListViewItem(); fCmdRet = StaticClassReaderB.Inventory_G2(ref fComAdr, AdrTID, LenTI D, TIDFlag, EPC, ref Totallen, ref CardNum, frmcomportindex); if ((fCmdRet == 1) | (fCmdRet == 2) | (fCmdRet == 3) | (fCmdRet == 4 ) | (fCmdRet == 0xFB))//???????, { byte[] daw = new byte[Totallen]; Array.Copy(EPC, daw, Totallen); temps = ByteArrayToHexString(daw); fInventory_EPC_List = temps; //???? m = 0; if (CardNum == 0) { fIsInventoryScan = false; return; } for (CardIndex = 0; CardIndex < CardNum; CardIndex++) { EPClen = daw[m]; sEPC = temps.Substring(m * 2 + 2, EPClen * 2); m = m + EPClen + 1; if (sEPC.Length != EPClen * 2) return; isonlistview = false; for (i = 0; i < this.ListView1_EPC.Items.Count; i++) { if (sEPC == this.ListView1_EPC.Items[i].SubItems[1].Text ) { aListItem = this.ListView1_EPC.Items[i]; ChangeSubItem(aListItem, 1, sEPC); isonlistview = true; } } if (!isonlistview) {

aListItem = this.ListView1_EPC.Items.Add((this.ListView1 _EPC.Items.Count + 1).ToString()); aListItem.SubItems.Add(""); aListItem.SubItems.Add(""); aListItem.SubItems.Add(""); s = sEPC; ChangeSubItem(aListItem, 1, s); s = (sEPC.Length / 2).ToString().PadLeft(2, '0'); ChangeSubItem(aListItem, 2, s); if (!CheckBox_TID.Checked) { } } } } fIsInventoryScan = false; if (fAppClosed) Close(); } private void Timer_Test__Tick(object sender, EventArgs e) { if (fIsInventoryScan) return; Inventory(); } } }

You might also like