我有以下代码,我想知道为什么在aprox之后。来自我的应用程序arduino的20个测量值崩溃。它与NSmutableArray有关。我的.h我有
NSMutableArray * values;
.m看起来像这样:
- (void) readBytesAvailable:(UInt32)length
{
myString = [NSMutableString stringWithString:@""];
int bytesRead = [rscMgr read:rxBuffer Length:length];
for (int i = 0; i < bytesRead; i++)
{
[myString appendString:[NSString stringWithFormat:@"%c",((char *)rxBuffer)[i]]];
}
NSArray *arrayValues = [myString componentsSeparatedByString:@","];
textView.text = [arrayValues objectAtIndex:1];
}
答案 0 :(得分:1)
我会尽力解释一下。 readBytesAvailable方法有一个循环,在每次迭代中,只从数据缓冲区生成一个字符。 然后,如果你试图分成数字,Arduino发送到iPhone的完整行会导致该应用程序崩溃。 例如,Arduino发送下一个3个数字的字符串:&#34; 25 13 16&#34; 当readBytesAvailable启动时,iPhone应用程序执行几次迭代,直到缓冲区为空,在循环内执行操作: IT.1 = 2 it.2 = 5 it.3 = it.4 = 1 it.5 = 0.3 it.6 = it.7 = 1 它。8 = 6 it.9 =
答案 1 :(得分:0)
(这不是一个真正的答案,但评论的时间太长了。)
rxBuffer
对于数据来说足够大吗?NSLog()
语句来缩小问题范围。特别是length
和bytesRead
的价值会很有趣。