C#正在关闭与Arduino的连接
我正在编写一个C#程序,向Arduino发送一些简单的命令。通过USB串行虚拟端口 有时程序挂起,即使代码受try/catch块保护 当我看到问题时,问题似乎在于关闭端口 功能非常简单:C#正在关闭与Arduino的连接,c#,arduino,serial-port,windows-7-embedded,C#,Arduino,Serial Port,Windows 7 Embedded,我正在编写一个C#程序,向Arduino发送一些简单的命令。通过USB串行虚拟端口 有时程序挂起,即使代码受try/catch块保护 当我看到问题时,问题似乎在于关闭端口 功能非常简单: void Send() { try { Debug.WriteLine("SR1 "+rel+" "+status); _serialArduino.Open(); Debug.WriteLine("SR2"); _serialArduino.WriteLine(stri
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)
有什么想法吗
*编辑以添加一些详细信息*
经过几天的调试和日志分析,我发现以下几点:
- 我正在一台运行Win7Embedded标准的设备上工作
- 应用程序是用C编写的#
- 一段时间后(或者可能是由于未知原因,目前为止),连接Arduino的端口从枚举端口列表中消失
- 程序最初报告我的日志“设备已断开连接”,然后报告“端口COM9不存在”消息
- 设备管理器在“端口”树上报告COM9(!!)
- 如果我关闭程序并重新运行它,它会报告“COM9不存在”,如果我列出端口,COM9不会出现
到目前为止,唯一的解决方案是重置电路板。
有没有办法在不重新启动的情况下重置驱动程序,并检查它是否以已知状态返回?
或者可能是DotNet框架没有检测到端口 值得一试的是,在应用程序启动时打开端口,并一直保持打开状态。这是在编辑线程之前完成的。当我修改源代码以在应用程序开始时打开端口,并在应用程序结束时关闭端口时,报告了这些错误。