Stap 12: Het seriële signaal
Nu dat we de ComboBox die is gevuld met de beschikbare seriële poorten hebben moet de volgende stap om onze programma in gesprek met de Tinyduino te krijgen toevoegen van een functie die een seriële signaal naar de TinyDuino en de snelheden van de twee motoren worden bijgewerkt. Onze serieel protocol is uitbreidbaar, maar voor nu zal alleen omvatten drie bytes. De eerste is een pakket van de info op het soort boodschap die wij.
Het eerste ding eerst definiëren een lege functie genaamd "UpdateMotors()" en een constante byte genaamd "messageType" zoals dit wordt opgenomen:
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; }
Wanneer gedefinieerd zoals deze visuele studio in de int-nummer 2 impliciet een byte omzetten zal.
Wij zullen vervolgens lees de waarden van onze schuifregelaars en toewijzen aan hun eigen byte variabelen:
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); }
Wanneer gedefinieerd als deze Visual Studio vereist echter een cast tussen de geretourneerde waarde van de tbMotor.Value en een byte.
Nu met de drie bytes gemaakt zullen we vullen een byte-matrix als een buffer om onze boodschap en natuurlijk, het verzenden van het bericht zelf:
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(); } }
Merken seriële. Write(); drie argumenten: het bericht zelf als een ByteArray, een int vertegenwoordigt de eerste byte te sturen, en een tweede int als de grootte van het hele bericht.