2016-02-27 99 views
0

我嘗試了一切,但一旦啓動並且通信建立後就無法停止串行通信。無法在串行通信中停止通信端口

Start方法發送數據

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端口。我如何實現它。

我已經使用停止標誌,處置但沒有任何工作。任何人都可以告訴我我正在做什麼錯,或者是否需要使用特定範圍,我需要打開和關閉通信,即使用()

回答

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

港越來越關閉點擊按鈕後。