小编Sim*_*Son的帖子

字符串被破坏 - 堆栈溢出?

我绝望了!我希望我的ESP8266从TCP客户端接收一个字符串,执行相应的函数并给出TCP响应.但不幸的是,响应字符串以某种奇怪的方式被破坏:假设我输入了一个'未知命令',前11个字节通过串行接口正确打印(其余是转储),客户端收到的前11个字节是转储,但其余的都是正确的(见下面脚本中的评论).但是当我输入'dim'命令时,结果是正确的(但返回字符串也比"error:unknown command"短).目前我完全不知道如何解决这个问题,即使我已经尝试了很多.

#include <WiFiClient.h>
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <string.h>

struct parsed_query{
  String command;
  String arguments;
};

struct parsed_query parser(void){
  // this function receives and parses a query
  struct parsed_query result;
  result.command="entered command";
  result.arguments="entered arguments"
  return result
}

char* str2char(String as_string){
  int i_0=0;
  while(as_string[i_0]!='\0'){i_0++;}
  char as_char[i_0+1];
  as_char[i_0]='\0';
  for(int i=0;i<i_0;i++){
    as_char[i]=as_string[i];
  }
  return as_char;
}

String executor(String command,String arguments){
  String response;
  if(command=="dim"){
    response="dimming";
  }
  else if(command=="on"){
    response="switching ON";
  }
  else{
    response="error: unknown command";
  }
  return response;
}

void setup(){
// initialize …
Run Code Online (Sandbox Code Playgroud)

c++ string esp8266 arduino-esp8266

2
推荐指数
1
解决办法
126
查看次数

标签 统计

arduino-esp8266 ×1

c++ ×1

esp8266 ×1

string ×1