【发布时间】:2010-09-25 13:15:16
【问题描述】:
我正在处理一个项目,其中运行在手机上的程序需要与运行在它所连接的 PC 上的程序进行通信。理想情况下,我想使用 USB、WiFi 等任何方式进行通信。
这两个程序应该能够交流电池寿命、短信等内容……但我可以稍后再处理,我只需要让它们说话。
最好的方法是什么?
【问题讨论】:
标签: c# windows-mobile
我正在处理一个项目,其中运行在手机上的程序需要与运行在它所连接的 PC 上的程序进行通信。理想情况下,我想使用 USB、WiFi 等任何方式进行通信。
这两个程序应该能够交流电池寿命、短信等内容……但我可以稍后再处理,我只需要让它们说话。
最好的方法是什么?
【问题讨论】:
标签: c# windows-mobile
在 2015 年发现了这个,所以我认为答案与最初的提问者无关,但记录在案: 接近 https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh465205.aspx
【讨论】:
假设您有 wifi 连接,您的 Windows Mobile 程序与您的 PC 通信的一种方法是在 .NET compact framework 3.5 上使用 WCF。
您将创建一个新的 WCF 应用程序来运行您的 PC,并公开一个接口来公开您希望从 Windows Mobile 设备调用的函数。
Windows Mobile 上的 WCF 需要在您的设备上安装 Compact Framework 3.5。 您还需要“Windows Mobile power Toys”才能生成兼容的代理以从 Windows mobile 调用。
Power Toys for .NET Compact Framework 3.5
从您的 WM 设备调用 WCF 服务还需要您手动设置绑定和端点以传递到您的 Web 服务代理(对于桌面 WCF,这是通过从配置文件加载它们自动完成的)。
Windows Mobile 上的 WCF 目前仅支持基本的 http 绑定(可以根据需要对其进行加密),但这可能足以满足您的需求。
【讨论】:
“最佳”确实是主观的,并且高度依赖于许多因素,如设备、拓扑、防火墙存在、安全需求等。
您需要从哪里发起通信?您是否有 ActiveSync 连接?如果 PC 启动通信并且您有 ActiveSync,那么 RAPI 就是您要使用的传输方式,因为它已经完成并准备好了所有基础架构。
对于其他任何事情,您都需要某种形式的专有协议和传输机制。通常,我编写一个简单的套接字协议,它具有定义的消息结构(通常是消息 ID、CRC、消息长度和数据有效负载)。然后,我有一些基本消息类来处理我想要的每个特定命令的通信和一组派生消息。对于需要响应的 2-way 内容,我通常会创建一个基本 Response 类,然后从中派生特定的响应格式。
【讨论】:
您可以尝试查看 OpeNETCF.Desktop.Communications 库。您可以从http://www.opennetcf.com/FreeSoftware/tabid/84/Default.aspx 开始,然后按照链接查找必要的下载。 (我认为您可能需要从他们的 subversion 存储库中获取它)。
【讨论】: