2012-05-09 7 views
0

Я пытаюсь понять, как работает EADemo и как работает внешняя инфраструктура доступа. EADemo доступна здесь:Изменение проекта EADemo от Apple для отображения байтов

http://developer.apple.com/library/ios/#samplecode/EADemo/Introduction/Intro.html 

Все, что я хочу сделать, это изменить проект EADemo Apple, чтобы отобразить байты, которые он получает (при условии, что они являются символами типа ASCII) вместо того, чтобы просто подсчитывать, сколько байт он получил .. Так что я изменил EASessionTransferViewController.m ... от:

- (void)_sessionDataReceived:(NSNotification *)notification 
{ 
    EADSessionController *sessionController = (EADSessionController *)[notification object]; 
    uint32_t bytesAvailable = 0; 

    while ((bytesAvailable = [sessionController readBytesAvailable]) > 0) { 
     NSData *data = [sessionController readData:bytesAvailable]; 
     if (data) { 
      _totalBytesRead += bytesAvailable; 
     } 
    } 

    [_receivedBytesLabel setText:[NSString stringWithFormat:@"Bytes Received from Session: %d", _totalBytesRead]]; 
} 

@end 

К ...

- (void)_sessionDataReceived:(NSNotification *)notification 
{ 
    EADSessionController *sessionController = (EADSessionController *)[notification object]; 
    uint32_t bytesAvailable = 0; 

    while ((bytesAvailable = [sessionController readBytesAvailable]) > 0) { 
     NSData *data = [sessionController readData:bytesAvailable]; 
     if (data) { 
      _totalBytesRead += bytesAvailable; 
      NSString *asciiStringFromData = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
     } 
    } 
    [_receivedBytesLabel setText:[NSString stringWithFormat:@"ASCII bytes read: %@", asciiStringFromData]]; 
} 

@end 

Но это не работает вообще. В прошлый раз, когда я пытался, он ничего не показывал. Он был подключен к плате bluetooth, который просто отражал символы ASCII или строки, которые он получил.

Может кто-нибудь помочь?

+0

ли вы убедитесь, что вы получаете ответ на все? Когда вы говорите, что «ничего не отображается», вы имеете в виду, что он отображает «ASCII bytes read:» и ничего больше, или вы имеете в виду, что он даже не отобразил это? – Jim

+0

Он отображает «ASCII bytes read:», но он ничего не отображает. Совет определенно работает, поскольку он работает с программой Android для Android, которая показывает эхо. –

+0

Тот факт, что он работает с Android, ничего не значит. Существует несколько советов, которые необходимо сделать, чтобы общаться с iPhone, что ему не нужно делать с Android. Правильно ли оригинальная программа сообщает, что байты читаются, прежде чем изменять ее? – Jim

ответ

0

Вы должны попытаться использовать кодировку NSUTF8StringEncoding вместо NSASCIIStringEncoding.

Вот пример:

NSString* asciiStringFromData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

 Смежные вопросы

  • Нет связанных вопросов^_^