コード例 #1
0
    public void Envoi_Deplacement(GameObject deplacement_panel)
    {
        TMP_InputField Destination_X;
        TMP_InputField Destination_Y;
        TMP_InputField Destination_Distance;
        TMP_InputField Destination_Theta;
        TMP_InputField Vitesse_Roue_Gauche;
        TMP_InputField Vitesse_Roue_Droite;

        Destination_X        = FindChildByRecursion(deplacement_panel.transform, "X").GetComponent <TMP_InputField>();
        Destination_Y        = FindChildByRecursion(deplacement_panel.transform, "Y").GetComponent <TMP_InputField>();
        Destination_Distance = FindChildByRecursion(deplacement_panel.transform, "Distance").GetComponent <TMP_InputField>();
        Destination_Theta    = FindChildByRecursion(deplacement_panel.transform, "Theta").GetComponent <TMP_InputField>();
        Vitesse_Roue_Gauche  = FindChildByRecursion(deplacement_panel.transform, "Vitesse Roue Gauche").GetComponent <TMP_InputField>();
        Vitesse_Roue_Droite  = FindChildByRecursion(deplacement_panel.transform, "Vitesse Roue Droite").GetComponent <TMP_InputField>();


        st_COORDONNEES       coord = new st_COORDONNEES();
        st_DESTINATION_ROBOT dest  = new st_DESTINATION_ROBOT();


        if (Destination_X.text != "")
        {
            coord.X = short.Parse(Destination_X.text, Common_settings.culture);
        }
        if (Destination_Y.text != "")
        {
            coord.Y = short.Parse(Destination_Y.text, Common_settings.culture);
        }
        if (Destination_Distance.text != "")
        {
            coord.Distance = short.Parse(Destination_Distance.text, Common_settings.culture);
        }

        if (Destination_Theta.text != "")
        {
            float temp_ang = float.Parse(Destination_Theta.text, Common_settings.culture);
            temp_ang   *= Mathf.Deg2Rad;
            temp_ang   *= 100;
            coord.Angle = (short)temp_ang;
        }


        if (Vitesse_Roue_Gauche.text != "")
        {
            coord.Vitesse_Roue_Gauche = short.Parse(Vitesse_Roue_Gauche.text, Common_settings.culture);
        }
        if (Vitesse_Roue_Droite.text != "")
        {
            coord.Vitesse_Roue_Droite = short.Parse(Vitesse_Roue_Droite.text, Common_settings.culture);
        }

        coord.Type_Deplacement = (enum_TYPE_MOVE_)FindChildByRecursion(deplacement_panel.transform, "type deplacement").GetComponent <TMP_Dropdown>().value;
        coord.Type_Arret       = (enum_TYPE_ARRET_)FindChildByRecursion(deplacement_panel.transform, "Freinage").GetComponent <TMP_Dropdown>().value;

        st_Parametre_Deplacement parametres = new st_Parametre_Deplacement();

        parametres.Distance_Detection_Fin_Trajectoire = 3 * 100;
        parametres.Angle_Avant_Debut_Avance           = (byte)(0.1F * 100);
        parametres.Angle_Detection_Fin_Trajectoire    = (byte)(0.05F * 100);

        coord.ptrParameters = parametres;

        dest.coord = coord;

        if (FindChildByRecursion(deplacement_panel.transform, "Effacement").GetComponent <TMP_Dropdown>().value == 0)
        {
            dest.Replace = false;
        }
        else
        {
            dest.Replace = true;
        }

        Communication.Communication_Trame trame = new Communication.Communication_Trame();

        trame = Communication.GetTrameFromClass <st_DESTINATION_ROBOT>(dest);

        trame.Slave_Adresse  = Communication.Slave_Adresses.MultiFct_1; //uniquement la carte 1 qui gère les déplacement
        trame.Instruction    = Communication.Com_Instruction.DESTINATION_ROBOT;
        trame.XBEE_DEST_ADDR = Communication.Adress_Xbee.ALL_XBEE;

        GameObject.FindWithTag("Communication port").GetComponent <Message_Sender>().Send_Trame(trame);
    }
コード例 #2
0
    /*************************************************/

    #endregion



    public void Envoi_Ordre_Deplacement()
    {
        st_COORDONNEES       coord = new st_COORDONNEES();
        st_DESTINATION_ROBOT dest  = new st_DESTINATION_ROBOT();

        if (destination_x.text != "")
        {
            coord.X = (short)Convert.ToSingle(destination_x.text.Replace('.', ','));
        }
        if (destination_y.text != "")
        {
            coord.Y = (short)Convert.ToSingle(destination_y.text.Replace('.', ','));
        }
        if (angle.text != "")
        {
            coord.Angle = (short)Convert.ToSingle(angle.text.Replace('.', ','));
        }
        coord.Angle *= 100;
        if (distance.text != "")
        {
            coord.Distance = (short)Convert.ToSingle(distance.text.Replace('.', ','));
        }

        coord.Type_Deplacement = (enum_TYPE_MOVE_)Type_deplacement.value;
        coord.Type_Arret       = (enum_TYPE_ARRET_)Freinage.value;

        st_Parametre_Deplacement parametres = new st_Parametre_Deplacement();

        parametres.Distance_Detection_Fin_Trajectoire = 3 * 100;
        parametres.Angle_Avant_Debut_Avance           = (byte)(0.1F * 100);
        parametres.Angle_Detection_Fin_Trajectoire    = (byte)(0.05F * 100);

        coord.ptrParameters = parametres;

        dest.coord = coord;

        if (Effacement.value == 0)
        {
            dest.Replace = false;
        }
        else
        {
            dest.Replace = true;
        }

        Communication.Communication_Trame trame = new Communication.Communication_Trame();

        trame.Slave_Adresse  = Communication.Slave_Adresses.ALL_CARDS;
        trame.Instruction    = Communication.Com_Instruction.DESTINATION_ROBOT;
        trame.XBEE_DEST_ADDR = Communication.Adress_Xbee.ALL_XBEE;

        int size = Marshal.SizeOf(dest);

        byte[] arr = new byte[size];

        IntPtr ptr = Marshal.AllocHGlobal(size);

        Marshal.StructureToPtr(dest, ptr, true);
        Marshal.Copy(ptr, arr, 0, size);
        Marshal.FreeHGlobal(ptr);
        trame.Data   = arr;
        trame.Length = (byte)size;

        Communication_port.GetComponent <Communication_Send_Instructions>().Send_Instruction(trame);
    }