ESP8266-01一些内容
系统有些指令必须特性状态下才可以执行,即先执行一些其它AT指令
1.设置station模式的IP信息
AT+CIPSTA="192.168.19.1","192.168.1.1","255.255.0.0"
设置后,使用AT+CWDHCP=2,1
恢复:DHCP方式
2.启动后服务器
AT+CIPMUX=1
AT+CIPSERVER=1,333 --后面是端口
3.启动UDP广播地址监听
AT+CIPMUX=1
AT+CIPSTART=0,"UDP","255.255.255.255",1111,2000,2
说明:1111任意端口(表示远程),2000为本地端口,
2(mode参数)表示以最后一次收到数据包IP为目标地址,也就是说如果有多个IP给本设备发送UDP包,那么AT+CIPSEND=0,x回复时数据发给最后一个发消息过来的
当采用mode=2时使用:AT+CIPSTATUS可以查看最后一发请求过来的的链接情况
4.启动UDP链接
AT+CIPSTART=0,"UDP","192.168.88.88",8080,2000,2
参数2与上面一样,比方192.168.88.11:8111,最后一个给设备发UPD包,那么设备回复时的目标设备就是192.168.88.11:8111了
5.退出透传模式
1.发送+++后面不要有回车换行
2.等一会
3.发送回车与换行
4.发送AT&回车换行看命令是否恢复
6.Arduino下进行测试
/*
ESP-01 VCC -------- 3.3V
GND -------- GND
CH-PD -------- 3.3V (加不加10K电阻都可以) TXD ------ 10 // 软串口的RX
RXD ------- 11 // 软串口的TX UNO的代码:
*/
#include <SoftwareSerial.h> SoftwareSerial mySerial(, ); // RX, TX void setup()
{
// Open serial communications and wait for port to open:
Serial.begin();
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
} Serial.println("Goodnight moon!"); // set the data rate for the SoftwareSerial port
mySerial.begin();
mySerial.println("Hello, world?");
} void loop() // run over and over
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
7.启动后开启UDP透传模式,以及看门狗
服务端需要按$F...$E的格式封送数据
#include <avr/wdt.h>
#include <SoftwareSerial.h> SoftwareSerial mySerial(, ); // RX, TX
unsigned long lastSendTime=;
unsigned long lastReceiveTime=;
String RecCache=""; void setup()
{
pinMode(,OUTPUT);
digitalWrite(,LOW); // Open serial communications and wait for port to open:
Serial.begin();
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
} Serial.println("Ready!"); // set the data rate for the SoftwareSerial port
mySerial.begin(); mySerial.print("+++");
delay();
mySerial.println("AT"); mySerial.println("AT+RST");
delayAndRead(); //
while(!isGotIP()){
digitalWrite(,HIGH);
delay();
digitalWrite(,LOW);
cls();
}
mySerial.println("AT+CIPSTART=\"UDP\",\"122.226.151.4\",12462,2000,0");
delayAndRead();
mySerial.println("AT+CIPMODE=1");
delayAndRead();
mySerial.println("AT+CIPSEND");
delayAndRead(); wdt_enable(WDTO_8S);
} void loop() // run over and over
{
//handle user input cmd
while (Serial.available()){
mySerial.write(Serial.read());
} while(mySerial.available()){
char c= mySerial.read();
RecCache=RecCache +(String)c;
} int bIndex= RecCache.indexOf("$F");
if(bIndex>=){
int eIndex=RecCache.indexOf("$E",bIndex);
if(eIndex>=){
//Extra Data
String data=RecCache.substring(bIndex+,eIndex);
RecCache=RecCache.substring(eIndex);
lastReceiveTime=millis(); handleData(data);
}
}else{
RecCache="";
} if(RecCache.length()>=)RecCache=""; //check watchdog
if((millis()-lastReceiveTime)<){
wdt_reset();
} //heart beat
if((millis()-lastSendTime)>=){
mySerial.println(millis());
lastSendTime=millis();
}
} void handleData(String data){ Serial.println(data);
} void cls(){
while(mySerial.available()){
mySerial.read();
}
} void delayAndRead(int waitTime){
delay(waitTime);
while(mySerial.available()){
Serial.write(mySerial.read());
}
} boolean isGotIP(){
mySerial.println("AT+CIPSTATUS");
delay(); if( mySerial.find("STATUS:2")){
return true;
}
return false; }
UDP服务端代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading; namespace SmartPivot.WinClient
{
public partial class Form1 : Form
{
private UdpClient udpServer = null;
private bool isRunning = false;
private bool Enable = false;
private SynchronizationContext SyncCtx = null; public Form1()
{
InitializeComponent();
SyncCtx = SynchronizationContext.Current;
btnSend.Enabled = false;
} private void btnSwitch_Click(object sender, EventArgs e)
{
try
{
if (isRunning)
{
btnSend.Enabled = false;
_Stop();
}
else
{ ThreadPool.QueueUserWorkItem(o =>
{
_Start();
}, null);
btnSend.Enabled = true;
}
}
catch (Exception ex)
{ }
}
private void _Stop()
{
Enable = false; if (udpServer != null)
{
try
{
udpServer.Close(); }
catch { }
}
isRunning = false;
this.Text = "已停止";
}
private void _Start()
{
if (isRunning) return;
Enable = true;
//设置标题
SyncCtx.Post(o =>
{
this.Text = "运行中";
}, null); var ipAddress = IPAddress.Parse(txtIP.Text);
int port = int.Parse(txtPort.Text); // udpServer.Client.Bind(new IPEndPoint(ipAddress, port));
// udpServer.Connect(new IPEndPoint(ipAddress, port));
udpServer = new UdpClient(new IPEndPoint(ipAddress, port));
udpServer.AllowNatTraversal(false);
var remote = new IPEndPoint(, );
isRunning = true; while (Enable)
{
try
{
byte[] receiveData = udpServer.Receive(ref remote);
var str = Encoding.ASCII.GetString(receiveData);
Console.WriteLine(string.Format("Remote,{0}:{1},[{2}]",
remote.Address.ToString(),
remote.Port, DateTime.Now));
Console.WriteLine(str);
var responseTmp = String.Format("{0},{1},{2}" , remote.ToString(), DateTime.Now.ToString("yyMMddHHmmss"), Guid.NewGuid().ToString());
var responseDate = Encoding.ASCII.GetBytes("$F" + responseTmp.Length + ":" + responseTmp +"$E" + Environment.NewLine);
udpServer.Send(responseDate, responseDate.Length, remote); SyncCtx.Post(o => {
txtRIP.Text = remote.Address.ToString();
txtRPort.Text = remote.Port.ToString();
}, null);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
} } } private void Form1_Load(object sender, EventArgs e)
{
var ip = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(ent => ent.AddressFamily == AddressFamily.InterNetwork);
txtIP.Text = ip == null ? "" : ip.ToString();
txtPort.Text = "";
} private void btnSend_Click(object sender, EventArgs e)
{
try
{
if (udpServer == null) return;
var sendData=Encoding.ASCII.GetBytes(txtSend.Text);
var ipAddress = IPAddress.Parse(txtRIP.Text);
int port = int.Parse(txtRPort.Text);
udpServer.Send(sendData, sendData.Length, new IPEndPoint(ipAddress, port));
}
catch (Exception ex)
{
Console.WriteLine("Send Err:" + ex.Message);
}
}
}
}
8.设置AP名称
AT+CWSAP="DF21_LSC","12345678",5,3
其中5表示通道,3表示WPA2_PSK
密码需要8位以上
9.设置波特率
默认是115200
mySerial.println("AT+CIOBAUD=9600");
ESP8266-01一些内容的更多相关文章
- 分析NTFS文件系统得到特定文件的内容
找某一个文件的内容(如要读取文件D:\dir\dir2\text.txt,详细过程例如以下: (1)读取分区表/分区链表信息,找到磁盘F的起始扇区. (2)读取D盘的第一个扇区(分区的BOOTSETO ...
- day10 内容大纲
01 去年内容回顾 01 去年内容回顾 *args **kwargs: 万能参数,动态参数 * 魔性用法: 函数的定义时,* ** 聚合. 函数的执行时,* ** 打散. 形参顺序: 位置参数,*ar ...
- ESP8266开发环境、编译、烧录
官方地址 中:http://www.espressif.com/zh-hans/support/download/overview?keys=&field_type_tid[]=14 英:ht ...
- 01.JS语法规范、变量与常量
前言: 学习一门编程语言的基本步骤 (01)了解背景知识 (02)搭建开发环境 (03)语法规范 (04)常量和变量 2.JS的开发环境 (1)浏览器自带的JS解释器(js引擎) (2 ...
- linux 系统内核空间与用户空间通信的实现与分析<转>
linux 系统内核空间与用户空间通信的实现与分析 2 评论: 陈鑫 (chen.shin@hotmail.com), 自由软件爱好者, 南京邮电学院电子工程系 2004 年 7 月 01 日 内容 ...
- 通过RTMP play分析FLV格式详解
最近做了一个rtmp中转服务程序,通过实践,熟悉rtmp play和push中各类格式,这里总结一下. 程序github地址: https://github.com/runner365/rtmp_re ...
- [[其他教程]] 2015年最新版iOS基础视频_最适合初学者入门
主讲:孙庆虎类型:iOS 适合对象:初学者入门视频介绍:本视频是iOS学院精心录制的免费精华版iOS语言基础视频,该视频特点在于最大程度保证了知识点的完整性,按知识点进行视频录制,每个视频控制在20分 ...
- [转]架构蓝图--软件架构 "4+1" 视图模型
架构蓝图--软件架构 "4+1" 视图模型 本文基于多个并发视图的使用情况来说明描述软件密集型系统架构的模型.使用多重视图允许独立地处理各"风险承担人":最终用 ...
- Yacc 与 Lex 快速入门
Yacc 与 Lex 快速入门 Lex 与 Yacc 介绍 Lex 和 Yacc 是 UNIX 两个非常重要的.功能强大的工具.事实上,如果你熟练掌握 Lex 和 Yacc 的话,它们的强大功能使创建 ...
- 20160124.CCPP详解体系(0003天)
程序片段(01):HelloCGI.c 内容概要:CGI_HelloWorld #include <stdio.h> //01.CGI程序的编写规范 // (1).HTML文本格式声明后面 ...
随机推荐
- 免费json API
免费json API http://www.bejson.com/knownjson/webInterface/
- Simple2D-22(重构)纹理池
以前 Simple2D 使用 TextureManager,现在将它改为 TexturePool (纹理池).主要是负责加载和管理纹理,这次为 TexturePool 添加纹理集的功能,纹理集就是将大 ...
- UI5-文档-4.7-JSON Model
现在我们已经设置了视图和控制器,现在是时候考虑MVC中的M了. 我们将在app中添加一个输入字段,将它的值绑定到模型上,并将相同的值绑定到输入字段的描述上.描述将根据用户类型直接更新. Preview ...
- null id in entry (don't flush the Session after an exception occurs)
null id in entry (don't flush the Session after an exception occurs) 遇到这个异常实属不小心所致,最初看到异出的错误信息时我误认为是 ...
- How to Pronounce BEAUTIFUL
How to Pronounce BEAUTIFUL Share Tweet Share Tagged With: 3-Syllable Can you say this word beautiful ...
- SpringDataJPA模糊查询遇到的坑
遇到的情况:在做短信渠道管理添加时,先要去校验数据库中是否有该产线-短信类型-渠道的记录,如果存在就不添加. //在库中是否存在该记录 private boolean ifExistChannelCo ...
- Redis cli 操作
备份 root@575e8088b5fb:/data# redis-cli LASTSAVE(integer) 1500273743root@575e8088b5fb:/data# redis-cli ...
- The maximum column size is 767 bytes (Mysql)
ERROR app.wsutils 419 INCRON: Error: ('HY000', '[HY000] [MySQL][ODBC 5.2(w) Driver][mysqld-5.7.7-rc ...
- drupal 用法小结,drupal select ,query ,distinct
https://api.drupal.org/api/drupal/includes%21actions.inc/function/actions_do/7.x addFileds : 这个更全点: ...
- 第八章 高级搜索树 (b5)B-树: 删除