ESP8266服务器模式串口透传编译需要下载8266的库文件后才可以正常


准备工作


下载一个Arduino IDE,
下载8266的库文件
ESP8266服务器模式串口透传编译


功能说明


1、直接使用路由器中转数据
2、手机放热点模式直接传输数据
两者有访问IP地址的差别,起始地址不同,


#include <ESP8266WiFi.h>
#define MAX_SRV_CLIENTS 4 //最大同时联接数,即你想要接入的设备数量,8266tcpserver只能接入五个 const char *ssid = "icloud"; ////这里是我的wifi,你使用时修改为你要连接的wifi ssid
const char *password = "12345678"; //你要连接的wifi密码 IPAddress local_IP(192, 168, 43, 181);//加入路由器时192, 168, 0, 1开始或根据路由分配的起始IP可到路由器中查看
IPAddress gateway(192, 168, 43, 1);//加入路由器时192, 168, 0, 1/手机自建服务器时路由网关192, 168, 43, 1
IPAddress subnet(255, 255, 255, 0); WiFiServer server(8266);//你要的端口号,随意修改,范围0-65535
WiFiClient serverClients[MAX_SRV_CLIENTS];
int a = 0; //连接状态标识
int i = 0;//用于for循环
void setup()
{
Serial.begin(9600);
delay(10);
pinMode(16, OUTPUT);// D0
digitalWrite(16, 0);
//定义输入引脚 pinMode(5, INPUT);// D1
pinMode(4, INPUT);// D2
pinMode(0, INPUT);// D3 //定义输出引脚
pinMode(2, OUTPUT);// D4
pinMode(14, OUTPUT);// D5
pinMode(12, OUTPUT);// D6
pinMode(13, OUTPUT);// D7
pinMode(15, OUTPUT);// D8 digitalWrite(2, HIGH);//输出低电平
digitalWrite(14, LOW); WiFi.config(local_IP, gateway, subnet);//192.168.0.200
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED)
{
delay(500);
}
server.begin();
server.setNoDelay(true); //加上后才正常些
} void loop()
{
blink(); uint8_t i;
if (server.hasClient())
{
for (i = 0; i < MAX_SRV_CLIENTS; i++)
{
if (!serverClients[i] || !serverClients[i].connected())
{
if (serverClients[i]) serverClients[i].stop();//未联接,就释放
serverClients[i] = server.available();//分配新的
continue;
} }
WiFiClient serverClient = server.available();
serverClient.stop();
}
for (i = 0; i < MAX_SRV_CLIENTS; i++)
{
if (serverClients[i] && serverClients[i].connected())
{
digitalWrite(16, 0);//有链接存在,就一直长亮 // if (serverClients[i].available()) //直接转发客户端数据
// {
// while (serverClients[i].available())
// Serial.write(serverClients[i].read());
// }
}
}
//把串口数据发送到客户端
if (Serial.available())
{
size_t len = Serial.available();
uint8_t sbuf[len];
Serial.readBytes(sbuf, len);
//push UART data to all connected telnet clients
for (i = 0; i < MAX_SRV_CLIENTS; i++)
{
if (serverClients[i] && serverClients[i].connected())
{
serverClients[i].write(sbuf, len); //向所有客户端发送数据
delay(1);
}
}
}
//把收到的客户端数据发送到串口
for (i = 0; i < MAX_SRV_CLIENTS; i++) {
if (serverClients[i] && serverClients[i].connected()) {
while (serverClients[i].available())
{
char data = serverClients[i].read();
Serial.println(data);
switch (data) {
case 'A':
digitalWrite(14, HIGH);//输出低电平
break;
case 'B':
digitalWrite(14, LOW);//输出低电平
break;
default: //以上条件都不满足
printf("error\n");
break;
}
}
}
} } //连接情况 用led灯的状态显示
void blink()
{
static long previousMillis = 0;
static int currstate = 0; if (millis() - previousMillis > 200) //200ms
{
previousMillis = millis();
currstate = 1 - currstate;
digitalWrite(16, currstate);
}
}


https://blog.csdn.net/v86337286/article/details/103020239

ESP8266局域网 路由器下作服务器模式串口透传 arduino uno示例 模板参考2的更多相关文章

  1. ESP8266局域网智能家居 路由器下作服务器模式串口透传 无线通信控制 arduino uno示例 模板参考

    准备工作 下载一个Arduino IDE, 下载8266的库文件 ESP8266服务器模式串口透传编译 功能说明 1.直接使用路由器中转数据 2.手机放热点模式直接传输数据 两者有访问IP地址的差别, ...

  2. CC1101 433无线模块,STM8串口透传

    CC1101 433无线模块,STM8串口透传   原理图:http://download.csdn.net/detail/cp1300/7496509 下面是STM8程序 CC1101.C /*** ...

  3. tcp与串口透传(select)

    介绍 tcp作为服务端,监听端口8888,实现串口透传,这里是使用select监听tcp的receive和串口的read,单工通信 -p 指定tcp端口 -s 指定串口 -b 指定波特率 支持4800 ...

  4. 18-ESP8266 SDK开发基础入门篇--TCP 服务器 RTOS版,串口透传,TCP客户端控制LED

    https://www.cnblogs.com/yangfengwu/p/11112015.html 先规定一下协议 aa 55 02 01 F1 4C 控制LED点亮  F1 4C为CRC高位和低位 ...

  5. 16-ESP8266 SDK开发基础入门篇--TCP 服务器 非RTOS运行版,串口透传(串口回调函数处理版)

    https://www.cnblogs.com/yangfengwu/p/11105466.html 其实官方给的RTOS的版本就是在原先非RTOS版本上增加的 https://www.cnblogs ...

  6. 10-51单片机ESP8266学习-AT指令(ESP8266连接路由器,建立TCP服务器,分别和C#TCP客户端和AndroidTCP客户端通信+花生壳远程通信)

    http://www.cnblogs.com/yangfengwu/p/8871464.html 先把源码和资料链接放到这里 源码链接:https://pan.baidu.com/s/1wT8KAOI ...

  7. wifi实现串口透传

    环境: 串口服务器Ip:172.16.1.11 串口客户机ip:172.16.1.12 一.网络连接示意图 二.串口服务器的配置 参考:ser2net的编译及测试 三.串口客户端的配置 实际上这是一个 ...

  8. python 串口 透传

    python正常情况通过串口 serial  传输数据的时候,都是以字符串的形式发送的 str = ‘abcd’ ser.write(str.encode())#直接发送str报错,需要发送byte类 ...

  9. sim800c GPRS模块的透传模式

    一.透传模式 基于sim800c GPRS模块在建立TCP/IP连接情况下,可以设置进入透传模式,用来接收和发送数据,一旦进入即从串口收到的数据将被打包,然后发送.接收同理. 注意在透传模式下所有的A ...

随机推荐

  1. Java 对象的继承,抽象类,接口

    子父级继承 关键字 extends 首先创建一个父类 class Fu { String name; int a=1; public void word() { System.out.println( ...

  2. SpringBoot外部化配置使用Plus版

    本文如有任何纰漏.错误,请不吝指正! PS: 之前写过一篇关于SpringBoo中使用配置文件的一些姿势,不过嘛,有句话(我)说的好:曾见小桥流水,未睹观音坐莲!所以再写一篇增强版,以便记录. 序言 ...

  3. switch下返回各类的数值

    定义一个变量,在每个case下赋值,最后return public static int orderDishes(int choice) { int price = 0; switch (choice ...

  4. 一、Redis 总结

    官网 Redis 介绍 Redis 是一个开源的.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的 API. Redis 是一个 key-value 存储系统.为了 ...

  5. 多用户vps管理面板怎么安装,有没有好用的vps管理工具

    一.VPS安装VPSMate控制面板步骤 1.使用SSH连接到VPS.使用命令获取VPSMate安装包: wget   http://www.vpsmate.org/tools/install.py ...

  6. VNC下载,Windows系统下VNC如何下载和安装!

    IIS7服务器管理工具是一款VNC viewer的客户端,能够操作VNC,进行日常的功能实现:同时还可进行FTP的日常操作,能够高效地利用FTP的传输功能:也可以批量操作Windows.Linux系统 ...

  7. Rocket - debug - Example: Read Memory

    https://mp.weixin.qq.com/s/ChXNTbx94WDC72GvmE9bGA 介绍riscv-debug的使用实例:使用三种方法读取内存. 1. Using System Bus ...

  8. Multiple annotations found at this line: - Undefined attribute name (charset).

    把 meta charset="UTF-8" 改为 meta http-equiv="Content-Type" content="text/html ...

  9. Java实现 蓝桥杯 算法训练 大小写转换

    算法训练 大小写转换 时间限制:1.0s 内存限制:512.0MB 提交此题 问题描述 编写一个程序,输入一个字符串(长度不超过20),然后把这个字符串内的每一个字符进行大小写变换,即将大写字母变成小 ...

  10. Java实现 LeetCode 240 搜索二维矩阵 II(二)

    240. 搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序排列. ...