Я хочу передать данные, которые появляются в Arduino, в мое приложение C# и не знаю, что не так в моем коде. Вот приходит 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;
}
Как вы можете видеть, это просто эскиз посылает сообщение в порт, пока кнопка нажата. Я создал консольное C# приложение для получения данных:
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);
}
}
}
}
Но когда я нажимаю на кнопку пульта еще пуст. Скажите, пожалуйста, что не так!
с портом.ReadLine() Я думаю, вам нужно отправить CR или LF или, возможно, оба? – kenny
@kenny: что вы имеете в виду о «CR или LF»? можете ли вы написать дополнительную информацию? :) – omtcyfz
Вам не хватает port.Close()? Похоже, что ваш код не освобождает ресурсы потенциального не управляемого кода. –