Передача данных Arduino - C#
- Войдите на сайт для отправки комментариев
Сб, 16/06/2012 - 23:30
Здравствуйте! Подскажите, пожалуйста, как считывать данные, передаваемые с Arduino через приложение на C#.
int switchPin = 7;
int ledPin = 13;
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean flashLight = LOW;
void setup()
{
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
}
boolean debounce(boolean last)
{
boolean current = digitalRead(switchPin);
if (last != current)
{
delay(5);
current = digitalRead(switchPin);
}
return current;
}
void loop()
{
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH)
{
Serial.print("UP");
digitalWrite(ledPin, HIGH);
}
if (lastButton == HIGH && currentButton == LOW)
{
Serial.print("DOWN");
digitalWrite(ledPin, LOW);
}
lastButton = currentButton;
}
Это мой код для устройства. После нажатия на кнопку посылается "UP", после отжатия - "DOWN". Но как получить эту информацию?
Например, при выполнении такого кода в консоли ничего не появляется. :(
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text; using System.IO.Ports; namespace ArduinoTestApplication { class Program { static void Main(string[] args) { SerialPort port = new SerialPort("COM3", 9600); port.Open(); string lane; while (true) { lane = port.ReadLine(); Console.WriteLine(lane); } } } }Ну как-то так
Arduino:
int i; void setup() { Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } i = 0; } void loop() { Serial.print(i); delay(1000); //посылаем числа по нарастающей каждую секунду i++; }C#:
using System; using System.IO.Ports; namespace ArduinoSerial { class Program { //У меня COM30, а Вы поставьте тот порт, что у Вас SerialPort sp = new SerialPort("COM30", 9600, Parity.None, 8, StopBits.One); static void Main(string[] args) { new Program(); } private Program() { sp.DataReceived += new SerialDataReceivedEventHandler(OnDataReceived); sp.Open(); Console.Read(); //чтобы консоль не закрывалась } private void OnDataReceived(object sender, SerialDataReceivedEventArgs e) { Console.WriteLine(sp.ReadExisting()); } } }