我正在编写应用程序(通过串口)与我自己设计的电子设备进行通信。
当我的PC应用程序启动时 - 它会逐个打开可用的COM端口并发送一些字符串("你是什么?"例如)。
我的设备已经过编程,可以回复那个"魔术问题"拥有自己的ID(例如:"我是监督员工的邪恶设备")。
当我的PC软件收到"魔术回复"它开始正常工作,不再搜索其他端口了。
当然,我不是在数据传输中使用愚蠢的问题,这只是一个例子。
问题是 - 我可以发送所有(非忙)端口的字符串来发现我的设备吗?
如果我可以 - 那该怎样"问题"字符串应该看?有没有标准化的标准?
这不是我桌面上的第一个这样的项目,但现在我正在为小行业开发解决方案,我需要更多关注我的应用程序在做什么,因为可能有其他设备连接到COM端口而我不知道他们如何反应。
对不起,如果我犯了一些语言错误,英语是我的第三语言。
提前感谢您的回复。
答案 0 :(得分:5)
在Alvin Wong确认我的担忧后,我再次考虑并重新设计了我的设备发现功能,因为我不想放弃这个想法。
我将每隔1-5秒从设备发送一个唯一复杂的ID。
当我的电脑启动时 - 它会尝试按顺序打开所有可用端口,并会在几秒钟内侦听该ID。
如果应用程序收到该ID - 它将被确认,该端口号/名称是正确的,我的连接已建立。
答案 1 :(得分:2)
不,你不想这样做。
当您使用COM串口时,您不知道插入端口的是什么。它可能是什么,你的设备,调制解调器,鼠标(虽然我相信没有人再使用它了......)或者你甚至无法想象的任何东西。
想象一下,如果它连接到另一台计算机(可能是Linux /路由器),发送内容可能会导致执行“该命令”,从而产生意想不到的效果(尽管您的程序可能不会注意到)。或者,如果它是一个编程错误的设备,它可能会触发固件中的错误,从而导致设备故障并使其发生故障。
简而言之,在最糟糕的情况下,您可以导致灾难性事件。
串行(我假设为RS232或UART)通信没有指定的传输协议(与具有一个的USB相比)来识别设备,因此它不是故障安全的。用户必须确保他选择了正确的端口。这可能是硬件制造商选择USB的原因之一,也是USB如此受欢迎的原因之一,甚至是计算机白痴。