public void UnJump()//соленоид выкл
 {
     //убираем биты с 7 позиции
     m[1] = TestPlugin.unsetbit(m[1], 7);
     m[0] = TestPlugin.unsetbit(m[0], 7);
     TestPlugin.SetMessage(m);
     Debug.Log("Произошла отправка");
 }
 public void Jump()//соленоид вкл
 {
     //задаём на 7 позиции биты
     m[1] = TestPlugin.unsetbit(m[1], 7);
     m[0] = TestPlugin.unsetbit(m[0], 7);
     m[1] = TestPlugin.setbit(m[1], 7);
     m[0] = TestPlugin.setbit(m[0], 7);
     TestPlugin.SetMessage(m);
     Debug.Log("Произошла отправка");
 }
    public void MessageCoof()
    {
        aB = new byte[9];
        try
        {
            int   ck = 0;
            float f1, f2, f3;
            f1 = Convert.ToSingle(inputField1.text);
            f2 = Convert.ToSingle(inputField2.text);
            f3 = Convert.ToSingle(inputField3.text);
            string[] s;
            if (((int)f1) == f1)
            {
                aB[0] = (byte)f1;
                aB[1] = 0;
                aB[2] = 0;
            }
            else
            {
                s = inputField1.text.Split('.');

                pre    = s[0];
                post1  = s[1][0].ToString() + s[1][1].ToString();
                post2  = s[1][2].ToString() + s[1][3].ToString();
                preB   = Convert.ToByte(pre);
                post1B = Convert.ToByte(post1);
                post2B = Convert.ToByte(post2);
                aB[0]  = preB;
                aB[1]  = post1B;
                aB[2]  = post2B;
            }
            if (((int)f2) == f2)
            {
                aB[3] = (byte)f2;
                aB[4] = 0;
                aB[5] = 0;
            }
            else
            {
                s = inputField2.text.Split('.');

                pre    = s[0];
                post1  = s[1][0].ToString() + s[1][1].ToString();
                post2  = s[1][2].ToString() + s[1][3].ToString();
                preB   = Convert.ToByte(pre);
                post1B = Convert.ToByte(post1);
                post2B = Convert.ToByte(post2);
                aB[3]  = preB;
                aB[4]  = post1B;
                aB[5]  = post2B;
            }
            if (((int)f3) == f3)
            {
                aB[6] = (byte)f3;
                aB[7] = 0;
                aB[8] = 0;
            }
            else
            {
                s = inputField3.text.Split('.');

                pre    = s[0];
                post1  = s[1][0].ToString() + s[1][1].ToString();
                post2  = s[1][2].ToString() + s[1][3].ToString();
                preB   = Convert.ToByte(pre);
                post1B = Convert.ToByte(post1);
                post2B = Convert.ToByte(post2);
                aB[6]  = preB;
                aB[7]  = post1B;
                aB[8]  = post2B;
            }
            TestPlugin.SetMessage(aB);//отправка
        }
        catch (Exception e)
        {
            Debug.LogError(e.Message + " " + e.StackTrace);
        }
    }
    public void CalcJoystic()         //расчёт байтов
    {
        yF = Mathf.Abs((int)force.y); //считываем с вертикального джойстика и делаем модуль полученного числа


        xF = Mathf.Abs((int)force.x);       //считываем с горизонтального джойстика и делаем модуль полученного числа

        if (yF > 0)                         //если больше нуля, то проводим следующие операции
        {
            yF += 31;                       //прибавляем 31(до минимума чтобы догнать по мощи)
            yF  = Mathf.Clamp(yF, 31, 255); //смотрим, чтобы не вышло за пределы, в противном случае, ставим один из пределов в качестве значения, если меньше 31, то ставим 31, если больше 255, ставим 255
        }
        if (xF > 0)                         //так же как и сверху, только для горизонта
        {
            xF += 31;
            xF  = Mathf.Clamp(xF, 31, 255);
        }

        if (force.x > 0 & force.y != 0) //если горизонт больше 0, т.е. вправо, и верткаль не равна нулю, т.е. едем вперёд/назад
        {
            r  = (int)(xF * 0.5f);      //т.к. у нас это поворот, то умножаем на половину, дабы скорость поворота правого движка, была в два раза меньше левого, для поворота.
            r  = (int)(r * 0.25f);      //умножаем так же оба движка на 1/4, для того, чтобы вместилось значение в 6 бит(тут правый)
            yF = (int)(yF * 0.25f);     //левый
            for (int i = 0; i < 6; i++) //в цикле проходимся по битам из переменных выше и заносим их в массив байтов (мощность движков)
            {
                if (TestPlugin.checkbit((byte)r, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                }
                if (TestPlugin.checkbit((byte)(yF), i) == 1)
                {
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }
            if (force.y > 0)//направление, если вперёд, то устанавливаем биты, иначе снимаем
            {
                m[0] = TestPlugin.setbit(m[0], 6);
                m[1] = TestPlugin.setbit(m[1], 6);
            }
            else
            {
                m[0] = TestPlugin.unsetbit(m[0], 6);
                m[1] = TestPlugin.unsetbit(m[1], 6);
            }
        }
        else if (force.x < 0 & force.y != 0)//аналогично вышестоящему коду, только наоборот
        {
            l  = (int)(xF * 0.5f);
            l  = (int)(l * 0.25f);
            yF = (int)(yF * 0.25f);
            for (int i = 0; i < 6; i++)
            {
                if (TestPlugin.checkbit((byte)yF, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                }
                if (TestPlugin.checkbit((byte)(l), i) == 1)
                {
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }
            if (force.y > 0)
            {
                m[0] = TestPlugin.setbit(m[0], 6);
                m[1] = TestPlugin.setbit(m[1], 6);
            }
            else
            {
                m[0] = TestPlugin.unsetbit(m[0], 6);
                m[1] = TestPlugin.unsetbit(m[1], 6);
            }
        }
        else if (force.x > 0 & force.y == 0) //если только горизонт, вправо
        {
            r = xF;                          //присваиваем горизонт переменной
            r = (int)(r * 0.25f);            //делим на 4
            for (int i = 0; i < 6; i++)      //так же мощность движкам задаём
            {
                if (TestPlugin.checkbit((byte)r, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }

            m[0] = TestPlugin.unsetbit(m[0], 6); //на всякий очищаем биты, и ставим на левый, направление назад
            m[1] = TestPlugin.unsetbit(m[1], 6);
            m[1] = TestPlugin.setbit(m[1], 6);   //устанавливаем, на правый мотор направление вперёд
        }
        else if (force.x < 0 & force.y == 0)     //аналогично тому, что выше, только наоборот
        {
            l = xF;
            l = (int)(l * 0.25f);
            for (int i = 0; i < 6; i++)
            {
                if (TestPlugin.checkbit((byte)l, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }

            m[0] = TestPlugin.unsetbit(m[0], 6);
            m[1] = TestPlugin.unsetbit(m[1], 6);
            m[0] = TestPlugin.setbit(m[0], 6);
        }
        else//если только вертикаль
        {
            yF = (int)(yF * 0.25f);//вертикаль присваиваем переменной
            for (int i = 0; i < 6; i++)//задаём мощь движкам
            {
                if (TestPlugin.checkbit((byte)yF, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }
            //задаём ориентацию движкам
            if (force.y > 0)
            {
                m[0] = TestPlugin.setbit(m[0], 6);
                m[1] = TestPlugin.setbit(m[1], 6);
            }
            else
            {
                m[0] = TestPlugin.unsetbit(m[0], 6);
                m[1] = TestPlugin.unsetbit(m[1], 6);
            }
        }

        TestPlugin.SetMessage(m);//отправка
        Debug.Log("Произошла отправка");
    }
    public void VerticalJoyStic()
    {
        yF = Mathf.Abs((int)force.y);   //считываем с вертикального джойстика и делаем модуль полученного числа
        xF = Mathf.Abs((int)force.x);   //считываем с горизонтального джойстика и делаем модуль полученного числа
        if (force.x > 0 & force.y != 0) //если горизонт больше 0, т.е. вправо, и верткаль не равна нулю, т.е. едем вперёд/назад
        {
            xF = (int)convert(xF, 0, 255, yF, 0);
            xF = (int)(xF * 0.25f);
            yF = (int)(yF * 0.25f);     //вертикаль присваиваем переменной
            for (int i = 0; i < 6; i++) //задаём мощь движкам
            {
                if (TestPlugin.checkbit((byte)xF, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                }
                if (TestPlugin.checkbit((byte)yF, i) == 1)
                {
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }
            //задаём ориентацию движкам
            if (force.y > 0)
            {
                m[0] = TestPlugin.setbit(m[0], 6);
                m[1] = TestPlugin.setbit(m[1], 6);
            }
            else
            {
                m[0] = TestPlugin.unsetbit(m[0], 6);
                m[1] = TestPlugin.unsetbit(m[1], 6);
            }
        }
        else if (force.x < 0 & force.y != 0)//аналогично вышестоящему коду, только наоборот
        {
            xF = (int)convert(xF, 0, 255, yF, 0);
            xF = (int)(xF * 0.25f);
            yF = (int)(yF * 0.25f);     //вертикаль присваиваем переменной
            for (int i = 0; i < 6; i++) //задаём мощь движкам
            {
                if (TestPlugin.checkbit((byte)yF, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                }
                if (TestPlugin.checkbit((byte)xF, i) == 1)
                {
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }
            //задаём ориентацию движкам
            if (force.y > 0)
            {
                m[0] = TestPlugin.setbit(m[0], 6);
                m[1] = TestPlugin.setbit(m[1], 6);
            }
            else
            {
                m[0] = TestPlugin.unsetbit(m[0], 6);
                m[1] = TestPlugin.unsetbit(m[1], 6);
            }
        }
        else if (force.x > 0 & force.y == 0) //если только горизонт, вправо
        {
            r = xF;                          //присваиваем горизонт переменной
            r = (int)(r * 0.25f);            //делим на 4
            for (int i = 0; i < 6; i++)      //так же мощность движкам задаём
            {
                if (TestPlugin.checkbit((byte)r, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }

            m[0] = TestPlugin.unsetbit(m[0], 6); //на всякий очищаем биты, и ставим на левый, направление назад
            m[1] = TestPlugin.unsetbit(m[1], 6);
            m[1] = TestPlugin.setbit(m[1], 6);   //устанавливаем, на правый мотор направление вперёд
        }
        else if (force.x < 0 & force.y == 0)     //аналогично тому, что выше, только наоборот
        {
            l = xF;
            l = (int)(l * 0.25f);
            for (int i = 0; i < 6; i++)
            {
                if (TestPlugin.checkbit((byte)l, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }

            m[0] = TestPlugin.unsetbit(m[0], 6);
            m[1] = TestPlugin.unsetbit(m[1], 6);
            m[0] = TestPlugin.setbit(m[0], 6);
        }
        else//если только вертикаль
        {
            yF = (int)(yF * 0.25f);//вертикаль присваиваем переменной
            for (int i = 0; i < 6; i++)//задаём мощь движкам
            {
                if (TestPlugin.checkbit((byte)yF, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }
            //задаём ориентацию движкам
            if (force.y > 0)
            {
                m[0] = TestPlugin.setbit(m[0], 6);
                m[1] = TestPlugin.setbit(m[1], 6);
            }
            else
            {
                m[0] = TestPlugin.unsetbit(m[0], 6);
                m[1] = TestPlugin.unsetbit(m[1], 6);
            }
        }
        TestPlugin.SetMessage(m);
    }
 public void SET()
 {
     aB = new byte[] { (byte)'S', (byte)'E', (byte)'T' };
     TestPlugin.SetMessage(aB);
     isGet = true;
 }
 public void GET()
 {
     aB = new byte[] { (byte)'G', (byte)'E', (byte)'T' };
     TestPlugin.SetMessage(aB);
     isGet = false;
 }