WinCE下USB串口功能实现

时间:2021-05-04 17:41:49

By Toradex 秦海

1). 简介

本文着重介绍嵌入式设备基于WinCE操作系统下通过USB模拟串口功能和PC主机实现点对点通信功能,在很多场景下,这个可以很方便的实现主机和嵌入式设备的通信。

本文所演示的系统为Toradex Colibri iMX6 ARM计算机模块(基于NXP iMX6 SoC)配合Colibri Eva Board,主机为配置标准Windows 7 32bit 系统计算机。

 

2). 具体配置步骤示例

a). Colibri iMX6嵌入式设备端

./ 模块安装Toradex官方发布WEC7 V1.1b2 image

./ 在CE系统控制面板-> PC Connection 选项里面,取消勾选“自动连接”,然后保存注册表。

./ Toradex image里面已经包含了USB 串口的驱动,默认是用来进行Active Sync连接使用,在这里可以查看USB 串口驱动对应的注册表键值

[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Serial_Class],从”Index”键值可以确定在设备CE端对应的COM端口,这里默认为”COM9:”

./ 为了后面和PC进行互联测试,设备端串口应用使用Toradex 开发者中心网站提供的UART测试Demo,只是将对应端口号修改为”COM9:” 。

------------------------------------

WinCE下USB串口功能实现

------------------------------------

 

b). Windows 7 32bit 主机端

./ 因为我们稍后将使用WinUSB与设备进行连接,因此首先需要将下面两个Windows Mobile Center相关服务禁止,避免串口被其占用。

WinCE下USB串口功能实现

./ 使用Microsoft WinUSB进行通讯,对于Toradex Colibri iMX6,其WinCE系统默认USB Serial Client驱动使用为Microsoft 官方测试USB VID/PID,基于测试使用,本文无需自定义WinUSB驱动,将设备连接到主机后,可以在设备管理器查看自动识别为Microsoft USB Sync设备。

WinCE下USB串口功能实现

而在实际产品开发中,客户应该需要配置自己的USB VID/PID(如需免费获得VID/PID资源请参考这里),这样就需要修改WinUSB驱动以适配,可以直接参考Microsoft MSDN说明进行修改部署,也可以借助第三方工具Zadig去定制化WinUSB驱动。

./ 主机端测试程序我们同样使用Toradex基于Microsoft 官方WinUSB例程修改的测试程序,请从下面下载:

WinUSB Serial Sample Project

项目里面同样也已经包含基于Windows Driver Kit Version 7.1.0的相关libs 和 headers。

./ 为了达到更好的测试效果,这里对原例程进行如下修改,将收到的字符串处理后通过Debug输出。

------------------------------------

WinCE下USB串口功能实现

------------------------------------

 

c). 通信测试示例

./ 首先将设备端应用部署运行UART 程序,如下

WinCE下USB串口功能实现

./ 然后在将主机端WinUSB例程编译并启动调试

WinCE下USB串口功能实现

./ 在设备端首先输入选项2进行发送数据操作,这时候可以看到主机调试端打印出收到对应的字符串

WinCE下USB串口功能实现

./ 然后再设备端输入选项1进行读取数据操作,同样可以接收到来自主机发送的字符串

WinCE下USB串口功能实现

 

参考资料:

http://developer.toradex.com/knowledge-base/serial-over-usb