質問: プログラミング初学者です。SPRESENSEのGNSS測位機能を使いたく、手始めにサンプルプログラムを試しています。 各種測位情報をNMEAフォーマット出力で得たいと考えていますが、Arduino IDEのサンプルスケッチ"gnss_tracker.ino"は現状ではGGAセンテンスのみの対応のようで、少々機能不足です。 一方、Spresense SDKのほうのサンプルプログラム"gnss_atcmd"ではNMEAフルセンテンス出力ができそうですが、こちらの使用方法がよくわかりません。とりあえずそのままビルドしてみたのですが、USBシリアルデバイス/dev/ttyACM0がopenできない旨のメッセージ表示が出てうまく動きません。プログラムの関係ありそうな箇所のデバイス名を変更(/dev/ttyUSB0、/dev/ttyS*など)してみても状況はさほど変わりません。 公式デベロッパーズガイドにも現状では有用な情報が掲載されておらず(ソースを参照しろとしか書かれていない)、少々行き詰っています。正しい使用方法もしくはプログラム修正のヒントについてご教示いただければありがたいです。 (2018.10.26追記) 1週間経過してもコメント・回答が全く付かないことから、私の質問の仕方が良くなかったものと理解しましたので、長くなって恐縮ですが情報を追加します。 サンプルプログラムgnss_atcmdは、コマンド入力およびNMEA出力にUSBシリアルデバイスをデフォルトで使用するように作られていますが、そもそもチュートリアルで説明されている通常の実行環境ではUSBシリアルはシェル(nsh)コンソールとしてすでに占有されているので、このプログラムはそのままでは使用できないように思います。(理解が間違っていたらご指摘ください) したがって、USBシリアルではなくもうひとつのシリアルポート(UART2)を使うようにプログラムを修正するか、もしくはnshシェルを使わずにNuttX上のコマンドを自動実行できる環境を構築するしかなさそうです。 折しも昨日、SDKのアップデートがありましたが、残念ながらgnss_atcmdに関して有用な情報の追加はありませんでした。未だに使用方法や各コマンドの解説などが無く、理解が難航しています。
回答: ソニーのSPRESENSEサポート担当です。 ご回答が遅くなり、誠に申し訳ありません。 ご質問の内容は、"NMEA出力先のポートについて"と理解いたしました。 サンプルプログラム "gnss_atcmd" の出力をメイン基板のデバッグポートに変更するには、SDK の構成を変更する必要があります。 以下の手順をお試しください。 1. SDK 構成変更メニューの立ち上げ Sprensense SDK 以下のフォルダに移動し、次のコマンドを入力してください。 ``` $ ./tools/config.py examples/gnss_atcmd $ make menuconfig ``` 2. SDK 構成の変更 コンフィギュレーションメニューで構成を変更します。 ``` Exa mples -> GNSS CXD5603 @command emulator example ``` のサブメニュー GNSS Command IO で、シリアル出力先を次のように変更してください。 ``` Example uses USB CDC tty -> Example uses STDINOUT for nsh debug UART ``` コンフィギュレーションを終了し、make コマンドでプログラムをコンパイルし、Spresense に書き込んでください。 3. プログラムの起動 Spresense を起動すると、nsh プロンプトが起動します。そこで以下のコマンドを入力してください。 ``` nsh> gnss_atcmd ``` コマンド待ち受け状態になりますので、以下のコマンドで測位開始、終了ができます。 ``` @GNS 0x0b @GCD ---- NMEA出力 ----- @GSTP @AEXT ``` これらの手順について整理したドキュメントを、近日中に公開いたします。 少しお時間をください。 この度は、大変お待たせしてしまい、誠に申し訳ありませんでした。 重ねてお詫びをいたします。