質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

1回答

7178閲覧

Arduinoでchar型の配列が戻り値として返せる関数を作りたい

suranait

総合スコア8

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2016/11/21 19:08

###前提・実現したいこと
プログラミングの知識があまりない状態でArduinoを触り初めて四苦八苦しています。
Arduinoからモーターコントローラにシリアル通信でコマンドを送ると「POSS=900」といったような形で値が返ってくるのですがこれをchar型の配列に格納して返すことができる関数を作りたいです。
また、char型の配列の数字部分だけを抽出できたりしないでしょうか

最初、String型で処理をしていたのですがメモリが不足してしまったらしく、どうしようか悩んでいます。
よろしくお願いします。
###該当のソースコード

C++

1char command_exe(String command) { 2 int num; 3 char SerialRXBuffer[20]; 4 int SerialRXPointer = 0; 5 ch = '0'; 6 serial.flush(); 7 for (int i = 0; i < 20; i++) 8 SerialRXBuffer[i] = 0; 9 serial.println(command); 10 do { 11 if (serial.available()) { 12 ch = serial.read(); 13 SerialRXBuffer[SerialRXPointer] = ch; 14 SerialRXPointer++; 15 } 16 } while (ch != 0x0a); 17 delay(25); 18 return SerialRXBuffer; 19}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KoichiSugiyama

2016/11/22 00:55

まず、現状のソースで問題となっているのはメモリ不足のみですか?ソースコードを実行して発生しているエラーがあれば省略せずに書いた方が的確なアドバイスを得られやすいと思います。
guest

回答1

0

Arduinoは触ったことがないですが、c/c++の知識のみで気づいた点を指摘をさせていただきます。外していたらスミマセン。

C

1char command_exe(String command) { 2: 3()

char型だと文字列は返せません。char*型にしてください。
あと、

c

1char SerialRXBuffer[20]; 2: 3() 4return SerialRXBuffer;

と関数内部で宣言した変数を返していますが、この書き方だと、関数を出たところでSerialRXBufferの内容は保証されないと思います。

c

1 char *SerialRXBuffer = (char*)calloc(20, sizeof(char));

のようにして、メモリを確保してから使用してみてください。もちろん、使い終わった後、メモリの解放を忘れずに。

投稿2016/11/22 01:08

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問