Arduinoでシステムを作っています。よろしくお願いします。
1.サーバー側 ESP32 モジュール APIPモード
2.クライアント側 ESP-WROOM02基板Assy
3.ソフトウェア開発 ArduinoIDE
4.説明
親機(ESP32モジュール)をAPにして、子機(ESP-WROOM02)を無線接続して、親機からのコマンドを受けて、子機からデータを親機に送ろうとしているが、親機からの1byteづつの文字を言葉にしたい。"S""T""A""R""T" -> "START"
5.問題点
・サーバー側から1byteずつ送付されたデータをコマンドとして判別したいが文字の積算が出来ない。
ボードに書き込む時、子機側の cmd=cmd+command; でエラーになる。
- どこが拙いんでしょうか?
/* Client */ 子機側 /* esp-wroom02 200925 */ #include <ESP8266WiFi.h> const char* ssid = "ESP32-WiFi"; const char* password = "esp32wifi"; static WiFiClient client; void setup() { Serial.begin(115200); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); IPAddress ip(192,168,0,9); client.connect(ip,80); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } // 収集データ char command,c; char bdata[] = "board=3,ring=7,point=4,total=159 /"; char cmd[]=""; void loop() { //Serial.println("sending data to server"); delay(1000); if (client.connected() == true){ client.write(bdata); // send a string to server } command = client.read(); Serial.printf("%c",command); cmd=cmd+command; <---------------------------エラー発生 if(command == '0'){ Serial.print(cmd); Serial.println("/"); } //c=""; delay(3000); // execute once every 1 minutes }
/* Server */ #include<WiFi.h> const char *ssid="ESP32-WiFi"; //SSID const char *pass="esp32wifi"; //パスワード const IPAddress ip(192,168,0,9); //サーバーのIPアドレス const IPAddress subnet(255,255,255,0); //サブネットマスク WiFiServer server(80); void setup() { Serial.begin(115200); WiFi.softAP(ssid,pass); //SSIDとパスの設定 delay(100); //接続失敗防止 WiFi.softAPConfig(ip,ip,subnet); //IPアドレス、ゲートウェイ、サブネットマスク設定 IPAddress myIP = WiFi.softAPIP(); //WiFi.softAPIP()でWiFi起動 server.begin(); Serial.println(); Serial.println("WiFi connected"); Serial.print("SSID:"); Serial.println(ssid); Serial.print("AP IP address:"); Serial.println(myIP); Serial.println("Server start!"); } uint8_t value ; int boad,ring,point,total; // ボード番号,輪数,ポイント,合計 char cmand[] = "start0"; void loop() { // クライアントの情報を得る。 WiFiClient client = server.available(); if(client){ Serial.println("new client"); while(client.connected()){ if(client.available()){ value=client.read(); Serial.printf("%c", value); if(value == '/') { // '/' 区切り文字 Serial.println(""); } client.write(cmand); // クライアントへコマンド送付 delay(500); } } } }
> 子機側の cmd=cmd+command; でエラーになる。
どのようなエラーになるのでしょうか?
具体的に記載した方が回答得られやすいと思います。
(特に同様の環境を用意し辛い環境のようですので。)
お世話になります。
incompatible types in assignment of 'char*' to 'char[1]' というエラーが出ます。
どういう事でしょうか?
お世話になります。
配列を使って以下のように変更しました。
char cmd[4]; int cnt=0;
:
command=client.read();
cmd[cnt]=command;
cnt+=1;
if (command='/'){
cnt=0; }
エラーは出ずに、1byteデータが積算されてcmd[]にコマンドを再生できました。
エラーが出る件は、一応解決です。ありがとうございました。
回答1件
あなたの回答
tips
プレビュー