private void AnalyData(Reader.MessageTran msgTran) { try { if (msgTran.PacketType != 0xA0) { return; } switch (msgTran.Cmd) { case 0x81: ProcessReadTag(msgTran); break; case 0x89: ProcessInventoryReal(msgTran); break; default: break; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void ProcessInventoryReal(Reader.MessageTran msgTran) { string strCmd = ""; strCmd = "Real-time inventory"; string strErrorCode = string.Empty; if (msgTran.AryData.Length == 1) //You receive an error message packet { strErrorCode = CCommondMethod.FormatErrorCode(msgTran.AryData[0]); string strLog = strCmd + "Failure, failure reasons: " + strErrorCode; m_curSetting.btRealInventoryFlag = 100; //The reader return inventory error //WriteLog(RecordLogBox, strLog, 1); } else if (msgTran.AryData.Length == 7) //End packet received command { m_curInventoryBuffer.nReadRate = Convert.ToInt32(msgTran.AryData[1]) * 256 + Convert.ToInt32(msgTran.AryData[2]); m_curInventoryBuffer.nDataCount = Convert.ToInt32(msgTran.AryData[3]) * 256 * 256 * 256 + Convert.ToInt32(msgTran.AryData[4]) * 256 * 256 + Convert.ToInt32(msgTran.AryData[5]) * 256 + Convert.ToInt32(msgTran.AryData[6]); m_curSetting.btRealInventoryFlag = 1; //Inventory command ends successfully received packet //WriteLog(RecordLogBox, strCmd, 0); } else //Receive real-time tag data { m_nTotal++; int nLength = msgTran.AryData.Length; int nEpcLength = nLength - 4; RealTimeTagData tagData = new RealTimeTagData(); string strEPC = CCommondMethod.ByteArrayToString(msgTran.AryData, 3, nEpcLength); string strPC = CCommondMethod.ByteArrayToString(msgTran.AryData, 1, 2); string strRSSI = (msgTran.AryData[nLength - 1] - 129).ToString() + " dBm"; byte btTemp = msgTran.AryData[0]; byte btAntId = (byte)((btTemp & 0x03) + 1); byte btFreq = (byte)(btTemp >> 2); // string strFreq = GetFreqString(btFreq) + " MHz"; tagData.strEpc = strEPC; tagData.strPc = strPC; tagData.strRssi = strRSSI; //tagData.strCarrierFrequency = strFreq; tagData.btAntId = btAntId; RealTimeTagDataList.Add(tagData); } }
private void ProcessSetWorkAntenna(Reader.MessageTran msgTran) { ReaderSetting m_curSetting = new ReaderSetting(); int intCurrentAnt = 0; intCurrentAnt = m_curSetting.btWorkAntenna + 1; string strCmd = "Successfully set working antenna, current working antenna : Ant " + intCurrentAnt.ToString(); string strErrorCode = string.Empty; if (msgTran.AryData.Length == 1) { if (msgTran.AryData[0] == 0x10) { m_curSetting.btReadId = msgTran.ReadId; Console.WriteLine(strCmd, 0); //校验是否盘存操作 if (m_bInventory) { RunLoopInventroy(); } return; } else { strErrorCode = CCommondMethod.FormatErrorCode(msgTran.AryData[0]); } } else { strErrorCode = "Unknown error"; } string strLog = strCmd + "failed , due to: " + strErrorCode; Console.WriteLine(strLog); if (m_bInventory) { m_curInventoryBuffer.nCommond = 1; m_curInventoryBuffer.dtEndInventory = DateTime.Now; RunLoopInventroy(); } }
private void ProcessInventoryReal(Reader.MessageTran msgTran) { string strCmd = ""; strCmd = "Inventario en tiempo real"; string strErrorCode = string.Empty; if (msgTran.AryData.Length == 1) // Recibir paquete de mensaje de error { strErrorCode = CCommondMethod.FormatErrorCode(msgTran.AryData[0]); string strLog = strCmd + "Fracaso, razón del fracaso:" + strErrorCode; m_curSetting.btRealInventoryFlag = 100; //读写器返回盘存错误 } else if (msgTran.AryData.Length == 7) //收到命令结束数据包 { m_curInventoryBuffer.nReadRate = Convert.ToInt32(msgTran.AryData[1]) * 256 + Convert.ToInt32(msgTran.AryData[2]); m_curInventoryBuffer.nDataCount = Convert.ToInt32(msgTran.AryData[3]) * 256 * 256 * 256 + Convert.ToInt32(msgTran.AryData[4]) * 256 * 256 + Convert.ToInt32(msgTran.AryData[5]) * 256 + Convert.ToInt32(msgTran.AryData[6]); m_curSetting.btRealInventoryFlag = 1; //成功收到盘存命令结束数据包 } else //收到实时标签数据信息 { m_nTotal++; int nLength = msgTran.AryData.Length; int nEpcLength = nLength - 4; RealTimeTagData tagData = new RealTimeTagData(); string strEPC = CCommondMethod.ByteArrayToString(msgTran.AryData, 3, nEpcLength); string strPC = CCommondMethod.ByteArrayToString(msgTran.AryData, 1, 2); string strRSSI = (msgTran.AryData[nLength - 1] - 129).ToString() + " dBm"; byte btTemp = msgTran.AryData[0]; byte btAntId = (byte)((btTemp & 0x03) + 1); byte btFreq = (byte)(btTemp >> 2); tagData.strEpc = strEPC; tagData.strPc = strPC; tagData.strRssi = strRSSI; tagData.btAntId = btAntId; RealTimeTagDataList.Add(tagData); } }
private void AnalyData(Reader.MessageTran msgTran) { if (msgTran.PacketType != 0xA0) { return; } switch (msgTran.Cmd) { case 0x81: ProcessReadTag(msgTran); break; case 0x89: ProcessInventoryReal(msgTran); break; default: break; } }
private void ProcessReadTag(Reader.MessageTran msgTran) { string strCmd = "Leer etiqueta"; string strErrorCode = string.Empty; if (msgTran.AryData.Length == 1) { strErrorCode = CCommondMethod.FormatErrorCode(msgTran.AryData[0]); string strLog = strCmd + "Fracaso, razón del fracaso: " + strErrorCode; m_curSetting.btRealInventoryFlag = 100; // reader devuelve un mensaje de error } else { RealTimeTagData tagData = new RealTimeTagData(); int nLen = msgTran.AryData.Length; int nDataLen = Convert.ToInt32(msgTran.AryData[nLen - 3]); int nEpcLen = Convert.ToInt32(msgTran.AryData[2]) - nDataLen - 4; string strPC = CCommondMethod.ByteArrayToString(msgTran.AryData, 3, 2); string strEPC = CCommondMethod.ByteArrayToString(msgTran.AryData, 5, nEpcLen); string strCRC = CCommondMethod.ByteArrayToString(msgTran.AryData, 5 + nEpcLen, 2); string strData = CCommondMethod.ByteArrayToString(msgTran.AryData, 7 + nEpcLen, nDataLen); byte byTemp = msgTran.AryData[nLen - 2]; byte byAntId = (byte)((byTemp & 0x03) + 1); tagData.strEpc = strEPC; tagData.strPc = strPC; tagData.strTid = strData; tagData.btAntId = byAntId; RealTimeTagDataList.Add(tagData); int nReaddataCount = msgTran.AryData[0] * 255 + msgTran.AryData[1]; // El número total de datos if (RealTimeTagDataList.Count == nReaddataCount) // Recibe todos los datos { m_curSetting.btRealInventoryFlag = 1; // reader devuelve un mensaje de error } } }
private void ProcessReadTag(Reader.MessageTran msgTran) { string strCmd = "Reading the label"; string strErrorCode = string.Empty; if (msgTran.AryData.Length == 1) { strErrorCode = CCommondMethod.FormatErrorCode(msgTran.AryData[0]); string strLog = strCmd + "Failure, failure reasons:" + strErrorCode; m_curSetting.btRealInventoryFlag = 100; //The reader returns the error message } else { RealTimeTagData tagData = new RealTimeTagData(); int nLen = msgTran.AryData.Length; int nDataLen = Convert.ToInt32(msgTran.AryData[nLen - 3]); int nEpcLen = Convert.ToInt32(msgTran.AryData[2]) - nDataLen - 4; string strPC = CCommondMethod.ByteArrayToString(msgTran.AryData, 3, 2); string strEPC = CCommondMethod.ByteArrayToString(msgTran.AryData, 5, nEpcLen); string strCRC = CCommondMethod.ByteArrayToString(msgTran.AryData, 5 + nEpcLen, 2); string strData = CCommondMethod.ByteArrayToString(msgTran.AryData, 7 + nEpcLen, nDataLen); byte byTemp = msgTran.AryData[nLen - 2]; byte byAntId = (byte)((byTemp & 0x03) + 1); tagData.strEpc = strEPC; tagData.strPc = strPC; tagData.strTid = strData; tagData.btAntId = byAntId; RealTimeTagDataList.Add(tagData); int nReaddataCount = msgTran.AryData[0] * 255 + msgTran.AryData[1]; //The total number of data if (RealTimeTagDataList.Count == nReaddataCount) //All data received { m_curSetting.btRealInventoryFlag = 1; //The reader returns the error message } } }
private void ProcessInventoryReal(Reader.MessageTran msgTran) { //Console.WriteLine("ProcessInventoryReal started"); string strCmd = ""; if (msgTran.Cmd == 0x89) { strCmd = "Real time mode inventory "; } if (msgTran.Cmd == 0x8B) { strCmd = "Customized Session and Inventoried Flag inventory "; } string strErrorCode = string.Empty; if (msgTran.AryData.Length == 1) { strErrorCode = CCommondMethod.FormatErrorCode(msgTran.AryData[0]); string strLog = strCmd + " failed, due to: " + strErrorCode; Console.WriteLine(strLog, 1); RefreshInventoryReal(0x00); RunLoopInventroy(); } else if (msgTran.AryData.Length == 7) { m_curInventoryBuffer.nReadRate = Convert.ToInt32(msgTran.AryData[1]) * 256 + Convert.ToInt32(msgTran.AryData[2]); m_curInventoryBuffer.nDataCount = Convert.ToInt32(msgTran.AryData[3]) * 256 * 256 * 256 + Convert.ToInt32(msgTran.AryData[4]) * 256 * 256 + Convert.ToInt32(msgTran.AryData[5]) * 256 + Convert.ToInt32(msgTran.AryData[6]); Console.WriteLine(strCmd, 0); RefreshInventoryReal(0x01); RunLoopInventroy(); } else { // m_nTotal++; int nLength = msgTran.AryData.Length; int nEpcLength = nLength - 4; //增加盘存明细表 //if (msgTran.AryData[3] == 0x00) //{ // MessageBox.Show(""); //} string strEPC = CCommondMethod.ByteArrayToString(msgTran.AryData, 3, nEpcLength); string strPC = CCommondMethod.ByteArrayToString(msgTran.AryData, 1, 2); string strRSSI = msgTran.AryData[nLength - 1].ToString(); //SetMaxMinRSSI(Convert.ToInt32(msgTran.AryData[nLength - 1])); m_curInventoryBuffer.nMaxRSSI = -79; m_curInventoryBuffer.nMinRSSI = -18; byte btTemp = msgTran.AryData[0]; byte btAntId = (byte)((btTemp & 0x03) + 1); m_curInventoryBuffer.nCurrentAnt = btAntId; string strAntId = btAntId.ToString(); byte btFreq = (byte)(btTemp >> 2); string strFreq = GetFreqString(btFreq); //DataRow row = m_curInventoryBuffer.dtTagDetailTable.NewRow(); //row[0] = strEPC; //row[1] = strRSSI; //row[2] = strAntId; //row[3] = strFreq; //m_curInventoryBuffer.dtTagDetailTable.Rows.Add(row); //m_curInventoryBuffer.dtTagDetailTable.AcceptChanges(); ////增加标签表 //DataRow[] drsDetail = m_curInventoryBuffer.dtTagDetailTable.Select(string.Format("COLEPC = '{0}'", strEPC)); //int nDetailCount = drsDetail.Length; DataRow[] drs = m_curInventoryBuffer.dtTagTable.Select(string.Format("COLEPC = '{0}'", strEPC)); if (drs.Length == 0) { DataRow row1 = m_curInventoryBuffer.dtTagTable.NewRow(); row1[0] = strPC; row1[2] = strEPC; row1[4] = strRSSI; row1[5] = "1"; row1[6] = strFreq; Console.WriteLine($" From A: \nstrPC: {strPC}, strEPC: {strEPC},Count: 1 strRSSI: {strRSSI} strFreq: {strFreq}"); m_curInventoryBuffer.dtTagTable.Rows.Add(row1); m_curInventoryBuffer.dtTagTable.AcceptChanges(); } else { foreach (DataRow dr in drs) { dr.BeginEdit(); dr[4] = strRSSI; dr[5] = (Convert.ToInt32(dr[5]) + 1).ToString(); dr[6] = strFreq; Console.WriteLine($" From B: \nstrPC: {strPC}, strEPC: {strEPC}, Count: {(Convert.ToInt32(dr[5]) + 1).ToString()} strRSSI: {strRSSI} strFreq: {strFreq}"); dr.EndEdit(); } m_curInventoryBuffer.dtTagTable.AcceptChanges(); } m_curInventoryBuffer.dtEndInventory = DateTime.Now; RefreshInventoryReal(0x89); } }
private void AnalyData(Reader.MessageTran msgTran) { //Console.WriteLine("AnalyData started"); //Console.WriteLine("AnalyData Packate type : " + msgTran.PacketType.ToString()); //Console.WriteLine("AnalyData Cmd type : " + msgTran.Cmd.ToString()); if (msgTran.PacketType != 0xA0) { return; } switch (msgTran.Cmd) { //case 0x69: // ProcessSetProfile(msgTran); // break; //case 0x6A: // ProcessGetProfile(msgTran); // break; //case 0x71: // ProcessSetUartBaudrate(msgTran); // break; //case 0x72: // ProcessGetFirmwareVersion(msgTran); // break; //case 0x73: // ProcessSetReadAddress(msgTran); // break; case 0x74: ProcessSetWorkAntenna(msgTran); break; //case 0x75: // ProcessGetWorkAntenna(msgTran); // break; //case 0x76: // ProcessSetOutputPower(msgTran); // break; //case 0x77: // ProcessGetOutputPower(msgTran); // break; //case 0x78: // ProcessSetFrequencyRegion(msgTran); // break; //case 0x79: // ProcessGetFrequencyRegion(msgTran); // break; //case 0x7A: // ProcessSetBeeperMode(msgTran); // break; //case 0x7B: // ProcessGetReaderTemperature(msgTran); // break; //case 0x7C: // ProcessSetDrmMode(msgTran); // break; //case 0x7D: // ProcessGetDrmMode(msgTran); // break; //case 0x7E: // ProcessGetImpedanceMatch(msgTran); // break; //case 0x60: // ProcessReadGpioValue(msgTran); // break; //case 0x61: // ProcessWriteGpioValue(msgTran); // break; //case 0x62: // ProcessSetAntDetector(msgTran); // break; //case 0x63: // ProcessGetAntDetector(msgTran); // break; //case 0x67: // ProcessSetReaderIdentifier(msgTran); // break; //case 0x68: // ProcessGetReaderIdentifier(msgTran); // break; //case 0x80: // ProcessInventory(msgTran); // break; //case 0x81: // ProcessReadTag(msgTran); // break; //case 0x82: // ProcessWriteTag(msgTran); // break; //case 0x83: // ProcessLockTag(msgTran); // break; //case 0x84: // ProcessKillTag(msgTran); // break; //case 0x85: // ProcessSetAccessEpcMatch(msgTran); // break; //case 0x86: // ProcessGetAccessEpcMatch(msgTran); // break; case 0x89: case 0x8B: ProcessInventoryReal(msgTran); break; case 0x8A: //ProcessFastSwitch(msgTran); break; case 0x8D: //ProcessSetMonzaStatus(msgTran); break; //case 0x8E: // ProcessGetMonzaStatus(msgTran); // break; //case 0x90: // ProcessGetInventoryBuffer(msgTran); // break; //case 0x91: // ProcessGetAndResetInventoryBuffer(msgTran); // break; //case 0x92: // ProcessGetInventoryBufferTagCount(msgTran); // break; //case 0x93: // ProcessResetInventoryBuffer(msgTran); // break; //case 0xb0: // ProcessInventoryISO18000(msgTran); // break; //case 0xb1: // ProcessReadTagISO18000(msgTran); // break; //case 0xb2: // ProcessWriteTagISO18000(msgTran); // break; //case 0xb3: // ProcessLockTagISO18000(msgTran); // break; //case 0xb4: // ProcessQueryISO18000(msgTran); // break; default: break; } }