无法在串行通信中停止通信端口
本文关键字:通信 | 更新日期: 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();
}
}
单击按钮后端口将关闭。