2

我正在编写与我自己设计的电子设备通信(通过串行端口)的应用程序。

当我的 PC 应用程序启动时 - 它会一一打开可用的 COM 端口并发送一些字符串(例如“你是什么?”)。

我的设备被编程,用自己的 ID 回答那个“神奇的问题”(例如:“我是监督员工的邪恶设备”)。

当我的 PC 软件收到“神奇回复”时,它开始正常工作,不再搜索其他端口。

当然我没有在数据传输中使用愚蠢的问题,这只是一个例子。

问题是 - 我可以在所有(不忙)端口上发送字符串来发现我的设备吗?

如果可以的话——那个“问题”字符串应该是什么样子?有没有标准化的标准?

这不是我办公桌上的第一个这样的项目,但现在我正在为小行业开发解决方案,我需要更多地关注我的应用程序在做什么,因为可能有其他设备连接到 COM 端口,我不知道它们如何做出反应。

对不起,如果我犯了一些语言错误,英语是我的第三语言。

提前感谢您的回复。

4

2 回答 2

5

在 Alvin Wong 确认了我的担忧后,我再次考虑并重新设计了我的设备发现功能,因为我不想放弃这个想法。

我将每 1-5 秒从设备发送一次唯一复杂的 ID。

当我的电脑启动时 - 它会尝试按顺序打开所有可用端口并监听该 ID 几秒钟。

如果应用程序收到该 ID - 这将是确认,该端口号/名称是正确的,并且我的连接已建立。

于 2012-10-01T17:04:48.857 回答
2

不,你不想那样做。


当您使用 COM 串行端口时,您不知道端口中插入了什么。它可能什么都不是,你的设备、调制解调器、鼠标(尽管我相信没有人再使用它了……)或任何你无法想象的东西。

想象一下,如果它连接到另一台计算机(可能是 Linux/路由器),发送内容可能会导致执行“该命令”,从而产生意想不到的效果(尽管您的程序可能不会注意到)。或者,如果它是一些编程错误的设备,它可能会触发固件中的错误,从而使设备失效并使其发生故障。

简而言之,在最坏的情况下,您可能会引发灾难性事件


串行(我假设是 RS232 或 UART)通信没有指定的传输协议(与 USB 相比)来识别设备,因此它不是故障安全的。用户必须确保他选择了正确的端口。这大概是硬件厂商选择 USB 的原因之一,也是 USB 如此受欢迎的原因之一,即使对于电脑白痴也是如此。

于 2012-10-01T16:25:07.820 回答