文章目录:
- 1、stc89c52rc单片机 AT指令配置esp8266的程序源码。我试了好几个都不能配置,
- 2、如何用ESP8266的JSON函数解析JSON数据
- 3、esp8266与单片机通信源代码应该怎么写啊?求大神赐教!!!!
- 4、求大神给安卓控制esp8266 io的安卓端源码大全
- 5、如何在Windows平台下编译esp8266 SOC源码
stc89c52rc单片机 AT指令配置esp8266的程序源码。我试了好几个都不能配置,
stc89c52rc单片机 AT指令配置esp8266,一般可以先发送一条测试指令 "AT"有返回信息说明单片机与esp8266通讯连接已经建立,接着可以发送 "AT+CWMODE=3" ,设置成AP兼Station模式,"AT+CIPMUX=0"或者"AT+CIPMUX=1"、单链接 或者 多链接模式,还可以设置成 TCP连接 或者UDP 广播,注意单片机 每发送 一条 AT 指令需要 有一个延时 才能 发送下一条 AT 指令(延时时间约 在 5 mS 左右)否则会不成功。
如何用ESP8266的JSON函数解析JSON数据
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全
独立于语言的文本格式,但是也使用了类似于C语言家族的**惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)
。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速
率)。
JSON 语法规则
JSON 语法是 JavaScript 对象表示语法的子集。
数据在键值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
JSON 名称/值对
JSON 数据的书写格式是:名称/值对。
名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:
"firstName":"John"
这很容易理解,等价于这条 JavaScript 语句:
firstName="John"
JSON 值
JSON 值可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在方括号中)
对象(在花括号中)
null
JSON实战应用篇
由于项目需要,产品一直使用的ESP8266,为了更好的适应实时性控制项目的需求,重新设计了服务器的架构,使用了基
于消息订阅和**的MQTT架构,为了满足服务器同事更好的解析数据的需求,我很无奈的选择了使用JSON数据格式和服务
器交互(其实我还是很喜欢01的,可惜搞**机的更喜欢直接调用现成的API),所以我的WIFI必须支撑JSON,幸好WIFI集
成了JSON API,可惜文档特别不好理解,搞了很久才明白如何构建一个JSON树(我都打算直接在MCU里面用CJSON来实现了
),要构建的JSON树也挺简单的“device_info”:{ "sbtm":"****0882****34", "k":"0001", "v":"0" } sbtm是ID
属性名,K功能码属性名,v命令熟悉值(冒号后面的属性值)。具体代码如下:
/******************************************************************************
* FunctionName : device_get
* Description : set up the device information parmer as a JSON format
* Parameters : js_ctx -- A pointer to a JSON set up
* Returns : result
*******************************************************************************/
LOCAL int ICACHE_FLASH_ATTR
device_get(struct jsontree_context *js_ctx)
{
const char *path = jsontree_path_name(js_ctx, js_ctx-depth - 1);
if (os_strncmp(path, "sbtm", 4) == 0)
{
jsontree_write_string(js_ctx, "****0882****34");
}
else if (os_strncmp(path, "k",1) == 0)
{
jsontree_write_string(js_ctx, "0x0002");
}
else if (os_strncmp(path, "v",1) == 0)
{
jsontree_write_string(js_ctx," 0");
}
return 0;
}
LOCAL struct jsontree_callback device_callback =
JSONTREE_CALLBACK(device_get, NULL);
JSONTREE_OBJECT(device_tree,JSONTREE_PAIR("sbtm",device_callback),JSONTREE_PAIR
("k",device_callback),JSONTREE_PAIR("v",device_callback));
JSONTREE_OBJECT(deviceinfo_tree,JSONTREE_PAIR("device_info",device_tree));
其中宏定义JSONTREE_OBJECT是生成一个JSON数的对象,第一个参数是该对象的名称(device_tree),JSONTREE_PAIR是生
成一个键值对的宏。
JSONTREE_CALLBACL是生成一个回调指针的宏,该宏有两个参数,第一个参数是设置读取JSON树的值的函数,这里为
device_get函数,第二个参数是设置写入JSON树的值的函数,这里没有用到,为NULL。
device_get是读取JSON树的值的函数。其中用os_strncnp进行JSON属性名的判断,这里示例是:如果属性名为"sbtm",则
获取的值为"****0882****34"。通过json_ws_send((struct jsontree_value *)deviceinfo_tree, "device_info",
buf); 函数可以获得JSON树的内容,最后通过MQTT_Publish(mqttClient, "test/json",buf ,os_strlen(buf), 0,0);将
JSON发送到MQTT测试服务器上面
接下来就是如何解析服务器下发的JSON树(对于JSON树如何解析,8266都没资料介绍,把百度谷歌找了一遍也没找到,最后还是自己搞定了,希望后来者少走些弯路)
首先需要初始化一颗JSON树并将你需要解析的JSON的JSON对象deviceinfo_tree填入到jsontree_setup第二个参数,最后调
用device_parse解析就行。
struct jsontree_context js;
jsontree_setup(js, (struct jsontree_value *)deviceinfo_tree, json_putchar);
json_parse(js, buffer);
LOCAL struct jsontree_callback device_callback =
JSONTREE_CALLBACK(device_get,device_parse);
/******************************************************************************
* FunctionName : device_parse
* Description : parse the device status parmer as a JSON format
* Parameters : js_ctx -- A pointer to a JSON set up
* parser -- A pointer to a JSON parser state
* Returns : result
*******************************************************************************/
LOCAL int ICACHE_FLASH_ATTR
device_parse(struct jsontree_context *js_ctx, struct jsonparse_state *parser)
{
int type;
uint8_t status,cmd;
while ((type = jsonparse_next(parser)) != 0)
{
if (type == JSON_TYPE_PAIR_NAME)
{
if (jsonparse_strcmp_value(parser, "k") == 0)
{
jsonparse_next(parser);
jsonparse_next(parser);
cmd = jsonparse_get_value_as_int(parser);
os_printf("cmd=%d",cmd);
}
else if(jsonparse_strcmp_value(parser, "v") == 0)
{
uint8 status;
jsonparse_next(parser);
jsonparse_next(parser);
status = jsonparse_get_value_as_int(parser);
os_printf("status=%d",status);
}
if(cmd== RO_STATE_CMD)
{
}
else if(cmd== POWR_CMD)
{
if(status==0x01)
{
os_printf("power off");
}
else
{
os_printf("power on");
}
}
else if(cmd== FILTER_CMD)
{
if(status==0x01)
{
os_printf("filter on");
}
else
{
os_printf("filter off");
}
}
}
}
return 0;
}
服务器下发的JSON命令解析成功~·`~~~~
esp8266与单片机通信源代码应该怎么写啊?求大神赐教!!!!
esp8266与单片机硬件连接好,然后参照datasheet,写出相应的代码就好了。百度一下:ESP8266内核SDK讨论论坛,可能会帮到您!
求大神给安卓控制esp8266 io的安卓端源码大全
esp8266 WiFi模块,可以用来 与手机 APP 进行通讯 和远程控制,模块官方固件 是通过 串口进行通讯 控制的,如果连接 单片机 可以由 单片机用 AT命令控制 模块IO口,直接通过网络控制 需要 改写模块 固件。
手机APP端 只要自己定义一个 通讯协议, 按照协议收发控制指令 就可以了,(就相当于单片机串口通讯 差不多),有个中文手机APP编程软件(E4A里面有个例程 (客户端组件))可以参考一下,局域网内控制 比较简单,远程控制协议 借助物联网平台 端口(有免费端口可以利用)。
如何在Windows平台下编译esp8266 SOC源码
一,安装编译环境
1,下载安装文件Fans_ESP8266_SDK_Make.exe:
双击Fans_ESP8266_SDK_Make.exe执行安装,默认安装到C盘,不用改变安装路径,一路遇到选择框就点击“确定”和“允许”。安装完成后,会在C盘根目录下生成三个文件夹:c:\python27, c:\ESP8266_SDK_Fans_V2.0, c:\usr
2,需要配置license,用文本编译器打开C:\usr\xtensa\XtDevTools\install\tools\RC-2010.1-win32\XtensaTools\Tools\lic\license.dat,在里面有如下一行:HOSTID=1008B149EFD7,等号后面的是本机的mac地址,需要修改成自己电脑的MAC。选择右下角的网络连接图标,选择网络连接详情可查看:
二,编译
进入到C:\usr\xtensa\esp_iot_sdk目录下,下载测试用例(),将auto_app_test和auto_lib两个文件夹拷贝到这里,然后进入C:\usr\install目录下,双击“xtensa_IOT”,将会运行一个dos窗口,最后一行应该是C:\usr\xtensa\esp_iot_sdk, 然后执行cd auto_app_test,
输入make,如果编译成功会有如下结果:
输入makebin会生成对应的镜像包Fans_SDK_flash.bin文件
三,刷机
首先确保PC机上没有其它串口设备,可进入“设备管理”中查看com,如果有多个,不能确保一定能烧写成功。
用USB转串口板连接ESP8266串口脚到PC的USB口上,在“设备管理”中查看是否会生成一个com设备。同时需要将GPIO0接GND。(在我们的开发套件上,只需要把USB线把板和PC连上,用线将D3与GND连接,就OK了)
在dos窗口上输入burnbin,就会开始刷机了。
当出现以下情况时,请确保1,GPIO0接GND,2,串口设置没有被其它软件打开。
四,运行
刷机完成后,将GPIO0与GND断开,重新断电或reset ,即可重新去行。
ntf("cmd=%d",cmd);}else if(jsonparse_strcmp_value(parser, "v") == 0){uint8 status;
ent, "test/json",buf ,os_strlen(buf), 0,0);将JSON发送到MQTT测试服务器上面接下来就是如何解析服务器下发的JSON树(对于JSON树如何解析,8266都没资料介绍,把百度谷歌找了一遍也没找到,最后还是自
4、求大神给安卓控制esp8266 io的安卓端源码大全5、如何在Windows平台下编译esp8266 SOC源码stc89c52rc单片机 AT指令配置esp8266的程序源码。我试了好几个都不能配置,stc89c52rc
源码大全5、如何在Windows平台下编译esp8266 SOC源码stc89c52rc单片机 AT指令配置esp8266的程序源码。我试了好几个都不能配置,stc89c52rc单片机 AT指令配置esp8266,一般可以先发送一条测试指令 "AT"有返回信息说明单片机与e
行cd auto_app_test,输入make,如果编译成功会有如下结果:输入makebin会生成对应的镜像包Fans_SDK_flash.bin文件三,刷机首先确保PC机上没有其它串口设备,可进入“设备管理”中查看com,如果有多个,不能确保一定能烧