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

时间:2016-02-27 19:18:34

标签: c#

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

  
    

启动发送数据的方法

  
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();
    }
}

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

我使用了停止标志,处置但没有任何作用。任何人都可以告诉我我在做什么错,或者我需要使用特定的范围,我需要打开和关闭通信,即使用()

1 个答案:

答案 0 :(得分:0)

你如何访问你的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();
    }
}

单击按钮后端口将关闭。