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);
            }
        }
Exemple #3
0
        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();
            }
        }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
        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;
            }
        }
Exemple #6
0
        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
                }
            }
        }
Exemple #8
0
        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);
            }
        }
Exemple #9
0
        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;
            }
        }