Bonjour, et merci pour l'initiation à la transmission de données
.
Trimarco232
Au départ j'envoyais A000 pour le servo 1 puis B000 pour le servo 2, mais j'ai pensé que cela me faisait perdre du temps et j'avais toujours un problème de timeout à 1000 milli. J'ai donc décidé d'envoyer 000000. Mais sans amélioration. Donc la solution dans premier temps c'est bien d'avoir un Serial.Timeout(10).
Pour le fermeture du port, lorsque je quitte la simulation d'unity 3D le port reste ouvert. Certainement parce qu'il s'agit d'une simulation; je ne quitte par réellement l'application. En effet je ne peux plus utiliser le moniteur ou encore téléverser un code dans Arduino.
J'utilise alors cette solution en C# propre à unity me semble t'il :
void OnApplicationQuit()
{
Debug.Log("Application ending after " + Time.time + " seconds");
serial.Close ();
}
Si non je vous avoue que je suis un peut perdu avec ces nouveaux termes. Ce sont les premiers symbole de la table ascci. Mais je ne vois pas comment les utiliser, il faut tous les utiliser ?
J'envois ^B pour pour STX
puis S pour servo : S000000\n. Cela me permettra d'envoyer un message A B ou C ... pour une autre fonction.
serial.Write (^B + myString + "\n" );
Si je comprends bien, au lieu d'attendre 10 milli secondes arduino va attendre \n .Je n'aurais donc plus besoin de Serial.setTimeout(10); .Cela met beaucoup moins de temps n'est ce pas ?
Je vais me contenter d'envoyer du texte, on verras pour le binaire plus-tard.
Du côté Arduino je valide ça avec des condition if ?
Je lis un caractère
Si j'ai ^B je lis
{
Si ce que je lis commence par S
{
Je lis jusqu'à ^C
Je stock laValeur en int
J'attend le CRC /*mais comment je fais ça et comment je l'envoi. Un CRC, c'est bien la taille du message envoyer ?*/
Je converti le CRC en int
Si CRC == laValeur
{
J'envois ACK
Je traduit le texte
Je positionne les servos
}
Si CRC != la valeur
{ J'envois NAK }
}
}
Et du côté émetteur ?
J'envois mon string : ^B000000^CCRC désolé mais je ne visualise pas le CRC
J'attend une réponse ...Attendre, je ne sais pas attendre en programmation à moins de mettre un bool attendre sur tout le programme .
Si la réponse est ACK ou nombre d'envois >=3
Je n'attend plus le bool attendre est false je passe à la suite.
Si la réponse est NAK et nombre d'envois < 3
Je renvois ce que je viens d'envoyer.
J'ai remarqué que ma carte redémarre quand elle tente de transmettre. J'espère que le faite de ne plus fermer résous ce problème.