我有与设备通信的应用程序。设备通过串行 COM 端口连接。我的应用程序可以与设备通信。
我需要一些方法/事件,可以通过正在运行的应用程序扫描 COM 端口。当我将设备连接到 PC 时 - 方法/事件将打印带有消息“已连接”的 MessageBox,或类似的东西。
我发现了这样的事情:
comPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
但它不起作用。
我有与设备通信的应用程序。设备通过串行 COM 端口连接。我的应用程序可以与设备通信。
我需要一些方法/事件,可以通过正在运行的应用程序扫描 COM 端口。当我将设备连接到 PC 时 - 方法/事件将打印带有消息“已连接”的 MessageBox,或类似的东西。
我发现了这样的事情:
comPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
但它不起作用。
我不确定您是尝试自动检测设备连接到哪个端口,还是自动检测设备是否连接到特定端口。
但是,在这两种情况下,原理是相同的:
SerialPort
对象并调用Open来打开一个连接SerialPort
连接。在任何给定点执行上述操作将告诉您您的设备是否在该点连接,以及它连接到哪个端口。
如果您需要连续进行存在检测,那么您可能需要创建一个计时器并定期执行此测试(每 30 秒或每 2 分钟 - 取决于您愿意接受的延迟)。
笔记
正如其他人在答案中指出的那样,您将希望异步运行串行端口检测代码,以免在扫描端口时阻塞您的主应用程序。由于未连接设备的端口超时,因此保证扫描需要一段时间。