command Unup(myreceivebitobj funobj)
        {
            if (DT == DataType.custom)
            {
                int bytesRead = alldata.Length;

                if (bytesRead == 0)
                {
                    return(null);
                }
                byte[] tempbtye = new byte[bytesRead];

                Array.Copy(alldata, tempbtye, tempbtye.Length);
                funobj?.Invoke(0x0, tempbtye, this);

                alldata = new byte[0];
                command command = new command();
                command.comand = 0;
                command.data   = tempbtye;
                return(command);
            }

            else if (DT == DataType.bytes)
            {
                return(Unupbyte(funobj));
            }
            return(null);
        }
        command Unupbyte(myreceivebitobj funobj)
        {
            try
            {
lb0x99:
                int bytesRead = alldata.Length;

                if (bytesRead == 0)
                {
                    return(null);
                }

                byte[] tempbtye = new byte[bytesRead];

                Array.Copy(alldata, tempbtye, tempbtye.Length);


                if (bytesRead > 2)
                {
                    int a = tempbtye[1];
                    if (a == 0)
                    {
                    }
                    if (bytesRead > 4 + a)
                    {
                        int len = 0;

                        byte[] bbcrc = new byte[4 + a];
                        Array.Copy(tempbtye, 0, bbcrc, 0, 4 + a);
                        if (CRC.DataCRC(ref bbcrc, 4 + a))
                        {
                            byte[] bb = new byte[a];
                            Array.Copy(tempbtye, 2, bb, 0, a);
                            len = ConvertToInt(bb);
                        }
                        else
                        {
                            byte[] temps = new byte[tempbtye.Length - 1];
                            Array.Copy(tempbtye, 1, temps, 0, temps.Length);
                            alldata = temps;
                            //return;
                            goto lb0x99;
                        }
                        try
                        {
                            if ((len + 4 + a) > tempbtye.Length)
                            {
                                return(null);
                            }
                            else if (tempbtye.Length > (len + 4 + a))
                            {
                                byte[] temps = new byte[tempbtye.Length - (len + 4 + a)];
                                Array.Copy(tempbtye, (len + 4 + a), temps, 0, temps.Length);
                                alldata = temps;
                                //return;
                                //  goto lb0x99;
                            }
                            else if (tempbtye.Length == (len + 4 + a))
                            {
                                alldata = new byte[0];
                            }
                        }
                        catch (Exception e)
                        {
                            // ErrorMge?.Invoke(3, e.StackTrace + "unup001:" + e.Message + "2 + a" + 2 + a + "---len" + len + "--tempbtye" + tempbtye.Length);
                            alldata = new byte[0];
                        }
                        try
                        {
                            byte[] bs = new byte[len];
                            Array.Copy(tempbtye, (4 + a), bs, 0, bs.Length);
                            if (tempbtye[0] == 0x99)
                            {
                                return(null);
                            }

                            funobj?.Invoke(tempbtye[0], bs, this);
                            command command = new command();
                            command.comand = tempbtye[0];
                            command.data   = bs;
                            if (command.comand == 0)
                            {
                            }
                            return(command);
                        }
                        catch (Exception e)
                        {
                            //  ErrorMge?.Invoke(3, e.StackTrace + "unup122:" + e.Message);
                            alldata = new byte[0];
                        }
                    }
                    else
                    {
                        return(null);
                    }
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception e)
            {
                alldata = new byte[0];
                return(null);
            }
            return(null);
        }