簡體   English   中英

C# 與 arduino 通信(arduino 不斷發送數據)

[英]C# communication with arduino (arduino keeps sending data)

我正在 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);
}

關鍵在arduino代碼中

在if子句中添加了Serial.read()命令,並解決了該問題:

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

您正在無限循環中將值 5 發送到串行端口,這是 void loop() 放置一個指定何時發送值的條件

    bool f=true;
    void loop() {
    if(Serial.available()>0) 
    {
     while(f) 
    {
     Serial.println(5);
f=false;
    } 
    }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM