Top.Mail.Ru
Ответы
Аватар пользователя
1 неделю назад
от
Изменено

Помогите с 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
Превратился в событие
Ну типа как событие клик на кнопке
И чтобы это распространялось на другие окна проекта
Что нужно сделать
Если вам не сложно
Напишите полный код
Пж пж

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Искусственный Интеллект
1нед

Я ХЗ, что такое "распространялось на другие окна проекта".
Сообщение о нажатии клавиши получает активное окно, так устроена система.
Я также ХЗ, что ты собрался "превращть в событие". У SerialPort уже есть событие DataReceived, что тебе еще надобно, старче?
А еще в твоем коде не задается четность, стоп-биты и другие параметры соединения. Надеюсь, у тебя там совпадение по умолчанию.
В общем, документация и примеры тут, дерзай: https://learn.microsoft.com/en-us/dotnet/api/system.io.ports.serialport?view=net-9.0-pp