コード例 #1
0
 private ServiceFirmata(string portname)
 {
     this._orchestramessage = OrchestraMessage.GetInstance();
     this._arduinoBus = new ArduinoBus(portname, 57600,false,8000,true);
     this._arduinoBus.SysexCallback = sysexTraitment;
     this._arduinoBus.Open(true);
     this.registersActuatorDynamixel = AXXRegisterInfo.GetInstance();
 }
コード例 #2
0
 internal void SendActionInstructionMessage(ArduinoBus.currentSysexCallback traitement_result)
 {
     byte[] dyna_paquet = BioloidCommunicationHelper.ActionInstruction();
     byte? identifiant_message = _orchestramessage.GetReferenceMessage(BioloidCommunicationHelper.AX_BROADCAST_ID,traitement_result);
     if (identifiant_message.HasValue)
     {
         try
         {
             byte[] message = ServiceFirmata.EncapsulationMessage(dyna_paquet, identifiant_message.Value, ArduinoBus.SYSEXCMD_DYNAMIXEL_INSTRUCTION_PACKET);
             this._arduinoBus.writeBytes(message);
         }
         catch (Exception ex)
         {
             _orchestramessage.DeleteReferenceMessage(identifiant_message.Value);
         }
     }
     else
     {
         //> prévoir ce que l'on fait à ce niveau
     }
 }
コード例 #3
0
 /// <summary>
 /// Permet de transmettre un message de type PING
 /// </summary>
 /// <param name="identifiant_dynamixel">identifiant dynamixel concerné</param>
 /// <param name="traitement_result">Méthode qui sera appelée lors du retour</param>
 internal void SendPingInstructionMessage(byte identifiant_dynamixel, ArduinoBus.currentSysexCallback traitement_result)
 {
     byte[] datas = BioloidCommunicationHelper.CreatePingInstruction(identifiant_dynamixel);
     //> Récupération d'un nouvel index de message
     byte? identifiant_message = _orchestramessage.GetReferenceMessage(identifiant_dynamixel, traitement_result);
     if (identifiant_message.HasValue)
     {
         try
         {
             byte[] message = ServiceFirmata.EncapsulationMessage(datas, identifiant_message.Value, ArduinoBus.SYSEXCMD_DYNAMIXEL_INSTRUCTION_PACKET);
             this._arduinoBus.writeBytes(message);
         }
         catch (Exception ex)
         {
             _orchestramessage.DeleteReferenceMessage(identifiant_message.Value);
         }
     }
     else
     {
         //> TODO prévoir ce que l'on fait dans ce cas
     }
 }
コード例 #4
0
 /// <summary>
 /// Permet de transmettre un mesage de type Write
 /// </summary>
 /// <param name="identifiant_dynamixel">identifiant dynamixel concerné</param>
 /// <param name="add">Registre de début concerné par l'écriture</param>
 /// <param name="datas">Ensemble des données inscrites à partir de <paramref name="idenfiant_dyanmixel"/>l'adresse de début</param>
 /// <param name="traitement_result">Méthode qui sera appelée lors du retour</param>
 internal void SendWriteInstructionMessage(byte identifiant_dynamixel, BioloidRegister add, byte[] datas, ArduinoBus.currentSysexCallback traitement_result)
 {
     //> Création du message dynamixel
     byte[] dyna_paquet = BioloidCommunicationHelper.WriteInstruction(identifiant_dynamixel, add.StartAdressRegister, datas);
     //> Récupération d'un nouvel index de message
     byte? identifiant_message = _orchestramessage.GetReferenceMessage(identifiant_dynamixel, traitement_result);
     if (identifiant_message.HasValue)
     {
         try
         {
             byte[] message = ServiceFirmata.EncapsulationMessage(dyna_paquet, identifiant_message.Value, ArduinoBus.SYSEXCMD_DYNAMIXEL_INSTRUCTION_PACKET);
             this._arduinoBus.writeBytes(message);
         }
         catch (Exception ex)
         {
             _orchestramessage.DeleteReferenceMessage(identifiant_message.Value);
         }
     }
     else
     {
         //> Prévoir ce que l'on fait à ce niveau
     }
 }
コード例 #5
0
 /// <summary>
 /// Permet de transmettre un message de type READ
 /// </summary>
 /// <param name="identifiant_dynamixel">identifiant dynamixel concerné</param>
 /// <param name="add">Adresse de début du registre à lire</param>
 /// <param name="length">Nombre de byte à lire</param>
 /// <param name="traitement">Méthode qui sera appelée lors du retour</param>
 internal void SendReadInstructionMessage(byte identifiant_dynamixel,BioloidRegister add,byte length, ArduinoBus.currentSysexCallback traitement)
 {
     //> Création d'un paquet ReadInstructionMessage
     byte[] datas = BioloidCommunicationHelper.CreateReadDataInstruction(identifiant_dynamixel, add.StartAdressRegister
                                                                , (byte)(add.Length + length));
     //> Recuperation d'un nouvel index de message
     byte? identifiant_message = _orchestramessage.GetReferenceMessage(identifiant_dynamixel,traitement);
     if (identifiant_message.HasValue)
     {
         try
         {
             byte[] message = ServiceFirmata.EncapsulationMessage(datas, identifiant_message.Value, ArduinoBus.SYSEXCMD_DYNAMIXEL_INSTRUCTION_PACKET);
             this._arduinoBus.writeBytes(message);
         }
         catch (Exception ex)
         {
             _orchestramessage.DeleteReferenceMessage(identifiant_message.Value);
         }
     }
     else
     {
         // prevoir ce que l'on fait dans ce cas
     }
 }