1

我正在使用 Redpark Serial SDK 1.4 r270 来帮助 iphone 的 i/o 功能。我目前遇到的问题之一是读取使用给出的数据

- (void) readBytesAvailable:(UInt32)numBytes {

这是我的错误。

Feb  8 15:27:50  iapd[897] <Warning>: ERROR - /SourceCache/iapd/iapd-1065.23/iapd/IAPSession.mm:-[IAPSessionBasic _sessionBufferToAppHasSpaceAvailable] - 823 session=0x1 for connectionID=0x1e12ea00 failed to write bytes, errno = 32
Feb  8 15:27:50  iOS[7428] <Warning>: ERROR - /SourceCache/ExternalAccessory/ExternalAccessory-213/EASession.m:-[EASession dealloc] - 137 unable to close session for _accessory=0x20047eb0 and sessionID=65536
Feb  8 15:27:50  iOS[7428] <Warning>: ERROR - /SourceCache/ExternalAccessory/ExternalAccessory-213/EAOutputStream.m:-[EAOutputStream write:maxLength:] - 212 failed to write 229 bytes (wrote -1) with error 9
Feb  8 15:27:50  iOS[7428] <Warning>: ERROR - /SourceCache/ExternalAccessory/ExternalAccessory-213/EAInputStream.m:-[EAInputStream _readInputFromAccThread] - 357 error waiting for read data, errno = 9

这与单视图应用程序完美配合。

假设有一个 UINavigationController 具有视图 A 和视图 B,其中 A => B 当单击按钮时。视图 B 正在使用 RscMgr 线程,其中所有的魔法都恰好从串行端口读取。在视图 B 的 UINavigationController 的第一个实例中,如果我们停留在此视图上,它可以正常工作。我们能够断开连接,连接端口,我们将继续流式传输数据。

但是,如果我返回查看 A,然后返回查看 B。一切都将陷入困境。我无法再从此函数中读取数据,并且在控制台中发现 (MULTIPLE) 错误。有没有人有充分的理由说明为什么会发生这种情况以及我们如何解决它?我知道我们已经将 UIViewController 从堆栈中弹出,一切都重置了,并且再次创建了 RscMgr 线程,但没有查看任何内容。我不确定如何使用 SDK 清除缓冲区,因为它没有提供。

4

2 回答 2

1

这比上面的解决方案更简单。在不同的 .m 文件中定义您的函数,并从 AppDelegate 而不是 ViewController 启动。

我以前写的应用程序有这个问题。另一种选择是在 App Delegate 中声明 RscMgr,然后在给定的 ViewController 中对其进行初始化。

于 2017-05-30T16:28:00.450 回答
0

您声明的范围

- (void) readBytesAvailable:(UInt32)numBytes {

很可能是问题所在。我会在您打开和关闭 B 时不会消失的地方声明这一点。例如在 UINavigationController 或 AppDelegate 上。

更好的是,创建一个新的单例类来管理 RedPark 的接口,并根据需要从应用程序的其余部分查询它。

于 2013-02-09T00:36:44.980 回答