Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino WiFiClient.Read()返回数字1发送的每个字符_Arduino_Esp32 - Fatal编程技术网

Arduino WiFiClient.Read()返回数字1发送的每个字符

Arduino WiFiClient.Read()返回数字1发送的每个字符,arduino,esp32,Arduino,Esp32,我正在尝试使用TCP将数据发送到ESP32。该程序是用arduino IDE编写的。为了发送数据,我使用了一个名为packetsender的应用程序。程序应将数据打印到串行,也应打印回WiFiCLient 每当我向ESP32发送数据时,它会为发送的每个字节打印“1”。信息“已接收数据”已正确发送 我正在使用这个代码 #include <WiFi.h> const uint ServerPort = 23; WiFiServer Server(ServerPort); WiFiCli

我正在尝试使用TCP将数据发送到ESP32。该程序是用arduino IDE编写的。为了发送数据,我使用了一个名为packetsender的应用程序。程序应将数据打印到串行,也应打印回WiFiCLient

每当我向ESP32发送数据时,它会为发送的每个字节打印“1”。信息“已接收数据”已正确发送

我正在使用这个代码

#include <WiFi.h>

const uint ServerPort = 23;
WiFiServer Server(ServerPort);
WiFiClient RemoteClient;

const char *SSID = "SSID";
const char *WiFiPassword = "Password";

void ConnectToWifi()
{
  WiFi.mode(WIFI_STA);
  WiFi.begin(SSID, WiFiPassword);
  Serial.print("Connecting to "); Serial.println(SSID);
 
  uint8_t i = 0;
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.print('.');
    delay(500);
 
    if ((++i % 16) == 0)
    {
      Serial.println(F(" still trying to connect"));
    }
  }
 
  Serial.print(F("Connected. My IP address is: "));
  Serial.println(WiFi.localIP());
}

void CheckForConnections()
{
  if (Server.hasClient())
  {
    Serial.println("Client spoted"); 
    if (RemoteClient.connected())
    {
      Serial.println("Connection rejected");
      Server.available().stop();
    }
    else
    {
      Serial.println("Connection accepted");
      RemoteClient = Server.available();
    }
  }
}

void setup() {
  Serial.begin(9600);
 
  ConnectToWifi();
  
  Server.begin();
}

void loop() {
 // RemoteClient = Server.available();
 CheckForConnections();
  if(RemoteClient)
  {
    uint8_t ch;
    bool newDataReceived = false;

    while(ch = RemoteClient.read() != -1 ){
      Serial.print(ch);
      RemoteClient.write(ch);
      newDataReceived = true;
    }
    if(newDataReceived){
      Serial.println();
      RemoteClient.print("Received data");
    } 
  }
}
#包括
consuint ServerPort=23;
WiFiServer服务器(ServerPort);
WiFiClient远程客户端;
const char*SSID=“SSID”;
const char*WiFiPassword=“Password”;
void ConnectToWifi()
{
WiFi.模式(WiFi_STA);
WiFi.begin(SSID、WiFiPassword);
Serial.print(“连接到”);Serial.println(SSID);
uint8_t i=0;
while(WiFi.status()!=WL_已连接)
{
序列号。打印('.');
延迟(500);
如果((+i%16)==0)
{
Serial.println(F(“仍在尝试连接”);
}
}
串口打印(F(“已连接。我的IP地址是:”);
Serial.println(WiFi.localIP());
}
void CheckForConnections()
{
if(Server.hasClient())
{
Serial.println(“客户发现”);
if(RemoteClient.connected())
{
Serial.println(“连接被拒绝”);
Server.available().stop();
}
其他的
{
Serial.println(“接受连接”);
RemoteClient=Server.available();
}
}
}
无效设置(){
Serial.begin(9600);
ConnectToWifi();
Server.begin();
}
void循环(){
//RemoteClient=Server.available();
检查连接();
if(远程客户端)
{
uint8_t ch;
bool newDataReceived=false;
while(ch=RemoteClient.read()!=-1){
连续打印(ch);
RemoteClient.write(ch);
newDataReceived=true;
}
如果(接收到新数据){
Serial.println();
RemoteClient.print(“收到的数据”);
} 
}
}
谢谢你的回答, Jakub
while(ch=RemoteClient.read()!=-1)

由编译器解释为:

ch=(RemoteClient.read()!=-1)

右侧部分的计算结果为真或假,即1或0。“1”表示“真”,这是您正在打印的内容

因此,添加括号以使其符合您的要求:


(ch=(RemoteClient.read())!=-1)
运算符优先级
while((ch=RemoteClient.read())!=-1){
感谢您的快速响应。现在它工作了。我不知道这会有什么不同。没有括号,就像
而(ch=(RemoteClient.read()!=-1){