Я пытаюсь установить связь между клиентом / сервером .... В приложении C # в качестве клиента я отправляю данные на последовательный монитор ESP без проблем, поскольку я могу только отправлять данные из приложения в ESP. Мой запрос заключается в том, как отправить данные с последовательного монитора сервера ESP
В приложение C #, например, текстовое поле
Я попробовал несколько примеров кода, но у меня проблема с отправкой данных с сервера ESP в приложение C # в качестве клиента. Есть ли у вас какие-либо предложения о том, как решить мою проблему? Спасибо за любой ответ. Я прилагаю коды.
Код сервера ESP:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
//const char* ssid = "KTEEM"; // Skola
//const char* password = "88888888"; // Skola
//const char* ssid = "Mi A3"; // Ja
//const char* password = "44114144"; // Ja
const char* ssid = "Slavo"; //Domov
const char* password = "bubo2222"; //Domov
//const char* host = "192.168.0.111"; //ipWifiSkola
//const char* host = "192.168.43.39"; //ipWifiMobil
const char* host = "192.168.0.105"; //ipWifiDomov
//const int udpPort = 8080; //portserver
int newData;
String data;
WiFiServer server(5045);
WiFiClient client;
void setup()
{
Serial.begin(115200);
wifiConnect();
server.begin();
}
void loop() {
if (WiFi.status() != WL_CONNECTED)
{
wifiConnect();
}
client = server.available();
if(Serial.available())
{
String command = Serial.readStringUntil('\n');
client.print(command);
delay(300);
}
if (client){
String data;
Serial.println("Client connected");
while (client.connected()){
while(client.available()>0)
{
//data = client.readStringUntil('\n');
//Serial.println(data);
char c = client.read();
Serial.write(c);
}
delay(10);
}
client.stop();
Serial.println("Client Disconnected");
}
}
void wifiConnect()
{
WiFi.begin(ssid, password);
Serial.println("");
while (WiFi.status () != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
Код клиента C #:
using System;
using System.Text;
using System.Threading;
using System.Net.Sockets;
using System.IO;
namespace TCPIP_ESP
{
class TCPClient
{
public int HostPort = 5045;
public string HostDomov = "192.168.0.105"; //Skola
public string HostMobil = "192.168.43.39"; //Mobil
public string HostSkola = "192.168.0.111"; //Domov
private TcpClient tcpClient = new TcpClient();
public Thread W_Thread;
public Thread R_Thread;
public bool IsListening = true;
NetworkStream networkStream = null;
public StreamReader serverData;
public StreamWriter clientData;
private StreamWriter streamWriter;
public NetworkStream NetworkStream { get => networkStream; set => networkStream = value; }
public void SendData(Client c)
{
if (NetworkStream.CanWrite)
{
byte[] sendBytes = Encoding.ASCII.GetBytes(c.txtMsg.Text + "$");
NetworkStream.Write(sendBytes, 0, sendBytes.Length);
c.txtMsg.Text = string.Empty;
NetworkStream.Flush();
}
else if (!NetworkStream.CanWrite)
{
Console.WriteLine("You can not read data from this stream");
tcpClient.Close();
}
}
public void ReadData(Client c)
{
try
{
string returnData = null;
byte[] bytes = new byte[4096];
if (NetworkStream.CanRead)
{
int bytesRead = NetworkStream.Read(bytes, 0, bytes.Length);
returnData = Encoding.UTF8.GetString(bytes, 0, bytesRead);
Console.WriteLine("Data read ..." + returnData);
tcpClient.Close();
NetworkStream.Close();
}
else
{
Console.WriteLine("You cannot read data from this stream.");
tcpClient.Close();
NetworkStream.Close();
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
public void CreateConnection(Client c)
{
tcpClient.Connect(HostDomov, HostPort);
NetworkStream = tcpClient.GetStream();
streamWriter = new StreamWriter(NetworkStream);
c.lblChangeData.Text = "Client Socket Porgram - Server Connected ...";
tcpClient.ReceiveBufferSize = 1024;
tcpClient.SendBufferSize = 1024;
if (tcpClient.Connected)
{
c.checkBox1.BackColor = System.Drawing.Color.Green;
}
else
c.checkBox1.BackColor = System.Drawing.Color.Red;
}
public void Disconnect()
{
tcpClient.Dispose();
tcpClient.Close();
NetworkStream.Close();
}
public void msg(Client c, string mesg)
{
c.listBox_Receive.Text = c.txtMsg.Text + Environment.NewLine + " >> " + mesg;
}
}
}