繁体   English   中英

Windows Mobile设备可以检测到何时对接吗?

[英]Can the Windows Mobile device detect when it's docked?

我有一个应用程序,我需要知道运行它的Windows移动设备何时停靠,有什么主意该怎么做?

除了Thorsten的建议外,您还可以查找NOTIFICATION_EVENT_RS232_DETECTED通知。 当USB很少见时,该事件的名称是从后开始的,因此忽略它说RS232的事实,即使使用USB,也会发生RS232事件。

您可以使用CeRunAppAtEvent挂接通知。 同样,忽略API名称的含义-您也可以使用它来设置系统事件,可以在该事件上使用WaitForSingleObject。

有关详细信息和实现, 请参见此问题的答案

当您可以解析PPP_PEER计算机名称时,Windows Mobile设备将被对接,该名称可用于该设备与其所连接的主机之间的TCP通信。 但是,仅当底座实际连接到PC时,这才成立。

public static bool ActiveSyncConnected
{
    get
    {
        try
        {
            IPHostEntry entry = Dns.GetHostEntry("PPP_PEER");
            return true;
        }
        catch
        {
            return false;
        }
    }
}

另一个解决方案(至少对于工业设备而言)是检查AC线路状态,即当前是否连接到电源适配器。 不论设备是否连接到PC,都必须将其固定好。

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);

以上所有答案都是正确的,但使用不同的方法。 问题是,为什么您的应用程序需要知道设备是否已对接。

如果要使用PC ActiveSync Paasthru TCP / IP连接,则最好使用PPP_PEER解决方案。

如果您只想知道设备是否由外部供电,则最好使用PowerstatusEx和AC_LINE。 也可以通过电源通知队列来使用它,因此应用程序无需轮询状态(另请参阅NOTIFICATION_EVENT_RS232_DETECTED方法)。

如果您只想知道设备已被固定,则最好使用NOTIFICATION_EVENT_RS232_DETECTED方法。 例如,如果您有一个车辆底座,并想开始与连接到该底座的车辆黑匣子进行通信。

您会看到,尽管所有解决方案乍一看都差不多,但它们的意图是不同的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM