Помогите с serial port C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Diagnostics.Eventing.Reader;
using System.Drawing;
using System.IO .Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Windows .Forms;
namespace WindowsFormsApp7
{
public partial class Form1 : Form
{
private SerialPort serialPort;
public Form1()
{
InitializeComponent();
string[] ports = SerialPort.GetPortNames();
comboBox1.Items.AddRange(ports);
}
private void button2_Click(object sender, EventArgs e)
{
if (label5.Visible)
{
label5.Visible = false;
pictureBox1.Visible = false;
}
else
{
label5.Visible = true;
pictureBox1.Visible = true;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (comboBox1.SelectedItem == null) return;
try
{
serialPort = new SerialPort(comboBox1.SelectedItem.ToString(), 9600);
serialPort.Open ();
label4.Text = "Ожидание...";
button1.Enabled = false; // Отключаем кнопку
// Ждем ответа от контроллера. Увеличили таймаут, чтобы наверняка
// Ждем не больше 2 секунд, чтобы не блокировать UI надолго.
Thread.Sleep(2000); // Ждем 2 секунды
string data = serialPort.ReadExisting();
if (data.Contains("BT"))
{
label4.Text = "ОК";
button3.Visible = true;
button3.Enabled = true;
}
else
{
label4.Text = "Нет ответа или неверный ответ.";
button1.Enabled = true; // Включаем кнопку, если ответа нет
}
}
catch (Exception ex)
{
label4.Text = "Error: " + ex.Message;
button1.Enabled = true; // Включаем кнопку в случае ошибки
}
finally
{
if (serialPort != null && serialPort.IsOpen)
{
serialPort.Close();
}
}
}
private void button3_Click(object sender, EventArgs e)
{
Form2 myForm = new Form2();
myForm.Show();
}
}
}
Я хочу чтобы сигнал BT
Превратился в событие
Ну типа как событие клик на кнопке
И чтобы это распространялось на другие окна проекта
Что нужно сделать
Если вам не сложно
Напишите полный код
Пж пж
Я ХЗ, что такое "распространялось на другие окна проекта".
Сообщение о нажатии клавиши получает активное окно, так устроена система.
Я также ХЗ, что ты собрался "превращть в событие". У SerialPort уже есть событие DataReceived, что тебе еще надобно, старче?
А еще в твоем коде не задается четность, стоп-биты и другие параметры соединения. Надеюсь, у тебя там совпадение по умолчанию.
В общем, документация и примеры тут, дерзай: https://learn.microsoft.com/en-us/dotnet/api/system.io.ports.serialport?view=net-9.0-pp