0

EADemo がどのように機能し、外部アクセサリ フレームワークがどのように機能するかを理解しようとしています。EADemo は以下から入手できます。

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

私がやりたいのは、AppleのEADemoプロジェクトを変更して、受信したバイト数をカウントするだけでなく、受信したバイト数を表示することです(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

しかし、これはまったく機能していません。前回試したときは何も表示されませんでした。受信したASCII文字または文字列をエコーバックするBluetoothボードに接続されていました。

誰か助けてくれませんか?

4

1 に答える 1

0

NSUTF8StringEncodingの代わりにエンコーディングを使用するようにしてくださいNSASCIIStringEncoding

次に例を示します。

NSString* asciiStringFromData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
于 2015-06-21T21:16:56.210 に答える