Stone_KINGDom 2018-07-12 01:17 采纳率: 100%
浏览 2795
已结题

C# 操作串口提示错误:由于IO线程退出或应用程序请求,已中止IO操作。

贴出代码
1.线程循环发送
public void PortListenThread()
{
while (true)
{
byte[] query = new byte[8] { 0x01, 0x02, 0x00, 0x00, 0x00, 0x10, 0x79, 0xC6 };
serPort.DiscardInBuffer();
serPort.Write(query, 0, query.Length);
Delay(500);
}
}

2.一个字节自动触发接收
public void IO_EventHandler(object sender, SerialDataReceivedEventArgs e)
{
int count = 0;

        Delay(100);

        count = serPort.BytesToRead;

        if (count < 6)
        {
            serPort.DiscardInBuffer();
        }
        else if (count > 6)
        {
            byte[] readBuffer = new byte[count];

            try
            {
                serPort.Read(readBuffer, 0, count);//报错:由于IO线程退出或应用程序请求,已中止IO操作。
            }
            catch (Exception a)
            {
                MessageBox.Show(a.Message);
            }
  • 写回答

5条回答

  • xacm 2018-07-13 01:09
    关注

    启动PortListenThread时,改用新线程。
    如:
    new Thread(PortListenThread).Start();

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!