2017-02-08 14 views
0

私はシリアル番号を受け取ったときにフォームの色を変更しようとしていましたが、受信するイベント処理メソッドを使用していますシリアル・モニタからのデータは出力されません。私はここにコードを添付しています。シリアルから返された値のフォームの背景を変更する方法

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

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     SerialPort port; 

     public delegate void UpdateGUI(string str); 
     public void DisplayReceivedData(string str) 
     { 
      string ja = "12"; 
      //listBox1.Items.Add("received"); 
     // if(StringComparison 
      listBox1.Items.Add(str); 
      textBox1.Text = ja; 
      int test = String.Compare(str, ja); 
      textBox1.Text =Convert.ToString(str); 
      if (test == 0) 
      { 
       ActiveForm.BackColor = System.Drawing.Color.DarkBlue; 
      } 
      else 
      { 
       ActiveForm.BackColor = System.Drawing.Color.White; 
      } 

     } 
     public void Datareceived(object sender, SerialDataReceivedEventArgs arg) 
     { 
      SerialPort sp = (SerialPort)sender; 
      string str = sp.ReadExisting(); 
      Invoke(new UpdateGUI(DisplayReceivedData),str); 

     } 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      port = new SerialPort("COM10"); 
      port.BaudRate = 9600; 
      port.Parity = Parity.None; 
      port.StopBits = StopBits.One; 
      port.DataBits = 8; 
      port.Handshake = Handshake.None; 
      port.RtsEnable = true; 
      port.DataReceived += new SerialDataReceivedEventHandler(Datareceived); 
      port.Open(); 
     } 


     private void button1_Click(object sender, EventArgs e) 
     { 
      ActiveForm.BackColor = System.Drawing.Color.DarkBlue; 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      ActiveForm.BackColor = System.Drawing.Color.White; 

     } 

     private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 

     } 

    } 
} 
+0

は、試験変数が0に設定されています? –

+0

いいえ、それはありませんが、リストボックスを見ると、連続して12が表示されますが、それを制御する方法はわかりません – Arvind

+1

デバッグして、strに値が設定されているのを確認してください –

答えて

0

あなたのコメントで言うように、問題は行末の文字です。

あなたは、単に使用してそれらを切り落とすことができます:

str.TrimEnd('\r', '\n'); 
関連する問題