【问题标题】:MIDI Bluetooth LE, SYSEX messages are not completeMIDI 蓝牙 LE、SYSEX 消息不完整
【发布时间】:2016-12-16 10:20:05
【问题描述】:
使用 MIDI 蓝牙 LE 框架,我通过蓝牙发送此 MIDI SYSEX 消息:
“F0H 26H 79H 0EH 7FH F7H”
我通过蓝牙接收:
“F0H 26H 79H 0EH 7FH”(缺少 SYSEX 结尾)
我必须以编程方式添加结束字节,但我不知道何时结束。这是框架中的错误吗?
【问题讨论】:
标签:
bluetooth-lowenergy
midi
coremidi
【解决方案1】:
回调方法出错。现在它可以在 Yamaha MD-BT01 上正常工作。
捕获 MIDI In 数据并将其填充到环形缓冲区中以供以后处理:
static void MyMIDIReadProc(const MIDIPacketList *pktlist, void *refCon, void *connRefCon) {
for (unsigned int i = 0; i < pktlist->numPackets; i++) {
if (i == 0) packet2 = pktlist->packet[0];
nBytes2 = packet2.length;
iByte2 = 0;
while (iByte2 < nBytes2) {
inputByte2 = packet2.data[iByte2];
inppoint2++;
if (inppoint2 >= bufsize2){
inppoint2 = 0;
}
inputBuffer2[inppoint2] = inputByte2;
iByte2 ++;
}
packet2 = *MIDIPacketNext(&packet2);
}
}