Sie sind auf Seite 1von 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(); } } }

Das könnte Ihnen auch gefallen