2012-06-16 2 views
3

Я хочу передать данные, которые появляются в 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); 
      } 

     } 
    } 
} 

Но когда я нажимаю на кнопку пульта еще пуст. Скажите, пожалуйста, что не так!

+2

с портом.ReadLine() Я думаю, вам нужно отправить CR или LF или, возможно, оба? – kenny

+0

@kenny: что вы имеете в виду о «CR или LF»? можете ли вы написать дополнительную информацию? :) – omtcyfz

+0

Вам не хватает port.Close()? Похоже, что ваш код не освобождает ресурсы потенциального не управляемого кода. –

ответ

2

Все просто. Я забыл написать

Serial.begin()

: D Вот и все. Теперь это работает.

Смежные вопросы