我有一个应用程序,我需要知道它运行的Windows移动设备何时停靠,任何想法如何做到这一点?Windows Mobile设备可以检测它的停靠时间吗?
回答
当您可以解析PPP_PEER机器名称时,Windows Mobile设备已停靠,该名称可用于设备与停靠的主机之间的TCP通信。然而,只有当摇篮实际连接到PC时才是如此。
public static bool ActiveSyncConnected
{
get
{
try
{
IPHostEntry entry = Dns.GetHostEntry("PPP_PEER");
return true;
}
catch
{
return false;
}
}
}
另一种解决方案(至少为工业设备)将是检查AC线状态,即,它当前是否连接到电源适配器。无论是否连接到个人电脑,设备都处于支架状态时都是如此。
public bool CurrentlyConnectedToACLine
{
get
{
SYSTEM_POWER_STATUS_EX status = new SYSTEM_POWER_STATUS_EX();
if (GetSystemPowerStatusEx(status, true))
return status.ACLineStatus != 0;
else
return false;
}
}
[StructLayout(LayoutKind.Sequential)]
internal class SYSTEM_POWER_STATUS_EX
{
public byte ACLineStatus = 0;
public byte BatteryFlag = 0;
public byte BatteryLifePercent = 0;
public byte Reserved1 = 0;
public uint BatteryLifeTime = 0;
public uint BatteryFullLifeTime = 0;
public byte Reserved2 = 0;
public byte BackupBatteryFlag = 0;
public byte BackupBatteryLifePercent = 0;
public byte Reserved3 = 0;
public uint BackupBatteryLifeTime = 0;
public uint BackupBatteryFullLifeTime = 0;
}
[DllImport("coredll.dll")]
private static extern bool GetSystemPowerStatusEx(SYSTEM_POWER_STATUS_EX lpSystemPowerStatus, bool fUpdate);
使用ppp_peer假定您正在PC上运行ActiveSync/WMDC。设备不会启动TCP/IP连接。 – josef
是的,使用WM/WCE设备时通常是这种情况。设备本身不会创建TCP连接,但是*如果要与ActiveSync主机通信,则PPP_PEER是您可以使用的计算机名称。 –
Downvoter,关注为什么你downvote一个完全有效的答案? –
除了托尔斯滕的建议,你也可以寻找的NOTIFICATION_EVENT_RS232_DETECTED
通知。当USB很罕见的时候,事件名称就是从后面遗留下来的,所以忽略它说RS232的事实,即使是在USB发生RS232事件的情况下。
您可以使用CeRunAppAtEvent
挂钩通知。同样,忽略API的名称意味着什么 - 您也可以使用它来设置可以WaitForSingleObject的系统事件。
以上所有答案都是正确的,但使用不同的方法。问题是,为什么你的应用程序需要知道设备是否停靠。
如果使用PC ActiveSync Paasthru TCP/IP连接,则最好使用PPP_PEER解决方案。
如果您只需要知道,如果设备是外部供电的,那么使用PowerstatusEx和AC_LINE是最好的。这也可以通过电源通知队列使用,以便应用程序不需要轮询状态(另请参阅NOTIFICATION_EVENT_RS232_DETECTED方法)。
如果您只需要知道,该设备已装载,NOTIFICATION_EVENT_RS232_DETECTED方法是最好的。例如,如果您有车辆停靠站并想开始与连接到停靠站的车辆黑匣子进行通信。
你看,虽然所有的解决方案看起来都差不多,但它们有不同的意图。
- 1. Windows Mobile 6.5设备停用无线时停靠
- 2. 当停靠Windows Mobile设备时关闭文件
- 3. 如何在可可中检测停靠的设备
- 4. 当设备的历元时间不可靠时,用Python测量时间
- 5. WebPage可以检测它在IOS UIWebView中打开的时间吗?
- 6. Desktop和Mobile设备之间的C#平台检测
- 7. 我可以依靠iOS设备时钟正确吗?
- 8. 检测Windows Mobile设备上的软重置
- 9. Android可穿戴设备可以检测体温吗?
- 10. 检查Windows Mobile设备是否空闲
- 11. 检测ie浏览器的新方法,它可靠吗?
- 12. 在Python中可靠地检测Windows
- 13. 检测设备是否支持jQuery Mobile
- 14. 枚举Windows Mobile设备上的时区
- 15. 如何检测Windows Mobile 5设备序列号? (.NET CF 3.5)
- 16. 从电脑设置Windows Mobile设备系统时间?
- 17. 如何可靠地检测绑定设备是否支持GATT?
- 18. 可靠的Android设备
- 19. 如果移动设备被静音,Javascript可以检测到吗?
- 20. 可以在Android设备上检测LF RFID标签吗?
- 21. 我可以检查iPhone是否停靠吗?
- 22. 在Windows上可靠的短时间跨度测量
- 23. 禁用Windows Mobile设备
- 24. 验证Windows Mobile 6设备
- 25. 在Windows 10更新后Windows Mobile设备中心停止工作
- 26. 我可以依靠MSXML4吗?
- 27. 设备主题检测在Windows Phone的
- 28. 如何让Windows Mobile设备中心检测到Windows Phone 7系列模拟器?
- 29. 我可以通过编程更改设备上的时间吗?
- 30. 我可以在Windows RT设备上测试Windows Phone应用程序吗?
可能重复? http://stackoverflow.com/questions/3440517/detecting-when-a-pocket-pc-is-docked-in-a-cradle-in-windows-mobile-2003 – nk2003dec
@ nk2003dec:不,那个问题是关于从PC端检测它,这个问题是关于检测它的设备端。 – ctacke