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に設定されています? –
いいえ、それはありませんが、リストボックスを見ると、連続して12が表示されますが、それを制御する方法はわかりません – Arvind
デバッグして、strに値が設定されているのを確認してください –