案例2:加工环境信息监控
加工环境信息监控如下图所示:

对于加工信息的检测,在程序中封装了一个UIImageView类型的类SysInfoView和一个NSObject类型的GetSysInfo类,在MVC体系结构中分别代表View和Model。
SysInfoView类主要负责界面的显示,GetSysInfo则封装了HTTP请求接口,使用计时器类NSTimer每隔5秒从服务器获取最新数据,在服务端发送到终端的数据是被封装为JSON格式,使用iOS SDK中JSON解析器NSJSONSerialization可以非常方便的获取到其中的数据。
其中GetSysInfo有五个属性,说明见下表。

同时,在ViewController类中,对GetSysInfo类的五个属性使用KVO观察者模式,当这四个属性的值发生变化时,系统会自动调用回调函数,以更新SysInfoView界面上的数据。
因为机械加工有一定的危险性,所以,非工作人员在未经允许的情况下不得靠近加工设备,在加工现场有一个探测器会不停的检测设备周围有无人员靠近,并把相关信息保存在后台数据库中,GetSysInfo类的属性security即为此防护区是否安全的标识。如果security显示有人闯入防护区,那么系统会发出警报声,提醒工作人员前往加工现场进行处理。
此外,作为传感器类型的一部分,需要将设备的加工信息和工件信息进行监控,设备和工件信息的监控界面设计见下图。

设备信息和工件信息的检测封装为同一个类PlaceObjectInfoView,通过声明此类的对象并加载到视图控制器ViewController上即可进行显示。
其中需要从后台获取的工件信息包括水晶体个数和底座的个数,这个访问服务器的接口封装在类GetGongjianInfo类中,其有两个属性numOfBall和numOfBase,即为水晶体和底座的个数。同样,使用KVO观察者模式对GetGongjianInfo类的numOfBall和numOfBase属性进行监测,如果数值发生变化即调用回调函数更新界面上相关信息。
案例2:加工环境信息监控与获取 -主要代码
#define jsonURL@"http://10.21.1.98:8080/CampusMonitorSystem/latestairmes?id=1103"
- (void)beginGetInfo
{
//每5秒,刷新一次环境信息数据
timer = [NSTimerscheduledTimerWithTimeInterval:5 target:self selector:@selector(getInfo) userInfo:nilrepeats:YES];
[timer fire];
}
- (void)stop
{
[timer invalidate];
}
- (void)getInfo
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
NSData *jsonData = [NSDatadataWithContentsOfURL:[NSURL URLWithString:jsonURL]];
[self performSelectorOnMainThread:@selector(parseJSON:) withObject:jsonDatawaitUntilDone:NO];
});
}
#pragma mark - JSON 数据解析
- (void)parseJSON:(NSData *)jsonData
{
NSError *error;
if (!jsonData) {
// NSLog(@"temperatureData = nil");
return;
}
NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:jsonDataoptions:kNilOptionserror:&error];
if (!dic) {
NSLog(@" JSON parse failed...");
return;
}
NSLog(@"dic = %@", dic);
NSDictionary *dataDic = [dicobjectForKey:@"airmes"];
self.humidity = [dataDicobjectForKey:@"humidity_ID"];
self.temperature = [dataDicobjectForKey:@"temperature_ID"];
self.airlight = [dataDicobjectForKey:@"light_ID"];
self.voltage = [dataDicobjectForKey:@"ADC_Valtage_ID"];
}
引导训练与考核评价
