串口 - 如何安全搜索我的设备?

时间:2012-10-01 16:00:58

标签: serial-port standards protocols serial-communication

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

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

我的设备已经过编程,可以回复那个"魔术问题"拥有自己的ID(例如:"我是监督员工的邪恶设备")。

当我的PC软件收到"魔术回复"它开始正常工作,不再搜索其他端口了。

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

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

如果我可以 - 那该怎样"问题"字符串应该看?有没有标准化的标准?

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

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

提前感谢您的回复。

2 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:2)

不,你不想这样做。


当您使用COM串口时,您不知道插入端口的是什么。它可能是什么,你的设备,调制解调器,鼠标(虽然我相信没有人再使用它了......)或者你甚至无法想象的任何东西。

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

简而言之,在最糟糕的情况下,您可以导致灾难性事件


串行(我假设为RS232或UART)通信没有指定的传输协议(与具有一个的USB相比)来识别设备,因此它不是故障安全的。用户必须确保他选择了正确的端口。这可能是硬件制造商选择USB的原因之一,也是USB如此受欢迎的原因之一,甚至是计算机白痴。