SenbayFormat 库提供用于 Senbay 中的传感器数据格式的控制方法。在示例代码中,我们将展示以下内容。
请通过双击 SenbayFormat.xcodeproj
在 Xcode 上打开项目。
示例代码写在 main.m
文件上。
// 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);
目前我们有 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 |
定义的键
定义了 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 | 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";
必须在文本头部设置 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"]);
// [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";
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);
}
// [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";
SensorDataManager* manager = [[SensorDataManager alloc] init];
[manager setSensorDataString:decodedText05];
NSLog(@"%@", [manager getDataByKey:@"TIME"]);
NSLog(@"%@", [manager getDataByKey:@"ACCX"]);
NSLog(@"%@", [manager getDataByKey:@"ACCY"]);
NSLog(@"%@", [manager getDataByKey:@"ACCZ"]);
首先,您应该从 SenbayFormat 复制以下文件。
其次,请在目标文件中导入 SenbayDataFormatCompressor.h
和 SensorDataManager.h
。
#import "SenbayDataFormatCompressor.h"
#import "SensorDataManager.h"
最后,您将初始化 SenbayDataFormatCompressor 和 SensorDataManager
SenbayDataFormatCompressor* compressor = [[SenbayDataFormatCompressor alloc] init];
SensorDataManager* manager = [[SensorDataManager alloc] init];
MIT 许可证 (MIT)
版权所有 (c) 2015 NISHIYAMA YUUKI
特此授予任何获得此软件及其相关文档副本(“软件”)的人免费使用权,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许获取软件的人员进行此类操作,但须符合以下条件
上述版权声明和本许可声明应包含在所有副本或实质部分软件中。
本软件按“现有条件”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定目的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论此类责任基于合同、侵权或其他法律途径产生,均与软件或其使用或其他操作有关。