iOS - WiFi近场通信(局域网通信)

硬件:乐鑫 ESP8266


模块工作原理:

首先,硬件通电,如果之前没有配过网,会进入到等待配网的模式,然后监听周围的数据包,手机通过UDP组播、广播数据包(这个数据包是SSID和密码),WIFI模块监听接收到数据包之后进行解析(每家厂商有自己的算法),解析之后自动连接上路由器;如果之前配过网,先自己连接路由器,连接上路由器后进入工作模式。
然后,在连接路由器后进入工作模式,会向外发送数据包(这个数据硬件自定义),手机通过UDP监听1112端口,就可以得到这些数据,这些数据分析一下显示出来。这是接收数据,发送数据的话是通过UDP直接往2525端口(别的端口好像也没问题,比如1112端口)发送数据包。


APP工作流程:
主要为三个页面;
一、WiFi设备列表页;
二、一键配网页;
三、设备控制页;

在WiFi设备列表页,右上角为添加设备按钮,点击按钮后进入到一键配网页,配网成功新建一个设备并返回到WiFi设备列表页显示,点击WiFi设备列表页进入 设备控制页。(注意,比如设备列表页有两个设备,两个设备分别显示各自的数据)


项目分析:

整个模块与硬件交互大致分为两个部分;一、配网部分;二、和硬件数据交互部分。

1、配网部分,乐鑫已经有了sdk(有乐鑫自己配网的方式),地址:https://github.com/EspressifApp

2、和硬件数据交互部分,为了图方便,采用了第三方Asyncudpsocket框架。下面展示原生UDP和Asyncudpsocket各自方法。



和硬件交互部分:

/

1.原生UDP部分

引用C框架

#include 
#include 
#include 
UDP代码

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.view.backgroundColor = [UIColor whiteColor];
    
    static dispatch_once_t predicate;
    dispatch_once(&predicate, ^{
        [self UDP_Server];
    });

}

/*
 第一步:创建socket并配置socket

你可能感兴趣的:(iOS,WiFi,数据分析,硬件,局域网)