

<https://developer.sony.com/develop/spresense/docs/arduino_tutorials_ja.html#_qzss_%E7%81%BD%E5%8D%B1%E9%80%9A%E5%A0%B1%E3%82%92%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B>
を参考にみちびきのQZQSMセンテンスをUSBのCOMポートから出力することはできたのですが、今回製作しているデバイスではスペースの制約から拡張ボードを使用することができないため、メインボード上に出ているSerila2の端子にレベル変換回路を載せて外部のデバイスにつなぎたいと考えています。  
そこで先のコードからセンテンスの出力先を **Serial** から **Serial2**
に変更しようとしたのですが、コード上では出力先をSerialに明示しているようには見えず、どこを修正すれば変更できるのかわからず困っております。

最終的には$GPGGAなどのNMEAセンテンスもSerial2に出力したいのですが、そちらのサンプルコード **GNSS**
も出力先ポートを変更する方法が分からない状態となっています。

使い方としては少々特殊な使い方であることは認識しているため、情報が少ないことも承知の上で使用しております。  
プログラム修正のヒントや参考事例等についてご教示いただければありがたいです。  
開発環境はArduino IDEで行っております。

追記  
コードを記します。上記のページに紹介されているコードそのままです。  
この状態で`void
setup()`の`Serial.begin(115200);`を`Serial2.begin(115200);`に、`Serial`を`Serial2`にしたのですが、Serial2のポートには出力されず、相変わらずSerialのポートに出力されているため、挙動の理解もできない状態です……

[code]

    #include <GNSS.h>
    #include <GNSSPositionData.h>
    #include <gpsutils/cxd56_gnss_nmea.h>
    
    SpGnss Gnss;
    char   PositionData[sizeof(GnssPositionData)];
    
    /* output NMEA */
    static char nmea_buf[NMEA_SENTENCE_MAX_LEN];
    
    static char *reqbuf(uint16_t size)
    {
      if (size > sizeof(nmea_buf)) {
        return NULL;
      }
      return nmea_buf;
    }
    
    static void freebuf(char *buf)
    {
      return;
    }
    
    static int outbin(char *buf, uint32_t len)
    {
      return len;
    }
    
    static int outnmea(char *buf)
    {
      return printf("%s", buf);
    }
    
    void setup()
    {
      /* Initialize Serial */
      Serial.begin(115200);
    
      /* Initialize GNSS */
      if (Gnss.begin()) {
        Serial.println("begin error!");
      }
    
      /* select satellite system */
      Gnss.select(GPS);
      //Gnss.select(GLONASS);
      Gnss.select(QZ_L1CA);
      Gnss.select(QZ_L1S);
      //Gnss.select(SBAS);
    
      /* set interval */
      Gnss.setInterval(1);
    
      if (Gnss.start(COLD_START)) {
        Serial.println("start error!");
      }
    
      /* use NMEA library */
      NMEA_InitMask();
      NMEA_SetMask(0x4000); // only QZQSM
      NMEA_OUTPUT_CB  funcs;
      funcs.bufReq  = reqbuf;
      funcs.out     = outnmea;
      funcs.outBin  = outbin;
      funcs.bufFree = freebuf;
      NMEA_RegistOutputFunc(&funcs);
    }
    
    void loop()
    {
      /* Check update. */
      if (Gnss.waitUpdate(1000)) {
        /* Output NMEA */
        Gnss.getPositionData(PositionData);
        NMEA_Output(&(((GnssPositionData*)PositionData)->Data));
    
        /* Output QZQSM */
        void *handle;
        if (handle = Gnss.getDCReport()) {
          NMEA_DcReport_Output(handle);
        }
      }
    }
    
[/code]


CC BY-SA 4.0
2022-12-29T05:11:08.570
93081
2022-12-29T13:37:14.670
2022-12-29T13:37:14.670
56274
56274
question
spresense arduino
SPRESENSE　災危通報の$QZQSMセンテンスをSerial2で出力したい