1

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 を使用してバッファーをクリアする方法がわかりません。

4

2 に答える 2

0

宣言したスコープ

- (void) readBytesAvailable:(UInt32)numBytes {

に問題がある可能性があります。これは、B を開いたり閉じたりしても消えない場所で宣言します。たとえば、UINavigationController や AppDelegate などです。

さらに良いのは、RedPark へのインターフェイスを管理する新しいシングルトン クラスを作成し、必要に応じてアプリの残りの部分からクエリを実行することです。

于 2013-02-09T00:36:44.980 に答える