修改 USB Host 库支持 Leonrado 模拟键盘鼠标-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6565|回复: 16

修改 USB Host 库支持 Leonrado 模拟键盘鼠标

[复制链接]
发表于 2017-4-18 21:42 | 显示全部楼层 |阅读模式
前面做了一块能将 Leonrado 转接为 Uno 的板子,二者最大的差别在于SPI信号位置的问题。

解决了上面的问题,下面就是软件的问题了。

我在编译一个使用Leonrado 自带USB Keyboard功能的时候遇到奇怪的问题,始终提示没有加入include “keyboard.h”。经过一番研究发现,出现这个问题的原因是:IDE定义USB keyboard的时候定义了HID Class,而USBHost 库在解析USB设备的时候同样定义了一个HID Class,二者存在冲突。
对此,需要修改避免HID Class 的冲突。我选择修改 USB Host库,因为这个毕竟是第三方库。

最终将库中的 HID Class全部修改为 NewHID ,这样我们可以在 Leonrado 同时使用 USB Host 和 模拟键盘鼠标了。

附件是修改之前和之后的版本,亲测有效:

USB_Host_Shield_Library_2.0_Modified.zip (355.33 KB, 下载次数: 35)

USB_Host_Shield_Library_2.0ORG.zip (355.2 KB, 下载次数: 32)

发表于 2019-3-17 15:50 | 显示全部楼层
我也碰到了类似的问题,还不知道和你碰到的是不是完全相同。你给断断,Arduino:1.8.1 (Windows 7), TD: 1.45, 开发板:"Teensy 2.0, MIDI, 16 MHz, US English"

midiusbcallback: In function 'void setup()':
midiusbcallback:16: error: 'MIDI' was not declared in this scope
   MIDI.setHandleNoteOn(myNoteOn);

   ^

midiusbcallback: In function 'void loop()':
midiusbcallback:23: error: 'MIDI' was not declared in this scope
   MIDI.read();

   ^

"MIDI.h" 对应多个库
已使用: C:\Users\Administrator\Documents\Arduino\libraries\MIDI
未使用:C:\Program Files\Arduino\hardware\teensy\avr\libraries\MIDI
'MIDI' was not declared in this scope

在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。

点评

贴出你完整的程序,我试试吧。我有装 teensy 的编译库  发表于 2019-3-17 17:06
发表于 2019-3-17 15:51 | 显示全部楼层
无论我删掉哪一个都没办法通过编译,求指点。
发表于 2019-3-17 15:52 | 显示全部楼层
好像之前还听你提起过修改SPI库,回去找帖子,寻不见了。

点评

不需要修改 spi 库的,我不记得自己说过  发表于 2019-3-17 17:06
发表于 2019-3-17 15:53 | 显示全部楼层
如果真的要修改冲突的库,需要做哪些工作呢?
发表于 2019-3-17 20:58 | 显示全部楼层
谢谢老大!问题已经侥幸被我解决,具体什么原因我还不知道,相同的程序,我直接改的arduinoIDE文件-示例-MidiLirary-Callbacks,然后编译,是正常的。看来是程序位置的问题。
发表于 2019-3-17 21:02 | 显示全部楼层
还有一个问题,我想只有你懂回答,因为涉及“usb抓包分析”&"usbhostshield"。我最近在家折腾电子琴,受你启发又玩usbhostshield,自然就想把电子琴usb口里的信号用usb-host-shield引出来。

点评

可以啊,电子琴的 midi 是 usb 标准协议问题不大。你先试试 usblyzer 抓包看看。  发表于 2019-3-17 21:16
发表于 2019-3-17 21:26 | 显示全部楼层
我有两台电子琴,一台杂牌的,一台卡西欧的。杂牌的是插上电脑自己安装驱动的( a "class compliant" MIDI device),用arduinoIDE文件-示例-USB Host Shield Libray2.0-USBH_MIDI-USB_MIDI_converter,读取成功。卡西欧的电子琴第一次使用是需要下载驱动程序的,用示例读取不成功,我猜大概是卡西欧自做一套搞的什么屁,想请教的是有没有可能用你之前提到过的USBlyzer去分析清楚,然后怎么弄一下就可以让usb-host-shield读到呢?

点评

http://www.lab-z.com/usblyzer/ Usblyzer 使用说明。 卡西欧的需要自己分析了,不过你可以先搜索一下是否有人研究过你那个型号的。  发表于 2019-3-17 21:37
发表于 2019-3-17 21:31 | 显示全部楼层
其实我也是脑洞一开随便一问,我也没用过usblyzer,只是之前你推荐过这个东西就记住了,如果根本不可行,那就见笑啦。
发表于 2019-3-17 21:50 | 显示全部楼层
还有个问题实在忍不住问哈,那台很贵的usb分析仪是用自己的钱买的吗?

点评

USB 逻辑分析仪是公司的,原价 24万。  发表于 2019-3-17 21:51
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:45 , Processed in 0.084985 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表