Невозможно создать экземпляр объекта SLIPSerial, используемого в классах OSC/SLIPSerial для Arduino

Эй, я пытаюсь протестировать библиотеку CMAT/OSC для Arduino и просто хочу встать и запустить отправку сообщений OSC в кодировке SLIP. Я был в состоянии наблюдать типичный последовательный монитор при отправке сообщений OSC таким образом, но я не могу получить пример кода для компиляции:


    #include <SLIPEncodedSerial.h>
    #include <OSCData.h>
    #include <OSCBundle.h>
    #include <OSCBoards.h>
    #include <OSCTiming.h>
    #include <OSCMessage.h>
    #include <OSCMatch.h>
    #include <SLIPEncodedUSBSerial.h>
    
    SLIPEncodedUSBSerial SLIPSerial( thisBoardsSerialUSB );
    // SLIPEncodedSerial SLIPSerial(Serial);
    
    
    void setup() {
      //begin SLIPSerial just like Serial
      SLIPSerial.begin(9600);   // set this as high as you can reliably run on your platform
    }
    
    void loop(){
      //the message wants an OSC address as first argument
      OSCMessage msg("/address");
      msg.add("Hello World\n");
    ;
      
      SLIPSerial.beginPacket();  
      msg.send(SLIPSerial); // send the bytes to the SLIP stream
      SLIPSerial.endPacket(); // mark the end of the OSC Packet
      msg.empty(); // free space occupied by message
      delay(20);
    }

Кроме того, это ошибка вывода, которую я вижу:

error: 'SLIPEncodedUSBSerial' does not name a type; did you mean 'SLIPEncodedUSBSerial_h'?
   10 | SLIPEncodedUSBSerial SLIPSerial( thisBoardsSerialUSB );
      | ^~~~~~~~~~~~~~~~~~~~
      | SLIPEncodedUSBSerial_h
exit status 1
'SLIPEncodedUSBSerial' does not name a type; did you mean 'SLIPEncodedUSBSerial_h'?

Может ли кто-нибудь внести ясность в то, что такое "This Boardsserialusb" и "Serial" в этом контексте? Я думал, что конструкторы SLIPEncodedSerial / SLIPEncodedUSBSerial просто берут ссылку. Это может быть тривиально, но я не уверен, как правильно создать экземпляр этих классов в среде Arduino IDE.

Ваше здоровье!

, 👍1

Обсуждение

Для какой платы вы составляете список?, @Majenko

`thisBoardsSerialUSB " - это просто заполнитель для любого последовательного соединения USB для вашей платы. У некоторых он называется "Серийный", у некоторых - "USBSerial". Это зависит от вас, чтобы вставить правильную вещь., @Majenko

существует #if (defined(TEENSYDUINO) && defined(USB_SERIAL)) || (!defined(TEENSYDUINO) && defined(__AVR_ATmega32U4__)) || defined(__SAM3X8E__) || (defined(_USB) && defined(_USE_USB_FOR_SERIAL_)) || defined(_SAMD21_) || (defined(__PIC32MX__) || defined(__PIC32MZ__)), @Juraj

@Majenko Ну ладно! Я вчитался в пример кода слишком буквально! плата, которую я хотел бы использовать, - это Adafruit Metro M0 Express, который использует чип ATSAMD21G18 (ARM Cortex M0+), @d.bonbon

SAMD21 должен работать: || defined(_SAMD21_), @Juraj

@Juraj Да, я тоже изначально так думал! Я обнаружил странную причуду с установкой библиотеки через предоставленный менеджер библиотек в arduino IDE: он вытащил устаревшую версию файлов .cpp & .h. Вытягивание из самого репо git и ссылка на "Serial" в качестве аргумента конструктора исправили ситуацию!, @d.bonbon