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 <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
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
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值