0

我有以下代码,我想知道为什么在 aprox 之后。来自 arduino 的 20 次测量我的应用程序崩溃。它与 NSmutableArray 有关。我我的 .h 我有

NSMutableArray *值;

.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];

}
4

2 回答 2

1

我会试着解释一下。readBytesAvailable 方法有一个循环,用于在每次迭代中,仅从数据缓冲区生成一个字符。然后,如果您尝试将 Arduino 发送到 iPhone 的完整行划分为数字,则会导致该应用程序崩溃。例如,Arduino 在 readBytesAvailable 启动时发送下一个由 3 个数字组成的字符串:“25 13 16”iPhone 应用程序,执行多次迭代,直到缓冲区为空,在循环内执行操作:it.1=2 it.2=5 it.3=it。 4=1 it.5=.3 it.6= it.7=1 it.8=6 it.9=

于 2014-01-20T14:13:24.870 回答
0

(这不是一个真正的答案,但评论太长了)。

  • 即使由于电缆已连接而无法在 Xcode 中调试程序,您也可以稍后将 iPhone 连接到 Xcode 并在 Organizer 窗口中查看控制台输出和设备日志。
  • 您确定rxBuffer数据足够大吗?
  • 我会NSLog()在各个点添加语句以缩小问题范围。特别是length和的价值bytesRead会很有趣。
于 2012-08-25T15:53:57.910 回答