ESP8266局域网 路由器下作服务器模式串口透传 arduino uno示例 模板参考2
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的更多相关文章
- ESP8266局域网智能家居 路由器下作服务器模式串口透传 无线通信控制 arduino uno示例 模板参考
准备工作 下载一个Arduino IDE, 下载8266的库文件 ESP8266服务器模式串口透传编译 功能说明 1.直接使用路由器中转数据 2.手机放热点模式直接传输数据 两者有访问IP地址的差别, ...
- CC1101 433无线模块,STM8串口透传
CC1101 433无线模块,STM8串口透传 原理图:http://download.csdn.net/detail/cp1300/7496509 下面是STM8程序 CC1101.C /*** ...
- tcp与串口透传(select)
介绍 tcp作为服务端,监听端口8888,实现串口透传,这里是使用select监听tcp的receive和串口的read,单工通信 -p 指定tcp端口 -s 指定串口 -b 指定波特率 支持4800 ...
- 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高位和低位 ...
- 16-ESP8266 SDK开发基础入门篇--TCP 服务器 非RTOS运行版,串口透传(串口回调函数处理版)
https://www.cnblogs.com/yangfengwu/p/11105466.html 其实官方给的RTOS的版本就是在原先非RTOS版本上增加的 https://www.cnblogs ...
- 10-51单片机ESP8266学习-AT指令(ESP8266连接路由器,建立TCP服务器,分别和C#TCP客户端和AndroidTCP客户端通信+花生壳远程通信)
http://www.cnblogs.com/yangfengwu/p/8871464.html 先把源码和资料链接放到这里 源码链接:https://pan.baidu.com/s/1wT8KAOI ...
- wifi实现串口透传
环境: 串口服务器Ip:172.16.1.11 串口客户机ip:172.16.1.12 一.网络连接示意图 二.串口服务器的配置 参考:ser2net的编译及测试 三.串口客户端的配置 实际上这是一个 ...
- python 串口 透传
python正常情况通过串口 serial 传输数据的时候,都是以字符串的形式发送的 str = ‘abcd’ ser.write(str.encode())#直接发送str报错,需要发送byte类 ...
- sim800c GPRS模块的透传模式
一.透传模式 基于sim800c GPRS模块在建立TCP/IP连接情况下,可以设置进入透传模式,用来接收和发送数据,一旦进入即从串口收到的数据将被打包,然后发送.接收同理. 注意在透传模式下所有的A ...
随机推荐
- Spring全家桶——SpringBoot之AOP详解
Spring全家桶--SpringBoot之AOP详解 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关键单元是类,而在AOP中,模块化单元是方 ...
- C# 数据操作系列 - 15 SqlSugar 增删改查详解
0. 前言 继上一篇,以及上上篇,我们对SqlSugar有了一个大概的认识,但是这并不完美,因为那些都是理论知识,无法描述我们工程开发中实际情况.而这一篇,将带领小伙伴们一起试着写一个能在工程中使用的 ...
- pip命令报错“no perl script found in input”
windows10,命令行下使用pip命令时报错,python运行成功,且环境变量已经设置,可能是更新了新版本pip所导致 解决方案: 一.使用pip.exe+命令可解决这个问题 二.进行python ...
- JavaScript中foreach、map、filter、find、every、some的用法
foreach:只是循环数组中的每一项,没有返回值 如: var arr = [2,3,3,4,5,6]; arr.foreach(function(item,index,array){ dosom ...
- 谈谈对ThreadLocal类的理解
源码中对于ThreadLocal类的解释是: /** * This class provides thread-local variables. These variables differ from ...
- eatwhatApp开发实战(五)
上次我们为eatwhat添加了了删除功能和dialog对话框的介绍,今天我们来使用SQLite进行本地数据存储. 首先,我们定义一个SQL辅助类ShopInfoOpenHelper继承SQLiteOp ...
- jchdl - GSL实例 - Register
https://mp.weixin.qq.com/s/uD5JVlAjTHQus2pnzPrdLg 多个D触发器可以组成一组寄存器. 摘自康华光<电子技术基础 · 数字部分>(第 ...
- Sched_Boost小结
之前遇到一个耗电问题,最后发现是/proc/sys/kernel/sched_boost节点设置异常,一直处于boost状态.导致所有场景功耗上升. 现在总结一下sched_boost的相关知识. S ...
- 第十届蓝桥杯JavaB组省赛真题
试题 A: 组队 本题总分:5 分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容. 每位球员担任 1 号位至 5 号位时的评分如下表所示. ...
- Java实现 蓝桥杯 算法提高 复数四则运算
算法提高 6-17复数四则运算 时间限制:1.0s 内存限制:512.0MB 提交此题 设计复数库,实现基本的复数加减乘除运算. 输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔:输 ...