Использование MIDI-библиотеки в моей собственной библиотеке


Сообщение об ошибке :

"error: invalid declarator before 'MIDI'
         MIDI_CREATE_INSTANCE(HardwareSerial, Serial1, MIDI);
                                                       ^
Plusieurs bibliothèque trouvées pour "libMidi.h"
/home/due32/Arduino/libraries/MIDI/midi_Defs.h:170:31: note: in definition of macro 'MIDI_CREATE_INSTANCE'
     midi::MidiInterface<Type> Name((Type&)SerialPort);"

libMidi.h

#ifndef libMidi_h
#define libMidi_h

#include <Arduino.h>
#include <MIDI.h>



    void midiSetup();
    void pmbMIDI();

//  void MIDI_CREATE_DEFAULT_INSTANCE(); //не работает

#endif

libMidi.cpp

#include "libMidi.h"
#include <MIDI.h>

void midiSetup(){

//midi::MidiInterface<Type> Name((Type&)SerialPort);

        void MIDI_CREATE_DEFAULT_INSTANCE();
        void MIDI.begin(MIDI_CHANNEL_OMNI);
}

void pmbMIDI(){
    if (MIDI.getType() == 144){
        digitalWrite(13, 1);}

    if (MIDI.getType() == 128){
        digitalWrite(13, 0);}
}

Спасибо заранее

, 👍-1

Обсуждение

Вы должны включить полное сообщение об ошибке. Каждая ошибка имеет номер строки, где она произошла. И, пожалуйста, покажите нам ваш полный код, включая скетч Arduino, который использует вашу библиотеку, чтобы мы также могли его протестировать., @chrisl


1 ответ


0
void MIDI_CREATE_DEFAULT_INSTANCE();

Эта строка не должна помещаться внутри функции, поскольку она является прямым объявлением функции.

Однако я думаю, что в вашем коде есть и другие проблемы.

Мое дикое предположение состоит в том, чтобы улучшить следующие строки:

  • Строка раскомментирования, которая не работает

Перемены

MIDI_CREATE_DEFAULT_INSTANCE();

чтобы

MIDI_CREATE_DEFAULT_INSTANCE();

и поместите его вне функции.

Удалите слово "пустота" в следующих строках

void midiSetup();
void pmbMIDI();

А также выровняйте { и }

void MIDI.begin(MIDI_CHANNEL_OMNI);

Так что это вызов функции.

Другие улучшения заключаются в удалении пробелов или вкладок в

    void midiSetup();
    void pmbMIDI();

Также выровняйте { и } в

if (MIDI.getType() == 144){
    digitalWrite(13, 1);}

if (MIDI.getType() == 128){
    digitalWrite(13, 0);}
,