public partial class MatchingLabel : Form
{
string InputData = String.Empty;
string InputData2 = String.Empty;
delegate void SetTexcallback(string text);
delegate void SetTextCallback(string text);
public MatchingLabel()
{
InitializeComponent();
_ = new SerialPort();
}
private void Form1_Load(object sender, EventArgs e)
{
string[] port = SerialPort.GetPortNames();
serialPort1.DataReceived += new SerialDataReceivedEventHandler(SerialPort1_DataReceived); ;
serialPort2.DataReceived += new SerialDataReceivedEventHandler(SerialPort2_DataReceived); ;
comboBox1.Items.AddRange(SerialPort.GetPortNames());
comboBox3.Items.AddRange(SerialPort.GetPortNames());
comboBox6.Items.AddRange(SerialPort.GetPortNames());
string[] BaudRate = { "1200", "2400", "4800", "9600", "19200", "38400", "57600", "115200" };
comboBox2.Items.AddRange(BaudRate);
comboBox4.Items.AddRange(BaudRate);
comboBox5.Items.AddRange(BaudRate);
}
private void Btnopen1_Click(object sender, EventArgs e)
{
if (!serialPort1.IsOpen)
{
serialPort1.PortName = comboBox1.Text;
serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);
try
{
serialPort1.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Btnopen1.Text = "Disconnect";
}
else
{
serialPort1.Close();
Btnopen1.Text = "Connect";
}
}
private void Timer1_Tick(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
label7.Text = "Connected";
label7.ForeColor = Color.Green;
}
else if (!serialPort1.IsOpen)
{
label7.Text = "Disconnected";
label7.ForeColor = Color.Red;
}
}
private void SerialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
InputData = serialPort1.ReadExisting();
if (InputData != String.Empty)
{
// txtIn.Text = InputData; // Ko dùng đc như thế này vì khác threads .
SetText(InputData); // Chính vì vậy phải sử dụng ủy quyền tại đây. Gọi delegate đã khai báo trước đó.
}
}
private void SetText(string text)
{
if (label11.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText); // khởi tạo 1 delegate mới gọi đến SetText
Invoke(d, new object[] { text });
}
else label11.Text = text;
}
private void Btnopen2_Click(object sender, EventArgs e)
{
if (!serialPort2.IsOpen)
{
serialPort2.PortName = comboBox3.Text;
serialPort2.BaudRate = Convert.ToInt32(comboBox4.Text);
try
{
serialPort2.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Btnopen2.Text = "Disconnect";
}
else
{
serialPort2.Close();
Btnopen2.Text = "Connect";
}
}
private void Timer2_Tick(object sender, EventArgs e)
{
if (serialPort2.IsOpen)
{
label10.Text = "Connected";
label10.ForeColor = Color.Green;
}
else if (!serialPort2.IsOpen)
{
label10.Text = "Disconnected";
label10.ForeColor = Color.Red;
}
}
private void SerialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
InputData2 = serialPort2.ReadExisting();
if (InputData2 != String.Empty)
{
// txtIn.Text = InputData; // Ko dùng đc như thế này vì khác threads .
SetText2(InputData2); // Chính vì vậy phải sử dụng ủy quyền tại đây. Gọi delegate đã khai báo trước đó.
}
}
private void SetText2(string text)
{
if (label13.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText2); // khởi tạo 1 delegate mới gọi đến SetText
Invoke(d, new object[] { text });
}
else
{
label13.Text = text;
}
}
[COLOR=rgb(209, 72, 65)] if (label11.Text == label13.Text)
{
label18.Text = "OK";
}
else
{
label18.Text = "NG";