我正在使用带有 Firmata 库的 Arduino 与 C# 应用程序进行通信,我想消除 COM 端口配置组件,因为它可以在机器之间更改...
是否可以:
- 枚举系统中的 COM 端口列表? (在我的谷歌搜索中,我看到了一些相当丑陋的 Win32 API 代码,希望现在可能有一个更简洁的版本)
- 自动检测哪些 COM 端口连接到 Arduino?
最佳答案
这一小段代码对此执行得非常好(返回 COM 端口字符串,即如果检测到 Arduino,则返回“COM12”):
private string AutodetectArduinoPort()
{
ManagementScope connectionScope = new ManagementScope();
SelectQuery serialQuery = new SelectQuery("SELECT * FROM Win32_SerialPort");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(connectionScope, serialQuery);
try
{
foreach (ManagementObject item in searcher.Get())
{
string desc = item["Description"].ToString();
string deviceId = item["DeviceID"].ToString();
if (desc.Contains("Arduino"))
{
return deviceId;
}
}
}
catch (ManagementException e)
{
/* Do Nothing */
}
return null;
}
关于c# - 如何自动检测Arduino COM端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3293889/