2016-05-11 102 views
-1

我是這個社區的新手,我對編程和電子學有着濃厚的興趣。所以我遇到了arduino和c#windows應用程序之間的通信問題。 我知道如何從控制檯應用程序中的串行端口自動更新數據,但在表單應用程序中對我來說非常棘手。 所以..在arduino中,我有一個從電位器讀取模擬信號的基本草圖,並且在一個c#應用程序中,我製作了一個用於選擇端口的ComboBox,以及一個用於製作一個while循環的CheckBox。在while循環中,我已經獲得了讀取信號並將其顯示給用戶的命令。 而對於我的英語很抱歉,我不是很擅長.. 代碼:與c的Arduino通信#

命名空間arduinoRead { 公共部分Form1類:表格{ 公共 Form1的(){ 在InitializeComponent (); }

private void Form1_Load(object sender, EventArgs e) 
    { 

     string[] ports = SerialPort.GetPortNames(); 
     serialPort1.PortName = ports.ToString(); 
     comboBox1.Items.AddRange(ports); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     string Selected1 = comboBox1.SelectedItem.ToString(); 
     MessageBox.Show(String.Format("Jūs esat izvēlējies: '{0}' Portu", Selected1)); 
     serialPort1.PortName = Selected1; 
     serialPort1.Open(); 
    } 

    private void button3_Click(object sender, EventArgs e) 
    { 
     Form2 f2 = new Form2(textBox1.Text); 
     f2.Show(); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     while (checkBox1.Checked) 
     { 
      label1.Text = serialPort1.ReadLine(); 
     } 
    } 
} 

}

+0

1.我看不到任何'while循環'。 2.什麼意思是「它的棘手」?你應該提供一些代碼,你可以得到更多關於「最新錯誤」的細節。 – C4u

+0

除了'做什麼':如果它通過串口工作,那麼與form-app有什麼關係呢?您可以在控制檯應用程序中使用控制檯的表單應用程序! – C4u

+0

您需要使用代碼示例提出具體問題。對於任何人來說,這裏沒有太多的工作要幫助你。玩完代碼後,你可能還想查看http://arduino.stackexchange.com/ – asawyer

回答

1

我認爲,如果你發佈你的代碼,它會更好。一般情況下,在C#窗體應用程序,你需要創建一個串行端口的實例

 SerialPort COM = new SerialPort("COM3", 115200); 
     COM.Open(); 

然後使用COM.Write要發送的字節到端口,COM.Read閱讀。在Arduino方面,您使用Serial.begin(115200)(確保速度匹配),然後使用Serial.readSerial.print

您可能還想看看Windows Remote Arduino項目,該項目允許您以自然的方式從C#程序控制Arduino的輸入/輸出。您需要在Arduino上放置Firmata草圖,然後Windows Remote Arduino庫處理所有串行通信。請參閱示例項目here

+0

,我已經足夠接近實時,現在一切正常,因爲我想要的。 :) 謝謝! – equin0xy

+0

@ equin0xy我很高興它有幫助。我建議你也將答案標記爲正確答案,以便對其他人更加明顯和有幫助。 –