前段时间,在NXP帮别人简单的封装了一套ESP8266的WIFI的库,直接用的AT指令挂到单片机上面跑的,临时做的用的是STA模式,TCPClient,由于买的模块各种问题(市面上很多ESP8266的模块,买回来请注意把指令都测试一下),连不上路由,在社区共享给后也没有人提出反馈。。。。。。所以临时就这么搁置了,指令通过串口测试了各个状态之间切换正常。不保**完没有BUG,但是提供了一个简洁的状态机框架,轻松改下即可用到GPRS、蓝牙等加他AT指令集的模块,希望对大家有帮助![]() |
ESP8266.zip
下载12.23 KB, 下载次数: 583
æºä»£ç
微信公众号
手机版
{
if(ESP8266Step.Step < IDLE)( X! u' r h# y b& K) A
{9 Y2 y: y7 D) L* ]) u
ESP8266Step.ReveBuff[ESP8266Step.HalRevSize++] = inPut;
if(ESP8266Step.HalRevSize == MAXREVESIZE)
{0 R! H3 W1 r6 K( \; w3 {
memset(ESP8266Step.ReveBuff,0,MAXREVESIZE);
ESP8266Step.HalRevSize = 0;
}
}
else if(ESP8266Step.Step >= IDLE)
{
TCPTransmission.TcpRxBuff[TCPTransmission.TcpRxSize++] = inPut;. K/ e+ z# a# a& n( a. |: d! g; [9 F
/ |* e4 b, e. I' W6 B/ W+ z
TCPTransmission.TcpRevTime = GetTime();
TCPTransmission.RevFlag = 0xff;- N W2 ~. Q$ I9 R" R
}+ B& ~7 z, Z" X
" `, B: Z3 T9 s% J& j: Q
}
//接收数量没做限制,有数组越界风险。0 U+ F/ Z( s( A- L
//增加限制及处理: t/ Q0 d" Q: Y! d
新代码如下( j: ^/ z- T: w V( ? t+ v
void ESP8266HalRevData(uint8_t inPut)
{
/ n" [8 P1 ^2 ?. N- \( [. T
if(ESP8266Step.Step < IDLE)
{
ESP8266Step.ReveBuff[ESP8266Step.HalRevSize++] = inPut;6 C0 d% y! c2 P, b* }, }
if(ESP8266Step.HalRevSize == MAXREVESIZE)& B$ b, Z7 R* b. U4 q' c
{
memset(ESP8266Step.ReveBuff,0,MAXREVESIZE);3 x, G' e8 X$ P" [0 @
ESP8266Step.HalRevSize = 0;! Q1 ?% K) X2 z; N9 @+ X
}; W1 J! Z# N( o0 {
}
else if(ESP8266Step.Step >= IDLE)
{( I. F; R$ z) q4 m' F# w5 `
TCPTransmission.TcpRxBuff[TCPTransmission.TcpRxSize++] = inPut;; l3 w- T/ q0 N
if(TCPTransmission.TcpRxSize >= MAXREVESIZE)
{
memset(ESP8266Step.ReveBuff,0,MAXREVESIZE);
TCPTransmission.TcpRxSize = 0;
TCPTransmission.RevFlag = 0;
}" D1 z# Z$ z! u' _: F( w
else$ x' K5 x; R; |. L; A
{" ?2 x( C2 o* q- {+ U( O2 {: i
TCPTransmission.TcpRevTime = GetTime();
TCPTransmission.RevFlag = 0xff;+ X- k) P3 z# ]' c* j
} + \' t2 O. P$ {6 s7 z% N5 w7 B3 W
} % E* k# h' J, G' L$ {$ p$ ]
}
9 Q+ L& _" R Z9 D5 U/ O
欢迎批评指正/ D' F( l! i* a
这套是我根据买的模块测试的一个流程。我的模块偶尔可以连上,连不上的时候咋都连不上,不知道是不是模块问题,你可以试试,有BUG就自己改吧,年底了项目紧没时间折腾了
谢谢分享