开源改变世界!!

COM 菜单有时会变得有点疯狂。 #397

推推 grbl 2年前 (2023-01-26) 118次浏览
关闭
buildlog 打开了这个问题 2018 年 7 月 15 日 · 6条评论
关闭

COM 菜单有时会变得有点疯狂。#397

buildlog 打开了这个问题 2018 年 7 月 15 日 · 6条评论

注释

COM 菜单有时会变得有点疯狂。 #397

有时我的 COM 菜单有点乱。根据设备管理器,我只有 3 个和 10 个。

COM 菜单有时会变得有点疯狂。 #397

COM 菜单有时会变得有点疯狂。 #397
作者

这是设备管理器当时显示的内容。

顺便说一句:除了数字之外,是否可以显示描述性文字,以便更容易知道选择哪一个?

COM 菜单有时会变得有点疯狂。 #397

COM 菜单有时会变得有点疯狂。 #397
斯图尔特B4 评论了 2018 年 7 月 15 日  

如果您使用的是 Arduino 并且您有 Arduino IDE 正在运行,您应该能够看到它在哪个上。然后在 LaserGRBL 中选择相同的。
您还应该将波特率更改为 115200

COM 菜单有时会变得有点疯狂。 #397

COM 菜单有时会变得有点疯狂。 #397
作者

谢谢回复

是的,我知道如何找到要使用的那个。我只是认为如果它也在 LaserGrbl 中,它会节省一步。

为什么 LaserGrbl 列表中出现这么多重复项?

我在不同的处理器 (PSoC5) 上使用 Grbl 端口。USB 可以以最高 2M 的任何速度运行。我选择了 LaserGrbl 中最快的一个。

COM 菜单有时会变得有点疯狂。 #397

我在不同的处理器 (PSoC5) 上使用 Grbl 端口。

也许这就是原因。以前从未见过这种情况。

COM 菜单有时会变得有点疯狂。 #397
所有者

你好@buildlog感谢问题提交

填充 COM 菜单的代码使用 .net 框架函数 SerialPort.GetPortNames() 返回当前计算机的串行端口名称列表。

https://msdn.microsoft.com/it-it/library/system.io.ports.serialport.getportnames(v=vs.110).aspx

CBPort.BeginUpdate();
CBPort.Items.Clear();
foreach (string portname in System.IO.Ports.SerialPort.GetPortNames())
{
	string purgename = portname;

	//FIX https://github.com/arkypita/LaserGRBL/issues/31
	if (!char.IsDigit(purgename[purgename.Length - 1]))
		purgename = purgename.Substring(0, purgename.Length - 1);

	CBPort.Items.Add(purgename);
}
CBPort.EndUpdate();

如文档所述,端口名称是从系统注册表中获取的(例如,HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM)。如果注册表包含陈旧或不正确的数据,则 GetPortNames 方法将返回不正确的数据

此外,GetPortNames 有一些已知错误(与注册表中的不正确数据有关)会产生错误结果,因此我添加了“purgename”以删除最后一个字符(如果它不是数字)。

在我看来,您应该清除 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM 注册表项。

更多信息在这里:#31

COM 菜单有时会变得有点疯狂。 #397
所有者

顺便说一句:除了数字之外,是否可以显示描述性文字,以便更容易知道选择哪一个?

这是一个很好的提示,但需要我使用不同的函数来获取此信息,因为 System.IO.Ports.SerialPort 中的系统函数没有给我此信息。如果可能的话,我会通过其他方式看看