C # связь с Arduino (Arduino продолжает отправлять данные) - PullRequest
0 голосов
/ 28 февраля 2019

Я работаю над проектом на C #.Программа является управляющей программой для Arduino.Я написал некоторый код для записи в серию arduino и запрограммировал arduino ответить стандартным сообщением (подтверждение, если хотите) в этом случае «5».После отправки информации в arduino, arduino отвечает «5», но продолжает посылать «5».

Любая идея, почему это происходит?

настройка порта:

    private void Ports_SelectedIndexChanged(object sender, EventArgs e)
    {
        _serialPort.PortName = ArrayComPortsNames[Ports.SelectedIndex];//Set your board COM
        _serialPort.BaudRate = (int)Baudrate.Items[Baudrate.SelectedIndex];
        _serialPort.Parity = Parity.None;
        _serialPort.DataBits = 8;
        _serialPort.StopBits = StopBits.One;
        if (!_serialPort.IsOpen)
            _serialPort.Open();
        _serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_serialPort);
    }
    private void sp_serialPort(object sender, SerialDataReceivedEventArgs e)
    {
        //Write the serial port data to the console.
        Console.Write(_serialPort.ReadLine());
    }

C # код:

    private void buttonKeyboard_KeyDown(object sender, KeyEventArgs e)
    {
        switch (e.KeyData)
        {
            case Keys.Z:
                PortWrite("z");
                break;
            case Keys.Q:
                PortWrite("q");
                break;
            case Keys.S:
                PortWrite("s");
                break;
            case Keys.D:
                PortWrite("d");
                break;

        }
    }

    private void PortWrite(string message)
    {
        _serialPort.WriteLine(message);
    }

код Arduino:

void setup() {
Serial.begin(9600);

}

void loop() {
if(Serial.available()){
//Serial.println(Serial.read());
Serial.println("5");
}
delay(100);
}

1 Ответ

0 голосов
/ 28 февраля 2019

Ключ здесь был в коде arduino

, а команда Serial.read () в предложении if была добавлена ​​и разрешила проблему:

void loop() {
if(Serial.available()){
Serial.read(); //clear serial buffer
Serial.println("5");
}
...