Étape 12 : Envoyer le Message de série
Maintenant que nous avons le contrôle ComboBox rempli avec les ports série disponibles la prochaine étape pour obtenir notre programme parler à la Tinyduino sera d’ajouter une fonction qui envoie un message de série à la TinyDuino et met à jour les vitesses des deux moteurs. Notre protocole série est extensible, mais pour l’instant n’inclut que les trois octets. Le premier d'entre eux est un paquet d’informations sur le type de message que nous envoyons.
Première chose tout d’abord, définir une fonction vide appelée "UpdateMotors()" et d’inclure un octet constant appelé "messageType" comme ceci :
void UpdateMotors() { //message type constant const byte messageType = 2; //read the sliders //motor 1 byte motorOneSpeed = (byte)tbMotorOne.Value; //motor 2 byte motorTwoSpeed = (byte)tbMotorTwo.Value; }
Lorsque défini comme ce visual studio convertit le nombre int 2 implicitement à un octet.
Ensuite nous lire les valeurs de nos glisseurs et attribuez-les à leurs propres variables byte :
void UpdateMotors() { //message type constant const byte messageType = 2; //read the sliders //motor 1 byte motorOneSpeed = (byte)tbMotorOne.Value; //motor 2 byte motorTwoSpeed = (byte)tbMotorTwo.Value; //create and fill a array of bytes as our message byte[] serialMessage = {messageType, motorOneSpeed, motorTwoSpeed}; //send Message serial.Write(serialMessage, 0, serialMessage.Length); }
Lorsque définie comme suit cependant Visual Studio requiert un cast entre la valeur de retour de tbMotor.Value et d’un octet.
Maintenant, avec les trois octets créés nous remplir un tableau d’octets comme un tampon pour envoyer notre message et bien sûr, envoyer le message lui-même :
private void OnComChange(object sender, EventArgs e) { if (serial != null && serial.IsOpen) { serial.Close(); } Port port = (Port)cbComPortChooser.SelectedItem; serial = new SerialPort(port.Name); serial.BaudRate = 9600; if (!serial.IsOpen) { serial.Open(); } }
Avis de série. Write() ; prend trois arguments : le message lui-même comme un tableau d’octets et un entier représentant le premier octet à envoyer un deuxième int comme la taille de l’ensemble du message.