Я сейчас пытаюсь подключить STM32F429 к настольному приложению C # с ESP8266 (в режиме STA).Я хочу, чтобы ESP8266 был клиентом, а C # - сервером.Однако ESP8266 по-прежнему не может найти мой ПК в той же локальной сети.
Теперь мне удалось использовать команду AT для подключения ESP8266 к моей точке доступа маршрутизатора.И я использовал XAMPP для открытия шлюза на моем ПК с адресом 192.168.1.11:80, а затем с помощью следующей команды (AT + CIPSTART = \ "TCP \", \ "192.168.1.11 \", 80 ") для успешного подключенияESP8266 к нему (он вернул OK на мой STM32F429). Затем я хочу заменить XAMPP на мой код C #, чтобы открыть TCP-сервер. Но я не смог этого сделать!
Что касаетсяКод C #, я успешно установил соединение между двумя программами C # (IP-адрес 192.168.1.11:80 совпадает с упомянутым выше). Но когда я попытался использовать ESP8266 для подключения к одному IP-адресу и порту,это не удалось.
Я подозревал, что у меня могут быть некоторые неправильные представления об открытии прослушивателя TCP для определенного порта в моей локальной сети ... Я не знаю ...
Ниже приведен мой код C # (код STM32 - это просто базовый код Usart, который я не буду здесь представлять).
// Code for Server
namespace Tcp_Server
{
public partial class Form1 : Form
{
private TcpListener myListener;
private TcpClient newClient;
public BinaryReader br;
public BinaryWriter bw;
public Form1()
{
InitializeComponent();
Thread myThread = new Thread(ServerA);
myThread.Start();
}
private void ServerA()
{
IPAddress SvrIP = new IPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[0].Address); // Get the virtual IP of my PC.
this.Invoke(new AddToTextbox_dg(AddToTextbox), new object[] { tb_ServerStatus, ip.ToString() });
myListener = new TcpListener(ip, 80); //construct a Tcp Listener.
myListener.Start(); //Tcp Listener start
newClient = myListener.AcceptTcpClient();// Searching for a client...
this.Invoke(new AddToTextbox_dg(AddToTextbox), new object[] { tb_ServerStatus, "Connect Successfully" });
while (true)
{
try
{
NetworkStream clientStream = newClient.GetStream();
br = new BinaryReader(clientStream);
string receive = null;
receive = br.ReadString();//读取
this.Invoke(new AddToTextbox_dg(AddToTextbox), new object[] { tb_ServerStatus, receive });
}
catch
{
MessageBox.Show("Receving failed...");
}
}
}
// Code for client
namespace Client
{
public partial class Form1 : Form
{
private TcpClient client;
public BinaryReader br;
public BinaryWriter bw;
public Form1()
{
InitializeComponent();
Thread myThread = new Thread(ClientA);
myThread.Start();
}
private void ClientA()
{
IPAddress ip = new IPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[0].Address); // Get the virtual IP of my PC.
client = new TcpClient(ip.ToString(), 80);
this.Invoke(new AddToTextbox_dg(AddToTextbox), new object[] { tb_ServerStatus, "Connect to Server Successfully!" });
while (true)
{
try
{
NetworkStream clientStream = client.GetStream();
br = new BinaryReader(clientStream);
string receive = null;
receive = br.ReadString();
}
catch
{
MessageBox.Show("Receving failed...");
}
}
}
private void AddToTextbox(TextBox txt, String s)
{
txt.Text += s;
}
private delegate void AddToTextbox_dg(TextBox txt, String s);
private void btn_send_Click(object sender, EventArgs e)
{
NetworkStream clientStream = client.GetStream();
bw = new BinaryWriter(clientStream);
bw.Write(message.Text);
}
}
}
Может кто-нибудь помочь мне сэта проблема?
- Интересно, почему я не могу подключить ESP8266 к TcpListener Я построил на своем ПК с C #.
Что мой ПК делал при получении команды: myListener = new TcpListener (ip, 80);
Этот проект, который я делаю, собирается передать данные изображения, полученные с помощью Stm32F429 и OV7725, на мой компьютер через ESP8266.Я знаю, что Усарт будет слишком медленным, чтобы сделать это, но сейчас я просто пытаюсь установить связь.Ребята, можете ли вы предложить мне что-нибудь по этому поводу?