WinCE 设备如何通过 USB 与 Android 手机互联?
最近在研究 WinCE 设备与 Android 手机之间的连接问题,通过 WIFI 等无线/有线网络,是比较简单的方法。但需要车机支持 WIFI、且有 WIFI 热点才行!
通过 USB 是现在比较常用的,例如多屏互动等现有功能,都是通过 USB 连接的。
但这种连接方法,在物理介质 USB 的基础上,是通过什么具体的协议(如:Socket)来实现的?Android 手机相对来说是标准的东东,但对于 WinCE 这个可定制的系统,需要哪些驱动/组件才能支持这样的功能呢?
手机是做 Host,还是 Device 呢?
RNDIS 是个人认为比较可行的方案,但具体如何实现还不清楚。
有没有哪位做过类似的东东,给点建议或意见吧。先行谢过!
____________________________________________________________________________________________
以下是一些 USB 连接的基本知识:
Android 设备在 USB device mode 时,可以有 MSC,ADB,RNDIS Ehternet,Mtp/Ptp,Accessory 和 Audio Source 等功能。
什么是 RNDIS 呢?
RNDIS 是指 Remote NDIS,基于 USB 实现 RNDIS 实际上就是 TCP/IP over USB,就是在 USB 设备上跑 TCP/IP,让 USB 设备看上去像一块网卡。
使用 RNDIS 协议通过 USB 共享网络。
NDIS 是 Network Driver Interface Specification,即网络驱动接口规范。NDIS 的主要目的就是为 NIC(网络接口卡,Network Interface Cards)制定出标准的 API 接口。
在 WinCE 中,根据需要来选择所需的 USB 功能,创建 WinCE 工程,然后在 Catalog Items View 中选择 ”Core OS”->”CEBASE”->”Core OS Services”->”:
1 USB Function Driver:用于支持 USB Device 驱动。
2 USB Host Support:用于支持 USB Host 控制器驱动。
3 USB Human Input Device (HID) Class Driver:用于支持 USB Host 外接 HID 设备,可选择同时支持 USB 鼠标键盘,也可以分开选择。
4 USB Printer Class Driver:用于支持 USB Host 打印功能。
5 USB Remote NDIS Class Driver:用于支持 USB Host 连接 RNDIS 设备。
6 USB Storage Class Driver:用于支持 USB Host 外接 U 盘的功能。
如果是 USB Device 设备,那么首先要选择上面提到的 USB Function Driver,然后在 Catalog Items View 中选择 ”Device Drivers”->”USB Function”->” :
1 Mass Storage:用于支持 USB Device 作为U盘功能。
2 RNDIS Client:用于支持 USB Device 作为 RNDIS 设备。
3 Serial:用于支持 USB Device 作为串口设备。
对于 USB Device 设备,可以支持 Mass Storage,RNDIS 和 Serial 功能,不过同一个 USB Device 在系统启动以后只能支持某一个功能。