这个问题的解决方案可能非常简单,但我对动态与设备交互还很陌生。我正在做的是制作一个Python可执行代码,这样用户的计算机上就不必有Idle或任何类型的Python解释器,这意味着我不知道设备将插入哪个USB端口到。该程序需要能够打开与通过串行到 USB 转换器连接的设备的连接。如何确定哪个连接的设备是打开端口的正确设备?我正在使用 pySerial 与设备交互。任何帮助将不胜感激。
无论您如何配置设备,在某些时候您可能都必须询问用户端口在哪里,或者轮询所有串行设备以获得已知响应。 (但是投票也有缺陷,所以请继续阅读!)。与 USB 设备不同,当您连接普通的串行设备时,操作系统不会获知供应商/设备 ID。
首先,您需要找到串行端口。这是一个可能有帮助的问题:Python中枚举串口(包括虚拟端口)的跨平台方法是什么? https://stackoverflow.com/questions/11303850/what-is-the-cross-platform-method-of-enumerating-serial-ports-in-python-includi.
一旦获得了串行端口列表,您就可以询问用户是否知道要使用哪个端口。如果他们这样做了,问题就解决了!
如果没有,您可以使用您收集的一些数据来轮询所有串行设备。know将从您的设备产生一定的响应。但请记住,如果用户连接了其他串行设备,您的“hello”字节字符串实际上可能是其他设备的自毁序列!因此,您应该警告用户轮询可能会干扰其他设备,并始终在这样做之前提示他们。
如果不了解有关代码的更多信息(例如,您正在使用什么通信框架(如果有的话);您是在控制台中执行此操作还是使用 GUI 工具包等),则不可能说出编写此代码的最佳方法可能。在最简单的情况下,您可以循环遍历所有串行设备,发送问候语并检查响应。 (您也可以并行执行此操作:循环一次问候语,然后再次循环检查缓冲区中的内容。如果您想要比这更奇特的内容,请使用适当的库。)
边注: You might如果您有一个可以为其设置供应商/设备 ID 的内置转换器,则可以解决此问题,但任何现代操作系统仍会自动检测到该转换器并将其枚举为串行端口;您无法将其作为 USB 设备直接与其对话。可以找出哪个端口与哪个 ID 对应,但我从未尝试这样做。但如果您不是挑选转换器的人(例如,如果它是用户提供的电缆),则这种方法毫无用处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)