首页 > 解决方案 > C# 挂起与 Arduino 的关闭连接

问题描述

我正在编写一个向 Arduino 发送一些简单命令的 C# 程序。通过 USB 串行虚拟端口。

有时会发生程序挂起,即使代码受 try/catch 块保护。

当我看到问题时,问题似乎在于关闭端口。

功能非常简单:

void Send() {
  try {  
    Debug.WriteLine("SR1 "+rel+" "+status);
    _serialArduino.Open();
    Debug.WriteLine("SR2");
    _serialArduino.WriteLine(string.Format("switch {0} {1}\n", rel, Convert.ToSByte(status)));
    Debug.WriteLine("SR3 '"+_serialArduino.ReadLine()+"'");
    _serialArduino.Close();
    Debug.WriteLine("SR4");
    Thread.Sleep(400);
  } catch (Exception e) {
    LogManager.Write(string.Format("ERR SwitchRel({0}, {1}) - {2}", rel, status, e.Message));
  }
}

我在 Close 函数期间读到了一个问题,但在这种情况下,没有定义 DataReceived 事件处理程序(==null)。

任何想法?

* 编辑添加了一些细节 *

经过几天的调试和日志分析,我发现了以下内容:

我的猜测是usbser驱动程序一团糟。
到目前为止,唯一的解决方案是重置电路板。
有没有办法在不重新启动的情况下重置驱动程序并检查它是否以已知状态返回?或者也许是没有检测到端口的 DotNet 框架?

标签: c#arduinoserial-portwindows-7-embedded

解决方案


推荐阅读