2016-10-03 61 views
0

你好我只是讓Windows來自應用程序,而且我也在做Arduino項目, 我想讓自動檢測COM-Port和WriteLine同時進行,這是我的代碼...同時自動檢測COM-Port和WriteLine

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO.Ports; 
using System.Threading; 


namespace ForTest 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      string[] ports = SerialPort.GetPortNames(); 
      foreach (string port in ports) 
      { 
       comboBox1.Items.Add(port); 
      } 
      /// read button 
      string t; 
      t = comboBox1.Text.ToString(); 
      sErial(t); 
     } 

     SerialPort sp; 
     void sErial(string Port_name) 
     { 
      sp = new SerialPort(Port_name, 9600, Parity.None, 8, StopBits.One); 
      sp.Open(); 
      try 
      { 
       sp.WriteLine("G"); //send 1 to Arduino 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 


     } 

     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 

     } 



    } 
} 

請幫助我..我無法理解任何事情,現在......我完全盲...現在.....裏面的Arduino我的LED還沒有啓動..

+0

平分你的問題。首先,用終端仿真器測試arduino。確保它有效。然後忘記自動檢測COM端口並硬編碼一個適當的。讓它工作。我不建議自動檢測COM端口,因爲在隨機端口發送隨機數據是不安全的。 –

+0

是的。 arduino寫行是。好。但我需要這樣的。 COM3和WRITELINE(「G」) –

+0

我試圖做一個應用程序,只做2件事,第一:找到端口並連接並打開,然後2ND:WRITELINE(「G」)就是這樣....... –

回答

1

儘量把SerialPort.Open()在try-catch塊和發送數據後調用SerialPort.Close()方法:

void Serial(string port) 
    { 
     SerialPort sp = new SerialPort(port, 9600, Parity.None, 8, StopBits.One); 
     try 
     { 
      sp.Open(); 
      try 
      { 
       sp.WriteLine("G"); // Send 1 to Arduino 
       sp.Close(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
     catch (Exception e) 
     { 
      System.Diagnostics.Debug.WriteLine(e.Message); 
     } 
    } 
+0

是的,它的作品............ –

0

這裏是工作的代碼....

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO.Ports; 
using System.Threading; 


namespace ForTest 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      string[] ports = SerialPort.GetPortNames(); 
      foreach (string port in ports) 
      { 
       SerialPort sp = new SerialPort(port, 9600, Parity.None, 8, StopBits.One); 
       try 
       { 
        sp.Open(); 
        try 
        { 
         sp.WriteLine("B"); // Send 1 to Arduino 
         sp.Close(); 
        } 
        catch (Exception ex) 
        { 
         MessageBox.Show(ex.Message); 
        } 
       } 
       catch (Exception ek) 
       { 
        System.Diagnostics.Debug.WriteLine(ek.Message); 
       } 
      } 


     } 

    } 
} 

謝謝...............