簡體   English   中英

如何使用zedgraph將Arduino的串行數據發送到Visual Studio C#,反之亦然

[英]How to send serial data from Arduino to Visual Studio C# with zedgraph and vice versa simultaniously

我正在一個項目中,從Arduino讀取模擬數據,然后使用zedgraph在Visual C#中顯示它。 我的GUI上有一個開始按鈕,用於開始從Arduino讀取串行數據。 我可以使用private void read_Tick方法做到這一點, private void read_Tick方法打開arduino端口,讀取串行數據,在zedgraph上顯示數據,然后每隔1秒關閉arduino。 如果您在理解我的話時遇到問題,請使用以下方法:

private void read_Tick(object sender, EventArgs e)
{
    try
    {

        arduino.Open();

        LineItem kurvaKonsentrasi = zedGraphKonsentrasi.GraphPane.CurveList[0] as LineItem;


        IPointListEdit listKonsentrasi = kurvaKonsentrasi.Points as IPointListEdit;

        double time = (Environment.TickCount - timeStart) / 1000.0;

        float dataKonsentrasi = float.Parse(arduino.ReadLine(), CultureInfo.InvariantCulture.NumberFormat);
        listKonsentrasi.Add(time,Convert.ToDouble(dataKonsentrasi));

        arduino.Close();

        Scale xScale = zedGraphKonsentrasi.GraphPane.XAxis.Scale;
        if (time > xScale.Max - xScale.MajorStep)
        {
            xScale.Max = time + xScale.MajorStep;
            xScale.Min = xScale.Max - 30.0;
        }

        zedGraphKonsentrasi.AxisChange();

        zedGraphKonsentrasi.Invalidate();

    }
    catch (Exception fail)
    {
        if (arduino.IsOpen)
        {
            arduino.Close();
        }
    }

}

單擊開始按鈕時將調用此方法。 所以,我的問題是,我想在單擊開始按鈕時“打開”發送字符串數據。 該字符串數據用於命令Arduino在模擬讀數之前將我附帶此代碼的伺服器移動到void loop()

if(Serial.available()>0){
    start = Serial.read();
      if(start == "on"){
        servoMotor.write(40);
  }
}

我知道我做的事情有問題,因為我無法啟動伺服器。 您能否給我一些建議,使Visual C#將命令發送到arduino以啟動伺服,然后由arduino啟動讀數,然后由Visual C#讀取它,我該怎么做?

Serial.read()僅返回一個字節,因此您不會“ on”。 您將第一次得到“ o”,如果再次閱讀它,您將得到“ n”。

如果在“ on”后面加上“ \\ n”(換行符),則可以執行以下操作:

char command[3];
if (Serial.available() > 0) {
   int bytesRead = Serial.readBytesUntil('\n', command, 2);
   command[2] = '\0';
   if strcmp(command, "on") == 0) {
      servoMotor.write(40);
   }
}

暫無
暫無

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

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