Serial port 串口-如何对我的设备执行安全搜索?

Serial port 串口-如何对我的设备执行安全搜索?,serial-port,standards,protocols,serial-communication,Serial Port,Standards,Protocols,Serial Communication,我正在写一个应用程序,通过串口和我自己设计的电子设备进行通信 当我的PC应用程序启动时,它会一个接一个地打开可用的COM端口,并发送一些字符串(“你是什么?”例如) 我的设备已编程,可以用自己的ID回答“神奇问题”(例如:“我是监督员工的邪恶设备”) 当我的电脑软件收到“神奇回复”时,它开始正常工作,不再搜索其他端口 当然,我不会在数据传输中使用愚蠢的问题,这只是一个例子 问题是-我可以在所有(不忙)端口上发送字符串来发现我的设备吗? 如果可以的话,“问题”字符串应该是什么样子?有没有标准化的标

我正在写一个应用程序,通过串口和我自己设计的电子设备进行通信

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

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

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

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

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

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

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

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


提前感谢您的回复。

不,您不想这样做


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

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

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



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

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

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

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


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

因此,我已确认我的问题。非常感谢。顺便说一句,我知道USB要好得多,但有时它对于简单的pc->设备通信来说太复杂了,即使我使用Atmel或Microchip的简化USB解决方案,也需要花费太多的时间来学习如何处理。如果您仅限于串行端口,那么无论您是进行查找还是让用户从列表中进行选择都几乎是一样的,在他们看来,这类似于:COMM1、COMM2。。。把事情搞砸的机会是一样的。不过,监听所有端口是一个好主意。)