8.5. COAP
8.5.1. 概述
CoAP是受限制的应用协议(Constrained Application Protocol)的简称
- Ver(版本编号)
固定为0b01
- T(报文类型)
coap协议中定义了4中报文类型,分别为:
CON(Confirmable,T=0b00):需要确认的报文类型。
NON(Non-Confirmable, T=0b01):不需要确认的报文类型。
ACK(Acknowledgement, T=0b10):应答报文
Reset(T=0b11):复位报文
TKL(标签长度)
- Code(格式:c(3bit class type).dd(5bit detail code))
- (1)表示请求时
Code=0.01,表示GET方法
Code=0.02,表示POST方法
Code=0.03,表示PUT方法
Code=0.04,表示DELETE方法
- (2)表示响应时
Code=0.00,表示空报文
Code=2.xx,表示为正确的响应
Code=4.xx,表示为客户端的错误响应
Code=5.xx,表示为服务器的错误响应
Message ID(报文序号) - COAP请求和对应的COAP响应采用相同的Message ID
Token(标签)
Options(选项) - 选项包括Uri-Host、Uri-Path、Uri-Port、Content-Format、Accept等。
0xFF(分隔符)
payload(数据)
8.5.2. DEMO工程
apps/demo/demo_DevkitBoard
8.5.3. COAP Client
示例说明
展示了coap client的工程示例
示例实例
示例代码见 apps\common\example\network_protocols\coap\coap_client\main.c
, 测试时需要在 apps/demo/demo_DevKitBoard/include/demo_config.h
,开启宏 USE_COAP_CLIENT_TEST
。
操作说明
示例需要运行在STA模式 (注:如何进行sta和ap切换,请参考 Wi-Fi部分 )
编译工程,烧录镜像,复位启动
系统启动并成功联网后,向指定coap服务器发送报文,可通过串口软件看到相关输出打印
示例流程如下:
c_main()
入口创建任务
coap_client_start
coap_client_start
函数流程通过
wifi_get_sta_connect_state
函数检测是否通过dhcp成功获取到ip成功通过dhcp获取到ip后,调用
coap_client_test
coap_client_test
任务流程通过GET方法向coap服务器发送confirmabel报文
8.5.4. COAP Server
示例说明
展示了coap server的工程示例
示例实例
示例代码见 apps\common\example\network_protocols\coap\coap_server\main.c
, 测试时需要在 apps/demo/demo_DevKitBoard/include/demo_config.h
,开启宏 USE_COAP_SERVER_TEST
。
操作说明
编译工程,烧录镜像,复位启动
系统启动并成功联网后,coap服务器等待客户端连接
利用copper插件作为客户端,连接coap服务器并向服务器发起GET,POST和PUT请求,可通过串口软件看到相关输出打印。
示例流程如下:
c_main()
入口创建任务
coap_server_start
coap_server_start
函数流程通过
wifi_get_sta_connect_state
函数检测是否通过dhcp成功获取到ip成功通过dhcp获取到ip后,调用
coap_server_test
创建coap服务器
8.5.5. COAP Server调试方法
1.利用copper插件作为客户端连接设备coap服务器。
2.点击Discover,查看coap服务器能提供哪些资源。
3.通过GET方法获取资源。
4.通过POST提交数据,通过串口可查看服务器接收到的数据。