USB-MIDI 事件数据包中的电缆编号字段代表啥?
Posted
技术标签:
【中文标题】USB-MIDI 事件数据包中的电缆编号字段代表啥?【英文标题】:What does the Cable Number field represents in an USB-MIDI Event packet?USB-MIDI 事件数据包中的电缆编号字段代表什么? 【发布时间】:2019-05-17 14:32:31 【问题描述】:我的操作系统是 Windows 7,我使用 MIDI-OX 作为 MIDI 实用程序,使用wireshark 作为嗅探器。
目前在 STM32 上开发一些 MIDI 应用程序,我很难理解 USB-MIDI 事件数据包中电缆编号的含义。 USB MIDI Event packet
USB MIDI specification 声明(第 16、4 页):
电缆编号 (CN) 是一个介于 0x0 到 0xF 之间的值,指示与正在传输数据的端点关联的嵌入式 MIDI 插孔的编号分配。
在我的项目中,我有一个 ID 为 3 的嵌入式 Jack OUT。当尝试使用设置为 3 的电缆编号发送 USB-Midi 事件时,我的 MIDI-OX 无法识别我的 MIDI 消息,尽管它们被看到通过 Wireshark。将电缆编号更改为 0 可使 MIDI 事件被 MIDI OX 识别。 但我想了解它为什么会起作用。
我想我混淆了号码分配和杰克 ID,那么这个号码分配是什么?
【问题讨论】:
【参考方案1】:USB MIDI 规范第 3.1 节说:
USB-MIDI 函数中的每个实体都被分配了一个唯一的标识号,EntityID,包含在描述符的
bJackID
或bElementID
字段中。值 0x00 为未定义 ID 保留,有效地将 USB-MIDI 函数(插孔和元素)中可寻址实体的总数限制为 255。
所以这不能用于四位电缆编号。
那个“编号分配”指的是以下算法(每个人都假装很明显):端点的电缆编号从零到小于bNumEmbMIDIJack
。
【讨论】:
感谢您的解释。我设法让几个 MIDI 被识别并使用它。此电缆编号是特定类别 MS 批量数据端点描述符中指示的插孔索引。以上是关于USB-MIDI 事件数据包中的电缆编号字段代表啥?的主要内容,如果未能解决你的问题,请参考以下文章