如何分开收到的数据?使用asyncsocket

时间:2011-11-23 14:01:44

标签: xcode asyncsocket

我正在尝试创建一个可以连接到设备并请求查询的应用。为了能够得到答复,我需要先发送NSString命令。我把它放在NSTimer的循环中。

我通常在Interface Builder中有这样的东西

读: SIDDA1999AP

然后经过一段时间改为

读: @ REL10345

依此类推,直到最后一个字符串发送@“H \ r \ n”然后再回到第一个字符串。

我的部分代码基于Asyncsocket

- (void)viewDidLoad
{
    [super  viewDidLoad];

    // Read Data as loaded
    NSTimer *t;
    t = [NSTimer scheduledTimerWithTimeInterval: 0.5
                                         target: self
                                       selector:@selector(onTick:)
                                       userInfo: nil repeats:YES];

}

-(void)onTick:(NSTimer *)timer {
    sendStr = 
    @"S\r"
    @"@\r\n"
    @"P\r\n"
   @"H\r\n"
    ;

    NSData *sendData = [sendStr dataUsingEncoding:NSUTF8StringEncoding];
    [asyncSocket writeData:sendData withTimeout:-1.0 tag:0];
    [asyncSocket readDataToData:[GCDAsyncSocket CRLFData] withTimeout:-1 tag:0];


}

- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{

    DDLogVerbose(@"socket:didReadData:withTag:");
    NSString *response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
componentsSeparatedByString:@"L"]objectAtIndex:6];

    [self debugPrint2:[NSString stringWithFormat:@"Read:  \n%@",response]];

    [response release];
    [asyncSocket readDataWithTimeout:-1 tag:0];

}

debugPrint2我在哪里显示我的文字。

我想从debugPrint中提取字符串并单独显示。因为它在循环数据中是动态的。我还需要提取一个子字符串(从SIDDA1999AP缩短到1999)。换句话说,删除前缀和后缀。

我的xib会喜欢

Data1: 1999
Data2: 10345
....

以下是我正在进行的申请的图片:

enter image description here

我希望有人可以提供帮助。

0 个答案:

没有答案