我正在 iPad 上处理 Midi,一切正常,我可以记录所有进入的内容,一切都按预期工作。但是,在尝试接收长消息(即 Sysex)时,我只能得到一个最大 256 字节的数据包,之后什么也没有。
使用 Apple 提供的代码:
MIDIPacket *packet = &packetList->packet[0];
for (int i = 0; i > packetList->numPackets; ++i) {
// ...
packet = MIDIPacketNext (packet);
}
packetList->numPackets
始终为 1。在我收到第一条消息后,在发送“新”sysex 消息之前不会调用其他回调方法。我不认为我的 MIDI 处理方法会被完整的 packetList 调用(可能是任何大小)。我原以为我会以流的形式接收数据。这个对吗?
在挖掘之后,我唯一能找到的是: http: //lists.apple.com/archives/coreaudio-api/2010/May/msg00189.html,其中提到了完全相同的事情,但没有太大帮助。我知道我可能需要实现缓冲,但我什至看不到前 256 个字节之后的任何内容,所以我不知道从哪里开始。