检测USB连接 - C#.Net CF 3.5

检测USB连接 - C#.Net CF 3.5

问题描述:

我有一个运行在Windows Mobile 6.1设备上的应用程序(.Net Compact Framework 3.5),并且我想要检测USB连接何时更改(连接或断开连接)。检测USB连接 - C#.Net CF 3.5

我最初使用SystemProperty.CradlePresent属性来触发一个事件,但我想知道这是否只适用于设备连接有ActiveSync?我将通过USB从未运行ActiveSync的Linux设备接收连接。

我仍然可以使用SystemProperty.CradlePresent来检测USB连接/断开连接吗?或者我需要探索其他选项来检测USB事件吗?谢谢。

+1

您正在通过USB将Linux设备连接到WM6设备? USB具有主/从架构; 2 _devices_不能直接通信,但必须通过_host_进行通信。 – MSalters 2011-03-24 09:20:19

+0

WM6设备仅通过Socket连接从Linux设备接收数据。我只是试图确定是否可以使用上面提到的SystemProperty来检测Linux设备何时通过USB连接。 – 2011-03-24 13:34:36

+0

我与MSalters。听起来你并不完全了解USB。你将成为一个奴隶装置。如果这变成了某种形式的套接字,那么我们是否假设你有一个驱动程序可以做到这一点?司机是否有任何通知? – ctacke 2011-03-24 15:22:39

检查this出来,你可能会抓住部分源代码。它用C#编写的GUI。请记住,每当运行程序检查新的USB驱动器时,它都会占用内存和CPU,因此您可能需要缩短它检查的时间间隔,然后为不耐烦的用户提供“刷新”按钮。

+0

该文章中描述的方法使用事件处理程序,而不是轮询方法。它不应该是CPU或内存密集型。 – Jon 2011-04-06 20:53:29

这也许以前我的问题可能会有所帮助:

How can I detect a USB disconnect event? (Windows, .NET C# application)

我结束了监听和处理WM_DEVICECHANGE事件。他们在这里指定:http://msdn.microsoft.com/en-us/library/aa363480(VS.85).aspx

不幸的是我没有一个源代码的副本了,所以我的记忆有点朦胧。我不知道这个解决方案是否适用于您的情况。