C文字列や文字などで再び混乱していることに気づきました。
Arduinoで構文をテストするために使用しているコードを次に示します。(* message)buffが私にポインターを与えることを知っています(私はまだポインターを使用する必要がある理由を本当に知りませんが、それについていくつかの調査を行うことができます!)、私は* message_buffを文字列に変換します(何かすることですが、後でこの文字列をシリアルに出力しようとすると、「c」文字が1つしか表示されないことに注意してください。
配列ポインタを3要素の長さに設定しました(3バイトの長さ??私は本当にわかりません):
char *mqtt_command[3] = {};
後で、次のコマンドを使用して配列に値を追加しようとすると、次のようになります。
*mqtt_command[i] = str;
エラーが発生します:
エラー:「char*」から「char」への無効な変換
これを次のように変更した場合:
mqtt_command[i] = str;
(*なし)正常にコンパイルされます。どうしてか分かりません...
これが私のコードです:
char *message_buff = "command:range:1";
char *str;
String msgString = String(*message_buff);
char *mqtt_command[3] = {};
int i = 0;
void setup()
{
Serial.begin(9600);
delay(500);
while ((str = strtok_r(message_buff, ":", &message_buff)) != NULL)
{
Serial.println(str);
mqtt_command[i] = str;
i++;
}
delay(1000);
Serial.print("Command: ");
Serial.println(mqtt_command[1]);
Serial.print("MQTT string: ");
Serial.println(msgString);
}
void loop()
{
// Do something here later
}
そしてここに出力があります:
command
range
1
Command: range
MQTT string: c
文字、文字列、ポインタ、および文字配列をどのように理解できますか?このトピックに関する優れたオールラウンドチュートリアルはどこに行けばよいですか?
MQTTを介してコマンド文字列(文字列だと思いますが、char配列である可能性がありますか????)を渡しています。メッセージは次のとおりです。
command:range:1
MQTTメッセージを受信したときにArduinoで何かを行うための小さなプロトコルを構築しようとしています。MQTTコールバックは問題なく処理できますが、問題はありません。問題は、Cの文字列と文字がよくわからないことです。次のようなコマンドを処理できるようにしたいと思います。
command:range:0
command:digital:8
read:sensor:2
等