Arduino WiFiClient.Read()返回数字1发送的每个字符
我正在尝试使用TCP将数据发送到ESP32。该程序是用arduino IDE编写的。为了发送数据,我使用了一个名为packetsender的应用程序。程序应将数据打印到串行,也应打印回WiFiCLient 每当我向ESP32发送数据时,它会为发送的每个字节打印“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
#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(“收到的数据”);
}
}
}
谢谢你的回答,
Jakubwhile(ch=RemoteClient.read()!=-1)
由编译器解释为:
ch=(RemoteClient.read()!=-1)
右侧部分的计算结果为真或假,即1或0。“1”表示“真”,这是您正在打印的内容
因此,添加括号以使其符合您的要求:
(ch=(RemoteClient.read())!=-1)
运算符优先级while((ch=RemoteClient.read())!=-1){
感谢您的快速响应。现在它工作了。我不知道这会有什么不同。没有括号,就像而(ch=(RemoteClient.read()!=-1){