我正在使用以下内容:核心图2.2,xcode 7.3.1,ios 8.3和Objective-c。
。我目前能够从柏树BLE模块中获取传入的电压数据,并在NSMutableArray *voltageData
中储存数据点。我将这些点用作代表方法numberForPlot:field:recordIndex:
中y轴上的值。我有一个NSTimer
对象,该对象触发一次调用每0.1 ms捕获电压数据的方法。这是该方法:
// kMaxDataPoints = 50;
// '_real' is the voltage data of type Float32
- (void)incomingData:(nonnull NSTimer *)theTimer {
if (self.plotData.count >= kMaxDataPoints) {
[self.plotData removeAllObjects];
[self.plot deleteDataInIndexRange:NSMakeRange(0, kMaxDataPoints)];
[self.voltageData removeAllObjects];
self.currentIndex = -1;
}
self.currentIndex++;
if (self.voltageData == nil) {
self.voltageData = [[NSMutableArray alloc] init];
}
[self.voltageData addObject:[NSNumber numberWithFloat:_real]];
[self.plotData addObject:@(_real)];
[self.plot insertDataAtIndex:(self.plotData.count - 1) numberOfRecords:1];
}
我的可变阵列voltageData
和plotData
始终具有正确的值。每次图表到达数据点的末端时,它都以正确的电压值"重新启动",但数据线"连接"到来自原点的另一个直线(0,0)。想象一下这条直线绘制数据线...这就是它的样子。
和关于正在发生的事情的想法?作为旁注,我没有用另一点代替任何点。我从阵列中删除所有点,然后清除整个图,然后再重新启动。
在图上而不是-deleteDataInIndexRange:
上调用-reloadData
。这确保所有旧的绘图数据都已删除。