Redpark Serial SDK 1.4 r270 を使用して、iPhone の I/O 機能を支援しています。私が現在抱えている問題の1つは、使用して指定されたデータを読み取ることです
- (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
これは完全に機能し、単一のビュー アプリケーションでは正常に機能します。
ボタンがクリックされたときに A => B であるビュー A とビュー B を持つ UINavigationController があるとします。ビュー B は RscMgr スレッドを使用しており、すべての魔法がたまたまシリアル ポートから読み取られます。ビュー B の UINavigationController の最初のインスタンスでは、このビューに留まると完全に正常に動作します。ポートを切断して接続し、データのストリーミングを続行できます。
ただし、ビュー A に戻ってからビュー B に戻ると、すべてが地獄に落ちます。この関数からデータを読み取ることができなくなり、コンソールに (複数の) エラーが見つかりました。なぜこれが起こったのか、どうすれば修正できるのか、正当な理由がある人はいますか? UIViewController をスタックからポップすると、すべてがリセットされ、RscMgr スレッドが再び作成されますが、何も表示されません。SDK が提供されていないため、SDK を使用してバッファーをクリアする方法がわかりません。