Istnieje wiele sposobów wysłania polecenia z komputera do Arduino. Sandeep Bansil stanowi dobry przykład podłączenia i odczytu portu szeregowego.
Poniżej znajduje się działający przykład zapisu na porcie szeregowym w zależności od stanu pola wyboru na formularzu Windows oraz sposobu przetwarzania żądania z komputera na arduino.
Jest to pełny przykład, istnieją bardziej ekologiczne rozwiązania, ale jest to bardziej przejrzyste.
W tym przykładzie arduino czeka na "a" lub "b" z komputera. komputer wysyła "a", gdy pole wyboru jest zaznaczone i wysyła "b", gdy pole wyboru jest odznaczone. Przykład zakłada cyfrowy pin 4 na arduino.
kod Arduino
#define DIGI_PIN_SOMETHING 4
unit8_t commandIn;
void setup()
{
//create a serial connection at 57500 baud
Serial.begin(57600);
}
void loop()
{
//if we have some incomming serial data then..
if (Serial.available() > 0)
{
//read 1 byte from the data sent by the pc
commandIn = serial.read();
//test if the pc sent an 'a' or 'b'
switch (commandIn)
{
case 'a':
{
//we got an 'a' from the pc so turn on the digital pin
digitalWrite(DIGI_PIN_SOMETHING,HIGH);
break;
}
case 'b':
{
//we got an 'b' from the pc so turn off the digital pin
digitalWrite(DIGI_PIN_SOMETHING,LOW);
break;
}
}
}
}
systemu Windows C#
Kod ten będzie znajdować się w pliku formularza .cs. W przykładzie założono, że do pola wyboru dołączono zdarzenia formularzy dla OnOpenForm, OnCloseForm i zdarzenia OnClick. Z każdego ze zdarzeń można nazwać odpowiednich metodach poniżej ....
using System;
using System.IO.Ports;
class fooForm and normal stuff
{
SerialPort port;
private myFormClose()
{
if (port != null)
port.close();
}
private myFormOpen()
{
port = new SerialPort("COM4", 57600);
try
{
//un-comment this line to cause the arduino to re-boot when the serial connects
//port.DtrEnabled = true;
port.Open();
}
catch (Exception ex)
{
//alert the user that we could not connect to the serial port
}
}
private void myCheckboxClicked()
{
if (myCheckbox.checked)
{
port.Write("a");
}
else
{
port.Write("b");
}
}
}
Wskazówka:
Jeśli chcesz przeczytać wiadomość od Arduino następnie dodać czasomierza do formularza z przerwą 50
lub 100
milisekund.
W przypadku OnTick
na czasowy należy sprawdzić dla danych za pomocą następującego kodu:
//this test is used to see if the arduino has sent any data
if (port.BytesToRead > 0)
//On the arduino you can send data like this
Serial.println("Hellow World")
//Then in C# you can use
String myVar = port.ReadLine();
Wynik readLine()
będzie, że myVar
zawiera Hello World
.
z jakiegoś powodu, moje poszukiwania nie załatwił mi tę stronę. dzięki. – ikathegreat