2012-03-08 116 views
2

我有一個問題。我嘗試聽串行端口(COM20),然後我收到數據,我想將這些數據添加到應用程序窗體上的ListBox1。我需要爲它添加什麼代碼? 我知道INVOKE,但我不明白我該如何使用它。請幫幫我。偵聽串口。如何將字符串添加到列表框?

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

namespace test_com_port 
{ 
    public partial class Form1 : Form 
    { 


     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      SerialPort mySerialPort = new SerialPort("COM20"); 
      mySerialPort.BaudRate = 9600; 
      mySerialPort.Parity = Parity.None; 
      mySerialPort.StopBits = StopBits.One; 
      mySerialPort.DataBits = 8; 
      mySerialPort.Handshake = Handshake.None; 



      mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); 
      mySerialPort.Open(); 

     } 
     private static void DataReceivedHandler(object sender,SerialDataReceivedEventArgs e) 
     { 
      SerialPort sp = (SerialPort)sender; 
       string indata = sp.ReadExisting(); 


     char[] values = indata.ToCharArray(); 
     foreach (char letter in values) 
     { 

      int value = Convert.ToInt32(letter); 
      string hexOutput = String.Format("{0:X}", value); 
      listBox1.Items.Add(hexOutput); 


     } 

     } 

    } 


    } 

回答

4

只需添加添加事件處理程序的頂部:

if (InvokeRequired) 
BeginInvoke(new SerialDataReceivedEventHandler(DataReceivedHandler), sender, e); 
相關問題