2012-03-08 10 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); 
関連する問題