即使在物联网时代的今天,你仍然需要通过本地连接来访问和控制你的嵌入式设备。出于安全考虑,你不一定想要通过网络来做一些关键的配置或者数据传输。亦或,你的设备需要一个特殊的维护接口。在这篇文章中,我将会分享通过usb 和你的嵌入式设备通信的方法。
在我们开始之前,让我来解释一些术语:在本文中,我将会讨论usb “主机”和“客户端”。“主机”是指用于连接你嵌入式设备的电脑,“客户端”则是你的嵌入式设备。并且,我会讨论只在 windows ce 中的一些方法。linux 也提供类似的方法。
韬睿预先编译好的 windows ce 镜像已经支持一些 usb 连接的方法:
- 大容量存储设备: usb 客户端被当作 usb 闪存设备。
- rndis 设备: usb 客户端被当作网络适配器
- 串行设备:usb 客户端被当作虚拟串口
如果你只需要在嵌入式设备上存取文件,那么大容量存储设备会更加合适。因为,用户将嵌入式设备视为挂载到电脑上的普通存储设备,所以你对于这整个过程掌控甚少。并且只有当 usb 设备插入后,嵌入式设备才能访问文件。
rndis 则会表现地和普通用户所期望的usb设备不一样。当连接usb设备后,所弹出的防火墙警报会令人摸不着头脑。第三种方法,串行设备,就我个人而言,在很多应用场合下都是最通用的方法。你可以完全控制嵌入式设备上的通信,无需顾虑前面两种方法意想不到的影响。
让我们重点关注串行设备的设置以及实现usb 串行通信所需要做的工作。无论是在主机还是客户端上,都已经有许多现成的支持方案,剩下的工作量就很小。我就大致介绍下所需的步骤:
客户端(韬睿模块):
1. 禁用 activesync,否则会占用串口连接,更多的信息请访问韬睿开发者中心网站。
2. 配置 toradex wince 镜像中的注册表,使你的设备看起来像一个特定的产品,默认情况下,主机上将会显示 microsoft usb sync 设备。当你开始销售你的产品时,你应该修改这些配置,当然在开始研发的时候,你也可以不进行设置。请访问msdn网站产看所有相关注册表配置。
3. 开发应用,在虚拟串口上发送命令和数据。在我们的开发者网站上你可以找到代码例程。在调用createfile() 函数后,你就可以和操作其他文件句柄一样进行读写。
主机:在主机上我们使用 winusb 和我们的嵌入式设备通讯
1. 如果你在上面第二步中,修改客户端上的厂商id和产品id,你就必须重新编译自己的 inf 文件,匹配 idvendor 和 idproduct。在msdn上获取如何编译自己的 winusb 驱动。
2. 开发应用,控制设备以及发起通信。在韬睿开发者网站上有用于主机上代码例程。
正如你看到的一样,usb 串口驱动是一种非常简单的方法。你不必关心内核级别的开发,所有的事情都可以在应用层完成。
PicsArt推出新增强现实(AR)相机体验的测试版,可以在iOS上进行测试
获诺贝尔奖的“量子点”有望应用于钙钛矿电池,光电转换效率近30%
台积电为什么不自己做芯片卖给其他公司
智慧警务如何加入安防元素
新型智慧城市的建设处于什么样的状态?又带动了哪些产业的发展?
如何控制嵌入式设备上的通信?
【制造业成功案例】无人工厂的下一步,排产也能“无人化”?
机器人做警察?未来机器人警察能够识别罪犯,搜集证据
日本电子业集体大滑坡,Panasonic劫数难逃
不用重新装修 几百元内轻松玩转全屋智能照明系统-geekpad智慧屏智能开关
历寒冬酷暑,仍逐光而行!
超40万吨产能落地 电池回收项目迎来密集扩产
正弦波振荡电路图
想入手移动固态硬盘?它的优缺点一定要知道
研华工控机应用领域分享
Arduino上的JPEG解码教程
华为Mate 60 Pro卫星通话功能仅支持电信卡,卫星通话功能设置教程
利用DSP56F805 的PWM模块输出高频正弦波设计方案
8月增21.7%!海尔智家厨电“卖场景”持续增长
仔细研究欧盟 ADS 立法草案中的合规评估