SenbayFormat 0.0.3

SenbayFormat 0.0.3

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布日期上次发布日期2015年11月

tetujinyuuki.nishiyama维护。




Senbay Icon

概述

SenbayFormat 库提供用于 Senbay 中的传感器数据格式的控制方法。在示例代码中,我们将展示以下内容。

  • 使用 Base-121 压缩和解压传感器数据的方法
  • SenbayFormat 的传感器数据压缩/解压方法
  • 使用 SensorDataManager 管理传感器数据

新增功能?

版本 1.0

  • _我们在 SenbayDataFormatCompression 中添加了一个新的方法 getVersionNumber。此方法从 SenbayFormat 文本中返回 SenbayFormat (版本 0 ~ 4)的格式版本 '_'

示例代码

请通过双击 SenbayFormat.xcodeproj 在 Xcode 上打开项目。

示例代码写在 main.m 文件上。

  • 使用 Base-121 压缩和解压传感器数据的方法
  • SenbayFormat 的传感器数据压缩/解压方法
  • 使用 SensorDataManager 管理传感器数据

使用 Base-121 压缩和解压传感器数据的方法

// Case of long value 
long sampleValue01 = 12345;
NSLog(@"%ld", sampleValue01);
SpecialNumber* spNum = [[SpecialNumber alloc] init];
NSString *encodedValue01 = [spNum encodeBaseX:baseNumber longValue:sampleValue01];
NSLog(@"%@", encodedValue01);
long decodedValue01 = [spNum decodeLongBaseX:baseNumber value:encodedValue01];
NSLog(@"%ld", decodedValue01);

// Case of double value
double sampleValue02 = -234.00345;
NSLog(@"%g", sampleValue02);
NSString* encodedValue02 = [spNum encodeBaseX:baseNumber doubleValue:sampleValue02];
NSLog(@"%@",encodedValue02);
double decodedValue02 = [spNum decodeDoubleBaseX:baseNumber value:encodedValue02];
NSLog(@"%g", decodedValue02);

SenbayFormat 的定义

目前我们有 5 个版本的 SenbayFormat (版本 0 ~ 4)。我们建议使用 版本 4

版本号 格式 格式版本信息存在 压缩存在 示例数据(压缩前) 示例(压缩后)
0 CSV × × 1234,0.1,0.01,-0.1 ×
1 键值 × × TIME:1234,ACCX:0.1,ACCY:0.01,ACCZ:-0.1 ×
2 键值 × TIME:1234,ACCX:0.1,ACCY:0.01,ACCZ:-0.1 0xxx,1xxx,2xxx,3xxx
3 键值 × V:3,TIME:1234,ACCX:0.1,ACCY:0.01,ACCZ:-0.1 ×
4 键值 V:4,TIME:1234,ACCX:0.1,ACCY:0.01,ACCZ:-0.1 V:4,0xxx,1xxx,2xxx,3xxx
  • xxx 表示使用 121 进制压缩算法压缩后的压缩文本字符。

定义的键

定义了 16 种类型的定义键。

保留字 压缩后 传感器
TIME 1 Unix时间
LONG 2 纬度
LATI 3 经度
ALTI 4 高度
ACCX 5 加速度计-X
ACCY 6 加速度计-Y
ACCZ 7 加速度计-Z
YAW 8 陀螺仪范围 - Yaw
ROLL 9 陀螺仪范围 - Roll
PITC A 陀螺仪范围 - Pitc
HEAD B 方向
SPEE C 速度
BRIG D 亮度
AIRP E 气压
HTBT F 心跳
V V 版本

版本 0 (CSV, 没有版本信息,无压缩)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
unixtime 时间戳 AccX AccY AccZ 角速度X 角速度Y 角速度Z 经度 纬度 方向 距离 航向 电池 水平精度 垂直精度 高度 HTBT
1.40997908972E11 2014/09/06 13:51:29:714 0.54921 -0.183899 -0.595016 0.19394 0.025706 -0.254604 140.188107 36.317965 0.0 1.0 303.031494 -1.0 10.0 8.0 347.317627 141
[Sample] NSString* sampleCSVDate = @"1.40997908972E11,2014/09/06 13:51:29:714,0.54921,-0.183899,-0.595016,0.19394,0.025706,-0.254604,140.188107,36.317965,0.0,1.0,303.031494,-1.0,10.0,8.0,347.317627,141";

版本 1 (键值对,没有版本信息,无压缩)

必须在文本头部设置 TIME。

NSString* sampleText02 = @"TIME:1234,ACCX:0.1,ACCY:0.01,ACCZ:0.001";
NSLog(@"%@", sampleText02);
NSLog(@"Format version is ... %d", [compressor getVersionNumber:sampleText02]);
// Get sensor data by using SenbayDataManager
SensorDataManager* manager = [[SensorDataManager alloc] init];
[manager setSensorDataString:decodedText05];
NSLog(@"%@", [manager getDataByKey:@"TIME"]);

版本 2 (键值对,没有版本信息,压缩)

// [Format No.2] No version information and compression
SenbayDataFormatCompressor* compressor = [[SenbayDataFormatCompressor alloc] init];
NSString* sampleText02 = @"TIME:1234,ACCX:0.1,ACCY:0.01,ACCZ:0.001";
NSString* sampleText03 = [compressor encode:sampleText02 baseNumber:121]
NSLog(@"%@", sampleText03);
NSLog(@"Format version is ... %d", [compressor getVersionNumber:sampleText03]);
NSString* sample = @"TIME:1425941221.812044,LONG:139.635849,LATI:35.439283,ALTI:-0.109436,SPEE:0.2,ACCX:-0.140427,ACCY:-0.145172,ACCZ:-0.754669,YAW:3.269728,ROLL:-0.698060,PITC:1.455648,HEAD:50.542423,BRIG:0.360247,BATT:-1,AIRP:0,TEMP:8.149988,WEAT:'Fog',HUMI:100,WIND:3.1";

版本 3 (键值对,没有版本信息,无压缩)

NSString* sampleText04 = [NSString stringWithFormat:@"V:%d,%@", dataNormalVersionNumber, sampleText02];
NSLog(@"%@",sampleText04);
NSLog(@"Format version is ... %d", [compressor getVersionNumber:sampleText04]);
if([compressor getVersionNumber:sampleText04] == dataNormalVersionNumber){
  NSLog(@"%@", sampleText04);
}

版本 4 (键值对,版本信息,压缩)

// [Format No.4] Version information and compression
NSString* sampleText05 = [NSString stringWithFormat:@"V:%d,%@",dataCompressionVerNumber, [compressor encode:sampleText02 baseNumber:baseNumber]];
NSString *decodedText05 = @"";
NSLog(@"%@",sampleText05);
NSLog(@"Format version is ... %d", [compressor getVersionNumber:sampleText05]);
if([compressor getVersionNumber:sampleText05] == dataCompressionVerNumber){
    decodedText05 = [compressor decode:sampleText05 baseNumber:baseNumber];
    NSLog(@"%@", decodedText05);
}
NSString* sample = @"TIME:1427521914.127140,LONG:139.495503,LATI:35.306662,ALTI:11.211637,SPEE:5.800000,ACCX:-1.454250,ACCY:-0.114590,ACCZ:-0.104630,YAW:0.369279,ROLL:-0.193332,PITC:0.238990,HEAD:11.522325,BRIG:0.973568,BATT:0.340000,AIRP:101.484795,TEMP:18.559991,WEAT:'Clear',HUMI:15,WIND:1.540000,HTBT:124";

使用 SenbayDataManager 获取传感器数据

SensorDataManager* manager = [[SensorDataManager alloc] init];
[manager setSensorDataString:decodedText05];
NSLog(@"%@", [manager getDataByKey:@"TIME"]);
NSLog(@"%@", [manager getDataByKey:@"ACCX"]);
NSLog(@"%@", [manager getDataByKey:@"ACCY"]);
NSLog(@"%@", [manager getDataByKey:@"ACCZ"]);

将库添加到您的 iOS 项目中

  1. 首先,您应该从 SenbayFormat 复制以下文件。

    • ReservedKeys.h
    • ReservedKeys.m
    • SenbayDataFormatCompressor.h
    • SenbayDataFormatCompressor.m
    • SensorDataManager.h
    • SensorDataManager.m
    • SpecialNumber.h
    • SpecialNumber.m
  2. 其次,请在目标文件中导入 SenbayDataFormatCompressor.hSensorDataManager.h

    #import "SenbayDataFormatCompressor.h" 
    #import "SensorDataManager.h"
  3. 最后,您将初始化 SenbayDataFormatCompressor 和 SensorDataManager

    SenbayDataFormatCompressor* compressor = [[SenbayDataFormatCompressor alloc] init];
    SensorDataManager* manager = [[SensorDataManager alloc] init];

链接

许可

MIT 许可证 (MIT)

版权所有 (c) 2015 NISHIYAMA YUUKI

特此授予任何获得此软件及其相关文档副本(“软件”)的人免费使用权,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许获取软件的人员进行此类操作,但须符合以下条件

上述版权声明和本许可声明应包含在所有副本或实质部分软件中。

本软件按“现有条件”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定目的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论此类责任基于合同、侵权或其他法律途径产生,均与软件或其使用或其他操作有关。

参考