最近项目中用到了iPad驱动硬件来工作,也就是智能硬件的实现。下面简单说下原理,详细说下socket,wifi通信,数据处理接收,发送,以及数据解析代码。
首先,来说下通信。因为硬件部件比较多,我们采取的是,iPad与主控板进行交换数据,主控板来与各硬件部件进行通信。看图:
其中,主控与零部件间及时通讯,零部件实时把状态上报给主控。
当然,iPad与主控板也是及时通讯,主控需要每秒都上报给iPad各个硬件的当前状态,以供iPad可以实时监控各零部件并且显示不同的状态,比如“ipad上实时显示电冰箱的温度”。
后面这黑体加粗才是我们iOS端要做的任务。涉及到
1.与主控建立连接,
2.并保持长链接,实时接收解析主控发来的零部件状态,
3.以及iPad给主控发指令来驱动硬件动作,比如“iPad发送指令让电灯关闭”。
与主控建立连接,我们用到的是GCDAsyncSocket这个类,github地址https://github.com/robbiehanson/CocoaAsyncSocket,
// Created by 王聪
// Copyright © 2018年 apple. All rights reserved.
#import "GCDAsyncSocket.h"
@property (nonatomic,strong) GCDAsyncSocket *clientSocket;
@property (nonatomic,assign) BOOL connected;
- (void)setSocketData
{
if (self.clientSocket && self.clientSocket.isConnected) {
[self.clientSocket disconnect];
self.clientSocket = nil;
}
self.clientSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
NSError *error = nil;
s