AT Device 软件包:针对不同设备的 AT Socket 移植和示例文件,以软件包的形式给出;

AT Socket 数据结构:

了解协议栈的相关概念

3.3.2.1 AT Socket API介绍

1int at_socket(int domain, int type, int protocol)

通过协议族AF_AT获取第一个指定协议簇类型的网卡对象

通过网卡对象的名字获得AT设备的对象

通过AT设备的对象分配并初始化一个新的AT套接字

1int at_bind(int socket, const struct sockaddr *name, socklen_t namelen)

获取当前设备ip地址

从sockaddr结构中选择ip地址和端口

如果输入的ip地址不同于设备的ip地址,则根据输入的ip分配新的套接字,否则返回。

1int at_connect(int socket, const struct sockaddr *name, socklen_t namelen)

socketaddr结构获取IP地址和端口

调用对应AT网卡驱动的_socket_connect()链接服务器

设置套接字接收数据回调函数

1int at_sendto(int socket, const void *data, size_t size, int flags, const struct sockaddr *to, socklen_t tolen)

调用对应AT网卡驱动的_socket_send()发送数据

其他API

1int at_closesocket(int socket)

2

1int at_recvfrom(int socket, void *mem, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen)

2

1int at_getsockopt(int socket, int level, int optname, void *optval, socklen_t *optlen)

2

1int at_setsockopt(int socket, int level, int optname, const void *optval, socklen_t optlen)

2

1int at_shutdown(int socket, int how)

2

4、应用实例

4.1 使用at_device软件包的ESP8266模组

使用AT Socket 功能的框架:

启动流程:

了解协议栈的相关概念

4.1.1 注册ESP8266设备驱动

1static int esp8266_device_class_register(void)

2

创建并初始化ESP8266 device class对象

在at_device_class_list列表注册AT_DEVICE_CLASS_ESP8266客户端ID

注册esp8266设备操作函数:

1static const struct at_device_ops esp8266_device_ops =

2{

3 esp8266_init,

4 esp8266_deinit,

5 esp8266_control,

6};

7class-》device_ops = &esp8266_device_ops

8

注册esp8266_at_socket操作接口:

1static const struct at_socket_ops esp8266_socket_ops =

2{

3 esp8266_socket_connect,

4 esp8266_socket_close,

5 esp8266_socket_send,

6 esp8266_domain_resolve,

7 esp8266_socket_set_event_cb,

8};

4.1.2 初始化ESP8266设备,链接上无线网络

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查