2012-05-03 91 views
1

我正在嘗試在C#中編程UBW以採取命令並將輸入返回給我。例如,當我在TeraTerm中建立USB連接時,輸入v會給出我正在使用的UBW當前固件版本的輸出。讀取/寫入串行端口(用於UBW)

我有建立在C#中的連接。我認爲我發送的命令是正確的,但我的datareceived處理程序永遠不會在調試器中調用。

下面是代碼來嘗試寫入到該端口:

private void button1_Click(object sender, EventArgs e) 
    { 
     if (port.IsOpen) 
     { 
      //write command to port 
      port.WriteLine(textBox1.Text); 

     } 

     else 
     { 
      MessageBox.Show("Serial port is closed! Try again!"); 
     } 

     textBox1.Clear(); 

    } 

下面是代碼,試圖從中讀取數據(這是從來沒有從調試器中調用)

private void port_dataReceived(object sender, SerialDataReceivedEventArgs e) 
    { 
     try 
     { 
      port.ReadLine(); 

     } 

     catch { } 

    } 

這裏是UBW主頁,展示它的工作原理。 http://schmalzhaus.com/UBW/

我的組合框代碼來設置我的端口:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string portName = comboBox1.SelectedItem.ToString(); 
     port = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One); 
     port.DataReceived += new SerialDataReceivedEventHandler(port_dataReceived); 
     try 
     { 
      port.Open(); 
      //port.DataReceived += new SerialDataReceivedEventHandler(port_dataReceived); 
     } 
     catch 
     { 
      MessageBox.Show("The selected serial port cannot be opened!"); 
      Application.Exit(); 
     } 

    } 

回答

0

走進TeraTerm的COM端口屬性,並確保你在你的代碼中使用了相同的屬性。

嘗試使用這個類(它包裝了大量的串行的東西,使其更容易):

http://code.google.com/p/flux3gui/source/browse/Flux3GUI/SerialCommunication.cs?r=b4a4f8546b936eeabe60b7de32e3027493498dc6

+0

從TeraTerm,我知道,波特率爲9600,奇偶校驗爲無,數據位= 8 ,stopbits = 1。我使用組合框來選擇COM,這裏是我用來設置它的代碼。我更新了我原來的帖子,包括我在哪裏設置了端口並將其打開。從我可以從鏈接中得知,port.DataReceived + = new SerialDataReceivedEventHandler(port_dataReceived);一旦緩衝區中有數據,應該將我的代碼發送到我的port_dataReceived方法。但由於某種原因,事實並非如此。 – Kevin

+0

好吧,我是一個白癡,我正在使用一個CS實驗室來做我的程序,並完全忘記UBW固件沒有安裝在電腦上。它適用於我的筆記本電腦。 – Kevin

相關問題