UpdateFWTool.Interface.ReceiveData C# (CSharp) Method

ReceiveData() protected method

protected ReceiveData ( ENUM_CMD r_TxCmd, byte &r_btData ) : bool
r_TxCmd ENUM_CMD
r_btData byte
return bool
        protected bool ReceiveData(
                ENUM_CMD r_TxCmd,
            ref byte[]   r_btData
        )
        {
            ENUM_CMD result = ENUM_CMD.NOTHING;
            byte []  rdBuf  = new byte[128];
            Array.Clear(rdBuf, 0, rdBuf.Length);

            //Reset Receive flow
            ResetRxFlow(ENMU_PKT_TYPE.UPDATE_COMMON);

            while (result != r_TxCmd)
            {
                result = this.Regular(  ref rdBuf, true);

            #if _TRACE_OUT_PUT
                PrintMagToTxt("ReceiveData");
            #endif

                if (result == ENUM_CMD.TIME_OUT) //Timeout
                {

            #if _TRACE_OUT_PUT
                    PrintMagToTxt("TIME OUT ReceiveData");
            #endif

                    //Try to connect the device again
                    clsPacket.TRANS_API_Close();
                    this.LinkDevice();

                    return false;
                }

                TimeBeginPeriod(1);
                System.Threading.Thread.Sleep( 5 );
                TimeEndPeriod(1);
            }

            //Data ~ Data over  //only copy Data
            int Length = ENMU_UPDATE_INDEX.PKT_CRC - ENMU_UPDATE_INDEX.PKT_DATA;

            Array.Copy( rdBuf, (int)ENMU_UPDATE_INDEX.PKT_DATA,
                        r_btData, 0,
                        Length);

            return true;
        }