修改 Apple 的 EADemo 项目以显示字节

Posted

技术标签:

【中文标题】修改 Apple 的 EADemo 项目以显示字节【英文标题】:Modifying Apple's EADemo project to display bytes 【发布时间】:2012-05-09 18:32:17 【问题描述】:

我正在尝试了解 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 字符或字符串。

有人可以帮忙吗?

【问题讨论】:

您确认收到回复了吗?当你说“它什么都不显示”时,你的意思是它显示了“ASCII bytes read:”而没有其他任何东西,还是你的意思是它甚至没有显示? 它显示“ASCII bytes read:”,但它什么也没显示。 Board 肯定可以正常工作,因为它与显示回声的 android 蓝牙程序一起使用。 它适用于 Android 的事实毫无意义。董事会需要做几件事来与 iPhone 通信,而它不需要与 Android 做。原始程序在修改之前是否正确报告正在读取字节? 布拉德,是的,它符合 MFi 标准。这是 Roving Networks RN-41-APL。 也许我遗漏了一些东西,但是你的asciiStringFromData 没有在你的while 循环之外声明是有原因的吗?因为您是在 while 循环中声明它,但访问它以写入循环外的显示。我认为您的应用程序甚至不会像这样编译。 【参考方案1】:

您应该尝试使用NSUTF8StringEncoding 编码而不是NSASCIIStringEncoding

这是一个例子:

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

【讨论】:

以上是关于修改 Apple 的 EADemo 项目以显示字节的主要内容,如果未能解决你的问题,请参考以下文章

EADemo 代码中的协议字符串名称

EADemo可以发送http请求吗

如何测试 EADemo 蓝牙应用

EADemo 示例始终显示“未连接附件”

Applescript 显示 Apple 菜单栏项目

使用蓝牙连接 iPod 的 iOS 外部配件框架