예제 #1
0
파일: BpsMng.cs 프로젝트: beecomiot/BPSTool
 public BpsMng()
 {
     uartMngObj = UartMng.GetUartMngInstance();
     // bpsRecvHandler = BPSRecvIdleHandler;
     bpsErrorHandler         = BPSErrorIdleHandler;
     bpsSendDebugHandler     = null;
     bpsRecvDebugHandler     = null;
     serialDataReceivedEvent = new SerialDataReceivedEventHandler(UartDataeceivedCallback);
     uartMngObj.ReadCallbackAdd(serialDataReceivedEvent);
     serialErrorEvent = new SerialErrorReceivedEventHandler(UartErrorCallback);
     uartMngObj.ErrorCallbackAdd(serialErrorEvent);
     RecvBuffer = new List <byte>();
     BpsHeaderClear();
     enBPSParseStep = EnBPSParseStep.EN_BPS_PARSE_HEADER;
     remainLength   = 0;
 }
예제 #2
0
파일: BpsMng.cs 프로젝트: beecomiot/BPSTool
        public bool UartOpen(string port, int baudrate)
        {
            bool ret = false;

            try
            {
                enBPSParseStep = EnBPSParseStep.EN_BPS_PARSE_HEADER;
                BpsHeaderClear();

                uartMngObj.Baudrate = baudrate;
                ret = uartMngObj.Open(port);
            }
            catch (Exception e)
            {
                ret = false;
            }

            return(ret);
        }
예제 #3
0
파일: BpsMng.cs 프로젝트: beecomiot/BPSTool
        private bool BpsParseGeneral(List <Byte> msg, ref int index)
        {
            bool ret = false;
            int  i;

            for (i = index; i < msg.Count; i++)
            {
                index = i + 1;
                byte dataTmp = msg[i];
                switch (enBPSParseStep)
                {
                case EnBPSParseStep.EN_BPS_PARSE_HEADER:
                    if (RecvBuffer[0] == BpsUtils.BPSHeader[0] && dataTmp == BpsUtils.BPSHeader[1])
                    {
                        RecvBuffer.Add(dataTmp);
                        enBPSParseStep = EnBPSParseStep.EN_BPS_PARSE_VERSION;
                    }
                    else
                    {
                        RecvBuffer[0] = dataTmp;
                    }
                    break;

                case EnBPSParseStep.EN_BPS_PARSE_VERSION:
                    if (dataTmp <= BpsUtils.BPSVersion[0])
                    {
                        RecvBuffer.Add(dataTmp);
                        enBPSParseStep = EnBPSParseStep.EN_BPS_PARSE_ADDR;
                    }
                    else
                    {
                        BpsHeaderClear();
                        enBPSParseStep = EnBPSParseStep.EN_BPS_PARSE_HEADER;
                    }
                    break;

                case EnBPSParseStep.EN_BPS_PARSE_ADDR:
                    RecvBuffer.Add(dataTmp);
                    enBPSParseStep = EnBPSParseStep.EN_BPS_PARSE_RMN_LEN1;
                    break;

                case EnBPSParseStep.EN_BPS_PARSE_RMN_LEN1:
                    RecvBuffer.Add(dataTmp);
                    enBPSParseStep = EnBPSParseStep.EN_BPS_PARSE_RMN_LEN2;
                    break;

                case EnBPSParseStep.EN_BPS_PARSE_RMN_LEN2:
                    RecvBuffer.Add(dataTmp);
                    remainLength = ((RecvBuffer[RecvBuffer.Count - 2] & 0xFF) << 8) + (dataTmp & 0xFF);
                    if (remainLength < BpsUtils.BPS_CMD_WORD_SIZE)
                    {
                        BpsHeaderClear();
                        enBPSParseStep = EnBPSParseStep.EN_BPS_PARSE_HEADER;
                    }
                    else
                    {
                        enBPSParseStep = EnBPSParseStep.EN_BPS_PARSE_DATA;
                    }
                    break;

                case EnBPSParseStep.EN_BPS_PARSE_DATA:
                    RecvBuffer.Add(dataTmp);
                    if (0 == --remainLength)
                    {
                        enBPSParseStep = EnBPSParseStep.EN_BPS_PARSE_CHKSUM;
                    }
                    break;

                case EnBPSParseStep.EN_BPS_PARSE_CHKSUM:
                    RecvBuffer.Add(dataTmp);
                    if (IsBPSChksumOK(RecvBuffer))
                    {
                        ret            = true;
                        enBPSParseStep = EnBPSParseStep.EN_BPS_PARSE_HEADER;
                        return(ret);
                    }
                    BpsHeaderClear();
                    enBPSParseStep = EnBPSParseStep.EN_BPS_PARSE_HEADER;
                    break;

                default:
                    BpsHeaderClear();
                    enBPSParseStep = EnBPSParseStep.EN_BPS_PARSE_HEADER;
                    break;
                }
            }

            return(ret);
        }