# Delegate 本章では、`ASR033WDelegate` プロトコルに定義されているデリゲートメソッドについて解説します。 このプロトコルを実装することで、ASR033Wの各種イベントやデータを受信できます。 --- ## `receivedASR033WSearchInformation:isFinish:` ASR-033Wの情報を受信した後に呼び出されるデリゲートメソッドです。 検索デバイスの情報取得が完了したタイミングで実行されます。 ::::{tab-set} ::: {tab-item} Swift ```swift @MainActor func receivedASR033WSearchInformation( _ information: [AnyHashable : Any]!, isFinish: Bool ) ``` ::: ::: {tab-item} Objective-C ```objective - (void)receivedASR033WSearchInformation:(NSDictionary *)information isFinish:(BOOL)isFinish; ``` ::: :::: ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `information` - `[String: Any]` - ASR-033Wの情報を格納した辞書 * - `isFinish` - `Bool` - 検索状況。 `true` の場合は検索完了、`false` の場合は検索中 ``` ### サンプルコード ::::{tab-set} ::: {tab-item} Swift ```swift func receivedASR033WSearchInformation(_ information: [AnyHashable : Any]!, isFinish: Bool) { if isFinish { // 検索完了時の処理 } else { // 検索中の処理 } } ``` ::: ::: {tab-item} Objective-C ```objectivec - (void)receivedASR033WSearchInformation:(NSDictionary *)information isFinish:(BOOL)isFinish{ if(isFinish == YES) { // 検索完了 } else { // 検索中 } } ``` ::: :::: --- ## `receivedASR033WNetworkState:error:` ASR-033Wの接続状態を受信した際に呼び出されるデリゲートメソッドです。 接続成功・切断・不明なネットワーク状態などを通知します。 ::::{tab-set} ::: {tab-item} Swift ```swift @MainActor func receivedASR033WNetworkState( _ state: ASR033WNetworkState, error: (any Error)! ) ``` ::: ::: {tab-item} Objective-C ```objective - (void)receivedASR033WNetworkState:(ASR033WNetworkState)state error:(NSError *)error; ``` ::: :::: ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `state` - `ASR033WNetworkState` - ASR-033Wの接続状態。列挙型 [`ASR033WNetworkState`](enum.md#asr033wnetworkstate) を参照 * - `error` - `NSError?` - 接続失敗時のエラー情報。成功時は `nil` ``` ### サンプルコード :::: {tab-set} ::: {tab-item} Swift ```swift func receivedASR033WNetworkState(_ state: ASR033WNetworkState, error: (any Error)!) { if (state == ASR033WNetworkStateConnected) { // 接続成功 } else if (state == ASR033WNetworkStateDisconnected) { // 接続失敗 } else if (state == ASR033WNetworkStateUnknown) { // 不明な状態 } else { // その他のエラー } } ``` ::: ::: {tab-item} Objective-C ```objectivec - (void)receivedASR033WNetworkState:(ASR033WNetworkState)state error:(NSError *)error{ if (state == ASR033WNetworkStateConnected) { // 接続成功 } else if (state == ASR033WNetworkStateDisconnected) { // せ } else if (state == ASR033WNetworkStateUnknown) { // 不明な状態 } else { // その他のエラー } } ``` ::: :::: --- ## `receivedASR033WInventoryPC:epc:tid:ant:rssi:phase:frequency:` インベントリで読み取ったタグ情報を受信するデリゲートメソッドです。 [`startInventoryWithAntenna1`](method.md#startinventorywithantenna1) などでインベントリを開始した後、読み取りごとに呼び出されます。 ::::{tab-set} :::{tab-item} Swift ```swift @MainActor func receivedASR033WInventoryPC( _ pc: String!, epc: String!, tid: String!, ant: Int32, rssi: Int32, phase: Float, frequency: Float ) ``` ::: :::{tab-item} Objective-C ```objectivec - (void)receivedASR033WInventoryPC:(NSString *)pc epc:(NSString *)epc tid:(NSString *)tid ant:(int)ant rssi:(int)rssi phase:(float)phase frequency:(float)frequency; ``` ::: :::: ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `pc` - `NSString` - タグのPCデータ * - `epc` - `NSString` - タグのEPCデータ * - `tid` - `NSString` - タグのTIDデータ * - `ant` - `int` - 使用アンテナ番号 * - `rssi` - `int` - 応答波の信号強度 * - `phase` - `float` - 応答波の位相 * - `frequency` - `float` - 応答波の周波数(MHz) ``` ### サンプルコード ::::{tab-set} :::{tab-item} Swift ```swift func receivedASR033WInventoryPC(_ pc: String!, epc: String!, tid: String!, ant: Int32, rssi: Int32, phase: Float, frequency: Float) { print( "PC: \(pc ?? "nil")\n" + "EPC: \(epc ?? "nil")\n" + "TID: \(tid ?? "nil")\n" + "ANT: \(ant)\n" + "RSSI: \(rssi)\n" + "PHASE: \(phase)\n" + "FREQUENCY: \(frequency)" ) } ``` ::: :::{tab-item} Objective-C ```objectivec - (void)receivedASR033WInventoryPC:(NSString *)pc epc:(NSString *)epc tid:(NSString *)tid ant:(int)ant rssi:(int)rssi phase:(float)phase frequency:(float)frequency { NSLog(@"PC: %@, EPC: %@, TID: %@, Ant: %d, RSSI: %d, Phase: %f, Freq: %f", pc, epc, tid, ant, rssi, phase, frequency); } ``` ::: :::: --- ## `receivedASR033WHIDData:` HIDデータを受信した際に呼び出されるデリゲートメソッドです。 ::::{tab-set} :::{tab-item} Swift ```swift @MainActor func receivedASR033WHIDData(_ HIDData: Data!) ``` ::: ::: {tab-item} Objective-C ```objectivec - (void)receivedASR033WHIDData:(NSData *)HIDData; ``` ::: :::: ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `HIDData` - `NSData` - 受信したHIDデータ ``` ### サンプルコード ::::{tab-set} :::{tab-item} Swift ```swift func receivedASR033WHIDData(_ HIDData: Data!) { print("HIDData: \(HIDData as NSData)") } ``` ::: :::{tab-item} Objective-C ```objectivec - (void)receivedASR033WHIDData:(NSData *)HIDData { NSLog(@"Received HID Data: %@", HIDData); } ``` ::: :::: --- ## `receivedASR033WDeviceState:` ASR-033Wのデバイス状態を受信した際に呼び出されるデリゲートメソッドです。 ::::{tab-set} :::{tab-item} Swift ```swift @MainActor func receivedASR033WDeviceState(_ error: ASR033WResultCode) ``` ::: ::: {tab-item} Objective-C ```objectivec - (void)receivedASR033WDeviceState:(ASR033WResultCode)error; ``` ::: :::: ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `error` - `ASR033WResultCode` - デバイス状態を示す列挙型。 詳細は[`ASR033WResultCode`](enum.md#asr033wresultcode)を参照 ``` ### サンプルコード ::::{tab-set} :::{tab-item} Swift ```swift func receivedASR033WDeviceState(_ error: ASR033WResultCode) { if (error == ASR033WResultNoError) { print("Device state OK") } else { print("Device error: \(error)") } } ``` ::: ::: {tab-item} Objective-C ```objectivec - (void)receivedASR033WDeviceState:(ASR033WResultCode)error { if (error == ASR033WResultNoError) { NSLog(@"Device state OK"); } else { NSLog(@"Device error: %ld", (long)error); } } ``` ::: :::: --- ## `receivedASR033WActionState:resultCode:` インベントリ開始、インベントリ停止、RFタグへの書き込み、ロック、キルの結果を受信します。 以下のメソッドを呼び出した際に呼び出されます。 - [`startInventoryWithAntenna1`](method.md#startinventorywithantenna1) - [`stopInventory`](method.md#stopinventory) - [`writeMemory`](method.md#writememory) - [`lockMemory`](method.md#lockmemory) - [`killMemory`](method.md#killmemory) ::::{tab-set} :::{tab-item} Swift ```swift @MainActor func receivedASR033WActionState( _ action: ASR033WCommandType, resultCode: ASR033WResultCode ) ``` ::: :::{tab-item} Objective-C ```objectivec - (void)receivedASR033WActionState:(ASR033WCommandType)action resultCode:(ASR033WResultCode)resultCode; ``` ::: :::: #### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - action - ASR033WCommandType - ASR033Wコマンドタイプ 列挙型[`ASR033WCommandType`](enum.md#asr033wcommandtype)を参照 * - resultCode - ASR033WResultCode - 列挙型[`ASR033WResultCode`](enum.md#asr033wresultcode)を参照 ``` ### サンプルコード ::::{tab-set} :::{tab-item} Swift ```swift func receivedASR033WActionState(_ action: ASR033WCommandType, resultCode: ASR033WResultCode) { } ``` ::: :::{tab-item} Objective-C ```objectivec - (void)receivedASR033WActionState:(ASR033WCommandType)action resultCode:(ASR033WResultCode)resultCode { } ``` ::: :::: --- ## accessASR033WResult:actionState:epc:data:rssi:phase:frequency インベントリデータを受信します。 [`startInventoryWithAntenna1`](method.md#startinventorywithantenna1)を実行した後、呼び出されます。 ::::{tab-set} :::{tab-item} Swift ```swift @MainActor func accessASR033WResult( _ error: ASR033WResultCode, actionState action: ASR033WCommandType, epc: String!, data: String!, rssi: Float, phase: Float, frequency: Float ) ``` ::: :::{tab-item} Objective-C ```objectivec - (void)accessASR033WResult:(ASR033WResultCode)error actionState:(ASR033WCommandType)action epc:(NSString *)epc data:(NSString *)data rssi:(float)rssi phase:(float)phase frequency:(float)frequency; ``` ::: :::: ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `pc` - `String` - タグのPCデータ * - `epc` - `String` - タグのEPCデータ * - `tid` - `String` - タグのTIDデータ * - `ant` - `int` - アンテナ番号 * - `rssi` - `int` - 応答波の信号強度 * - `phase` - `float` - 応答波の位相 * - `frequency` - `float` - 応答波の周波数 (MHz) ``` ### サンプルコード ::::{tab-set} :::{tab-item} Swift ```swift func accessASR033WResult(_ error: ASR033WResultCode, actionState action: ASR033WCommandType, epc: String!, data: String!, rssi: Float, phase: Float, frequency: Float) { } ``` ::: :::{tab-item} Objective-C ```objectivec - (void)accessASR033WResult:(ASR033WResultCode)error actionState:(ASR033WCommandType)action epc:(NSString *)epc data:(NSString *)data rssi:(float)rssi phase:(float)phase frequency:(float)frequency { // 実装コードをここに記述 } ``` ::: :::: --- ## `receivedASR033WData` ASR-033Wから返されたコマンドデータを受信します。 [`sendData`](method.md#senddata) メソッドを呼び出した後に呼び出されます。 ::::{tab-set} :::{tab-item} Swift ```swift @MainActor func receivedASR033WData(_ data: Data!) ``` ::: :::{tab-item} Objective-C ```objectivec - (void)receivedASR033WData:(NSData *)data; ``` ::: :::: ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `data` - `Data` - 受信したコマンドデータ ``` ### サンプルコード ::::{tab-set} :::{tab-item} Swift ```swift func receivedASR033WData(_ data: Data!) { print("Data: \(data as NSData)") } ``` ::: :::{tab-item} Objective-C ```objectivec - (void)receivedASR033WData:(NSData *)data { } ``` ::: :::: --- ## `receivedASR033WSearchDeviceInfo` AsReader情報を受信します。 [`startSearchDevice`](method.md#startsearchdevice) を実行した後に呼び出されます。 ::::{tab-set} :::{tab-item} Swift ```swift @MainActor func receivedASR033WSearchDeviceInfo(_ arrInfos: [Any]!) ``` ::: :::{tab-item} Objective-C ```objectivec - (void)receivedASR033WSearchDeviceInfo:(NSArray *)arrInfos; ``` ::: :::: ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `arrInfos` - `[Any]` - 受信したAsReader情報の配列 ``` ### サンプルコード ::::{tab-set} :::{tab-item} Swift ```swift func receivedASR033WSearchDeviceInfo(_ arrInfos: [Any]!) { } ``` ::: :::{tab-item} Objective-C ```objectivec - (void)receivedASR033WSearchDeviceInfo:(NSArray *)arrInfos { } ``` ::: ::::