如何解决WiFiClient.Read返回每个字符已发送的数字1
我正在尝试使用TCP将数据发送到ESP32。该程序是用arduino IDE编写的。为了发送数据,我正在使用一个名为Packet Sender的应用程序。该程序应将数据打印到串行,然后再打印到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");
}
}
}
感谢您的回答, 雅各布
解决方法
while (ch = RemoteClient.read() != -1 )
由编译器解释为:
ch = (RemoteClient.read() != -1)
右边部分的计算结果为TRUE或FALSE,即。 1或0。TRUE的1是您看到的打印内容。
因此,添加括号以使其可以执行您想要的操作:
(ch = (RemoteClient.read()) != -1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。