无法在串行通信中停止通信端口

本文关键字:通信 | 更新日期: 2023-09-27 18:36:28

我已经尝试了所有方法,但一旦启动串行通信并建立通信,我就无法停止串行通信。

发送数据的启动方法

public void Start(List<byte> RGBdata)
{           
    if (!m_port.IsOpen)
    {
        m_port.Open();
    }           
    do
    {
        Break();
        Thread.Sleep( 5 );
        m_port.Write( new byte[] { 0 }, 0, 1 );
        SendData(RGBdata);
        Thread.Sleep( 1);
    }
    while (true);
}
停止

以停止通信

public void Stop()
{
    m_port.Close();
    if (m_port.IsOpen)
    {
        m_port.Close();
        m_port.Dispose();
    }
}

我认为,当(真正的)循环连续工作时,我无法停止com端口。我如何实现它。

我使用了停止标志,处理,但没有任何效果。谁能告诉我我做错了什么,或者我需要使用我需要打开和关闭通信的特定范围,即使用()

无法在串行通信中停止通信端口

你如何访问你的 Stop() ?

我尝试了以下示例,按预期工作:

public partial class Form1 : Form
{
    SerialPort Port = new SerialPort("COM21", 9600);
    public Form1()
    {
        InitializeComponent();
        Task.Factory.StartNew(() =>
        {
            if (!Port.IsOpen)
            {
                Port.Open();
            }
            do
            {
                if (Port.IsOpen == false)
                {
                    MessageBox.Show("CLOSED!!!");
                    break;
                }
                Port.Write(new byte[] { 0 }, 0, 1);
            }
            while (true);
        });
    }
    private void button1_Click(object sender, EventArgs e)
    {
        Port.Close();
    }
}

单击按钮后端口将关闭。