我已经尝试了所有功能,但一旦启动它就无法停止串行通信并建立通信。
启动发送数据的方法
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 :(得分: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();
}
}
单击按钮后端口将关闭。