# AsReaderRFIDDeviceDelegate > **⚠️ 注意:** > 本 delegate メソッド群は、AsReader デバイスが正常に接続されており、かつ対応するメソッドを呼び出した後にコールバックされます。 > 非対応モデルや接続されていない場合は、コールバックは発生しません。 --- ## `pcEpcReceived` タグデータを受信します。 [`startScan`](./7_AsReaderRFIDDevice.md#startscan)実行後にコールバックで実行結果を返します。 ```objectivec - (void)pcEpcReceived:(NSData *)pcEpc; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `pcEpc` - NSData - 受信した PC および EPC データ(バイナリ形式) ``` ### サンプルコード ```objectivec - (void)pcEpcReceived:(NSData *)pcEpc{ // 受信した PC+EPC データを処理 } ``` --- ## `pcEpcRssiReceived` RSSI付きのタグデータを受信します。 [`startReadTagsAndRssiWithTagNum`](./7_AsReaderRFIDDevice.md#startreadtagsandrssiwithtagnum)実行後にコールバックで実行結果を返します。 ```objectivec - (void)pcEpcRssiReceived:(NSData *)pcEpc rssi:(int)rssi; ``` ### パラメータ ```{list-table} :align: left :header-rows: 1 * - 項目名 - 型 - 説明 * - `pcEpc` - NSData - 受信した PC および EPC データ(バイナリ形式) * - `rssi` - int - RSSI(RFIDタグからの応答波の信号強度、単位: dBm) ``` ### サンプルコード ```objectivec - (void)pcEpcRssiReceived:(NSData *)pcEpc rssi:(int)rssi{ //pcEpc pcEPCデータ //rssi RSSIデータ } ``` --- ## `didSetOutputPowerLevel` [`setOutputPowerLevel`](./7_AsReaderRFIDDevice.md#setoutputpowerlevel)実行後にコールバックで実行結果を返します。 ```objectivec - (void)didSetOutputPowerLevel:(int)status; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `status` - int - 出力の設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)didSetOutputPowerLevel:(int)status{ //status 0:成功、0以外:失敗 } ``` --- ## `didSetChannelParamReceived` [`setChannel`](./7_AsReaderRFIDDevice.md#setchannel) 実行後にコールバックで実行結果を返します。 ```objectivec - (void)didSetChannelParamReceived:(int)statusCode; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `statusCode` - int - チャンネルパラメータの設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)didSetChannelParamReceived:(int)statusCode{ //statusCode 0:成功、0以外:失敗 } ``` --- ## `didSetAntiCollision` [`setAnticollision`](./7_AsReaderRFIDDevice.md#setanticollision) 後にコールバックで実行結果を返します。 ```objectivec - (void)didSetAntiCollision:(int)status; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `status` - int - アンチコリジョンの設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)didSetAntiCollision:(int)status{ //status 0:成功、0以外:失敗 } ``` --- ## `didSetSession` [`setSession`](./7_AsReaderRFIDDevice.md#setsession)実行後にコールバックで実行結果を返します。 ```objectivec - (void)didSetSession:(int)status; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `status` - int - セッションの設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)didSetSession:(int)status{ //status 0:成功、0以外:失敗 } ``` --- ## `channelReceived` [`getChannel`](./7_AsReaderRFIDDevice.md#getchannel)実行後にコールバックで実行結果を返します。 ```objectivec - (void)channelReceived:(int)channel channelOffset:(int)channelOffset; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `channel` - int - RFIDモジュールのチャンネル * - `channelOffset` - int - RFIDモジュールのチャンネルオフセット ``` ### サンプルコード ```objectivec - (void)channelReceived:(int)channel channelOffset:(int)channelOffset{ //channel RFIDモジュールのチャンネル //channelOffset RFIDモジュールのチャンネルオフセット } ``` --- ## `anticolParamReceived` [`getAnticollision`](./7_AsReaderRFIDDevice.md#getanticollision)実行後にコールバックで実行結果を返します。 ```objectivec - (void)anticolParamReceived:(int)mode Counter:(int)counter; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `mode` - int - 0:固定Q、1:動的Q * - `counter` - int - カウンター ``` ### サンプルコード ```objectivec - (void)anticolParamReceived:(int)mode Counter:(int)counter{ //mode 0:固定Q、1:動的Q //counter カウンター } ``` --- ## `txPowerLevelReceived` [`getOutputPowerLevel`](./7_AsReaderRFIDDevice.md#getoutputpowerlevel)実行後にコールバックで実行結果を返します。 ```objectivec - (void)txPowerLevelReceived:(NSData*)power; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `power` - NSData - SDKがdataデータを解析し、AsReaderInfoクラスに保存します。 このとき、rfidPower、rfidPowerMax、rfidPowerMinの値が更新されます。 ``` ### サンプルコード ```objectivec - (void)txPowerLevelReceived:(NSData*)power{ //power SDKがdataデータを解析し、AsReaderInfoクラスに保存します。このとき、rfidPower、rfidPowerMax、rfidPowerMinの値が更新されます。 } ``` --- ## `regionReceived` [`getRegion`](./7_AsReaderRFIDDevice.md#getregion)実行後に、現在設定されている地域コードをコールバックで返します。 ```objectivec - (void)regionReceived:(int)region; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - `region` - int - 地域コード 17:韓国 33:北米 34:米国 49:ヨーロッパ 65:日本 82:中国 97:ブラジル ``` ### サンプルコード ```objectivec - (void)regionReceived:(int)region{ //region 地域。17:韓国、33:北米、34:米国、49:ヨーロッパ、65:日本、82:中国、97:ブラジル。 } ``` --- ## `onOffTimeChanged` [`setReadTime`](./7_AsReaderRFIDDevice.md#setreadtime)実行後に、読み取り時間設定変更を通知するためにコールバックされます。 ```objectivec - (void)onOffTimeChanged; ``` ### サンプルコード ```objectivec - (void)onOffTimeChanged{ } ``` --- ## `fhLbtReceived` [`getFhLbtParameter`](./7_AsReaderRFIDDevice.md#getfhlbtparameter) 実行後に、FH/LBTパラメータ取得結果をコールバックで返します。 ```objectivec - (void)fhLbtReceived:(NSData *)fhLb; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - fhLb - NSData - データ構成: ・読み取り時間(16bit) ・アイドル時間(16bit ・キャリアセンス時間(16bit) ・目標RFパワーサイズ(16bit) ・FH(8bit) ・LBT(8bit) ・CW(8bit) ``` ### サンプルコード ```objectivec - (void)fhLbtReceived:(NSData *)fhLb{ //fhLb データ構成:読み取り時間(16bit)、停止時間(16bit)、キャリアセンス時間(16bit)、目標RFパワーサイズ(16bit)、FH(8bit)、LBT(8bit)、CW(8bit) } ``` --- ## `hoppingTableReceived` [`getFrequencyHoppingTable`](./7_AsReaderRFIDDevice.md#getfrequencyhoppingmode)実行後にコールバックで実行結果を返します。 ```objectivec - (void)hoppingTableReceived:(NSData *)table; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - table - NSData - テーブルサイズ(8bit) ``` ### サンプルコード ```objectivec - (void)hoppingTableReceived:(NSData *)table{ //table テーブルサイズ(8bit) } ``` --- ## `didSetFhLbt` [`setHoppingOnOff`](./7_AsReaderRFIDDevice.md#sethoppingonoff)実行後にコールバックで実行結果を返します。 ```objectivec - (void)didSetFhLbt:(int)status; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - status - int - FH/LBTの設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)didSetFhLbt:(int)status{ //status 0:成功、0以外:失敗 } ``` --- ## `didSetOptiFreqHPTable` [`setFreqHoppingTable`](./7_AsReaderRFIDDevice.md#setoptimumfrequencyhoppingtable)実行後にコールバックで実行結果を返します。 ```objectivec - (void)didSetOptiFreqHPTable:(int)status; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - status - int - 最適周波数ホッピングテーブルの設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)didSetOptiFreqHPTable:(int)status{ //status 0:成功、0以外:失敗 } ``` --- ## `didSetFHmodeChanged` [`setFrequencyHoppingMode`](./7_AsReaderRFIDDevice.md#setfrequencyhoppingmode)実行後にコールバックします。 ```objectivec - (void)didSetFHmodeChanged; ``` ``` ### サンプルコード ```objectivec - (void)didSetFHmodeChanged{ } ``` --- ## `rfidModuleVersionReceived` [`getRFIDModuleVersion`](./7_AsReaderRFIDDevice.md#getrfidmoduleversion)実行後にコールバックします。 ```objectivec - (void)rfidModuleVersionReceived; ``` ``` ### サンプルコード ```objectivec - (void)rfidModuleVersionReceived{ } ``` --- ## `rfidOnOffTimeReceived` [`getFhLbtParameter`](./7_AsReaderRFIDDevice.md#getfhlbtparameter)実行後にコールバックで実行結果を返します。 ```objectivec - (void)rfidOnOffTimeReceived:(NSData*)data; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - data - NSData - SDKがdataデータを解析し、AsReaderInfoクラスに保存します。 このとき、以下の値が更新されます。 ・rfidOnTime ・rfidOffTime ・carrierSenseTime ・rfidListenBeforeTalk ・rfidContinuousWave ・rfidFrequencyHopping ``` ### サンプルコード ```objectivec - (void)rfidOnOffTimeReceived:(NSData*)data{ //data SDKがdataデータを解析し、AsReaderInfoクラスに保存します。このとき、rfidOnTime、rfidOffTime、carrierSenseTime、rfidListenBeforeTalk、rfidContinuousWave、rfidFrequencyHoppingの値が更新されます。 } ``` --- ## `writtenReceived` [`writeTagMemoryWithEPC`](./7_AsReaderRFIDDevice.md#writetagmemorywithepc)実行後にコールバックで実行結果を返します。 ```objectivec - (void)writtenReceived:(int)statusCode; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - statusCode - int - タグメモリ書き込みの設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)writtenReceived:(int)statusCode{ //statusCode 0:成功、0以外:失敗 } ``` --- ## `sessionReceived` [`getSession`](./7_AsReaderRFIDDevice.md#getsession)実行後にコールバックで実行結果を返します。 ```objectivec - (void)sessionReceived:(int)session; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - session - int - セッション値 0:S0 1:S1 2:S2 3:S3 240:開発モード ``` ### サンプルコード ```objectivec - (void)sessionReceived:(int)session{ //session 0:S0、1:S1、2:S2、3:S3、240:開発モード } ``` --- ## `tagMemoryReceived` [`readTagWithAccessPassword`](./7_AsReaderRFIDDevice.md#readtagwithaccesspassword)実行後にコールバックで実行結果を返します。 ```objectivec - (void)tagMemoryReceived:(NSData *)data; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - data - NSData - タグの記憶内容 ``` ### サンプルコード ```objectivec - (void)tagMemoryReceived:(NSData *)data{ //data タグの記憶内容 } ``` --- ## `killedReceived` [`killTagWithPassword`](./7_AsReaderRFIDDevice.md#killtagwithpassword)実行後にコールバックで実行結果を返します。 ```objectivec - (void)killedReceived:(int)statusCode; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - statusCode - int - タグの破棄設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)killedReceived:(int)statusCode{ //statusCode 0:成功、0以外:失敗 } ``` --- ## `lockedReceived` [`lockTagMemoryWithAccessPassword`](./7_AsReaderRFIDDevice.md#locktagmemorywithaccesspassword)実行後にコールバックで実行結果を返します。 ```objectivec - (void)lockedReceived:(int)statusCode; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - statusCode - int - タグメモリのロック設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)lockedReceived:(int)statusCode{ //statusCode 0:成功、0以外:失敗 } ``` --- ## `responseReboot` デバイスが再起動に入った後にコールバックで実行結果を返します(ファームウェア更新)。 ```objectivec - (void)responseReboot:(int)status; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - status - int - デバイスの再起動設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)responseReboot:(int)status{ //status 0:成功、0以外:失敗 } ``` --- ## `updatedRegistry` [`updateRegistry`](./7_AsReaderRFIDDevice.md#updateregistry)実行後にコールバックで実行結果を返します。 ```objectivec - (void)updatedRegistry:(int)statusCode; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - statusCode - int - レジストリの更新設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)updatedRegistry:(int)statusCode{ //statusCode 0:成功、0以外:失敗 } ``` --- ## `pcEpcSensorDataReceived` [`startReadTagsRFM`](./7_AsReaderRFIDDevice.md#startreadtagsrfm)実行後にコールバックで実行結果を返します。 ```objectivec - (void)pcEpcSensorDataReceived:(NSData *)pcEpc sensorData:(NSData *)sensorData; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - pcEpc - NSData - 温度タグ/湿度タグデータ * - sensorData - NSData - 温度/湿度データ ``` ### サンプルコード ```objectivec - (void)pcEpcSensorDataReceived:(NSData *)pcEpc sensorData:(NSData *)sensorData { int codeType; // タグタイプ、2(湿度タグ)/3(温度タグ) int onChipRssiCodeValue; // タグチップのRSSIデータ int sensorCodeValue; // 温度/湿度データ(16進数) double calcTemp; // 温度(摂氏) NSMutableString *tmptagid; // タグのpcepcデータ(16進数) NSData *tagid = pcEpc; NSData *taghex = sensorData; // pcepc NSDataをNSStringに変換 tmptagid = [[NSMutableString alloc] init]; unsigned char* ptrtagid = (unsigned char*)[tagid bytes]; for(int i = 0; i < tagid.length; i++) [tmptagid appendFormat:@"%02X", *ptrtagid++ & 0xFF ]; // 温湿度データの解析 Byte *b = (Byte*)[taghex bytes]; codeType = b[0]; onChipRssiCodeValue = (b[1] << 8) | b[2]; sensorCodeValue = (b[3] << 8) | b[4]; double code1 = 0; double temp1 = 0; double code2 = 0; double temp2 = 0; double tempCode = sensorCodeValue; if (codeType == 3) { int temp = b[7] << 4; code1 = temp + ((b[8] >> 4) & 0x0F); temp = (b[8] & 0x0F) << 7; temp1 = temp + ((b[9] >> 1) & 0x7F); temp = (b[9] & 0x01) << 8; temp = (temp + b[10]) << 3; code2 = temp + ((b[11] >> 5) & 0x07); temp = (b[11] & 0x1F) << 6; temp2 = temp + ((b[12] >> 2) & 0x3F); calcTemp = ((temp2 - temp1) / (code2 - code1) * (tempCode - code1) + temp1 - 800) / 10; } } ``` --- ## `selectParamReceived` select機能を取得した後にこのメソッドをコールバックします。[`getSelectParameter`](./7_AsReaderRFIDDevice.md#getselectparameter)実行後にコールバックで実行結果を返します。 ```objectivec - (void)selectParamReceived:(NSData *)selParam; ``` {#selparam} ### パラメータ ```{list-table} :header-rows: 1 :align: left * - 項目名 - ビット長 - 説明 * - target - 3bit - セッション:S0(000), S1(001), S2(010), S3(011), SL(100) * - action - 3bit - ISO18000-6C規格に準拠したアクション指定 * - memoryBank - 2bit - メモリ領域:RFU(00), EPC(01), TID(10), User(11) * - pointer - 32bit - フィルタ対象メモリの開始アドレス * - length - 8bit - フィルタリング対象データの長さ * - truncate - 1bit - フィルタ一致時にタグデータを切り捨てる:有効(1), 無効(0) * - reserve - 7bit - 予約(未使用) * - mask - 可変(0〜255bit) - フィルタリングデータ本体 ``` ### サンプルコード ```objectivec - (void)selectParamReceived:(NSData *)selParam{ // selParam データ構成: // target(3bit):セッション:S0 (000), S1 (001), S2 (010), S3 (011), SL (100) // action(3bit):ISO18000 - 6C規格を参照 // memoryBank(2bit):領域:RFU (00), EPC (01), TID (10), User (11) // pointer(32bit):フィルタリングの開始アドレス // length(8bit):フィルタリングデータの長さ // truncate(1bit):フィルタリング条件に合致するタグデータを切り捨てるかどうかを制御:有効(1),無効(0) // reserve(7bit):予約 // mask(0~255bit):フィルタリングデータ } ``` --- ## `epcReceived:tid:` [`startReadTagAndTidWithTagNum`](./7_AsReaderRFIDDevice.md#startreadtagandtidwithtagnum)実行後にコールバックで実行結果を返します。 ```objectivec - (void)epcReceived:(NSData *)epc tid:(NSData *)tid; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - epc - NSData - epcデータ * - tid - NSData - tidデータ ``` ### サンプルコード ```objectivec - (void)epcReceived:(NSData *)epc tid:(NSData *)tid{ // epc epcデータ // tid tidデータ } ``` --- ## `modulationParamReceived:rxMod:dr:` [`getModulation`](./7_AsReaderRFIDDevice.md#getmodulation)実行後にコールバックで実行結果を返します。 ```objectivec - (void)modulationParamReceived:(int)blf rxMod:(int)rxMod dr:(int)dr; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - blf - int - 160:BLF_160, 250:BLF_250, 320:BLF_320, 640:BLF_640 * - rxMod - int - 0:FM0,1:M2,2:M4,3:M8 * - dr - int - 0:8,1:64/3 ``` ### サンプルコード ```objectivec - (void)modulationParamReceived:(int)blf rxMod:(int)rxMod dr:(int)dr{ // blf 160:BLF_160, 250:BLF_250, 320:BLF_320, 640:BLF_640 // rxMod 0:FM0,1:M2,2:M4,3:M8 // dr 0:8,1:64/3 } ``` --- ## `rssiThresholdReceived:` [`getRSSIThreshold`](./7_AsReaderRFIDDevice.md#getrssithreshold)実行後にコールバックで実行結果を返します。 ```objectivec - (void)rssiThresholdReceived:(uint16_t)threshold; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - threshold - uint16_t - RSSI値 ``` ### サンプルコード ```objectivec - (void)rssiThresholdReceived:(uint16_t)threshold{ // threshold RSSI値 } ``` --- ## `writtenReceived:` [`writeTagMemoryWithAccessPassword`](./7_AsReaderRFIDDevice.md#writetagmemorywithaccesspassword)または`writeTagMemoryWithEPC`実行後にコールバックで実行結果を返します。 ```objectivec - (void)writtenReceived:(int)statusCode; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - statusCode - int - タグメモリ書き込みの結果 0:成功 0以外:失敗 ``` ### サンプルコード --- ## `didSetModulation:` [`setModulationBLF`](./7_AsReaderRFIDDevice.md#setmodulationblf)実行後にコールバックで実行結果を返します。 ```objectivec - (void)didSetModulation:(int)status; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - status - int - 変調設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)didSetModulation:(int)status{ // status 0:成功、0以外:失敗 } ``` --- ## `didGetAutoOffTimeReceived:` [`getAutoOffTime`](./7_AsReaderRFIDDevice.md#getautoofftime)実行後にコールバックで実行結果を返します。 ```objectivec - (void)didGetAutoOffTimeReceived:(int)time; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - time - int - デバイスの自動オフ時間 ``` ### サンプルコード ```objectivec - (void)didGetAutoOffTimeReceived:(int)time{ // time :デバイスのスリープ時間 } ``` --- ## `didSetAutoOffTime:` [`setAutoOffTime`](./7_AsReaderRFIDDevice.md#setautoofftime)実行後にコールバックで実行結果を返します。 ```objectivec - (void)didSetAutoOffTime:(int)status; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - status - int - 設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)didSetAutoOffTime:(int)status{ // status 0:成功、0以外:失敗 } ``` --- ## `didGetContinuousModeReceived:` [`getContinuousMode`](./7_AsReaderRFIDDevice.md#getcontinuousmode)実行後にコールバックで実行結果を返します。 ```objectivec - (void)didGetContinuousModeReceived:(BOOL)continuousMode; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - continuousMode - BOOL - YES:連続モード NO:単発モード ``` ### サンプルコード ```objectivec - (void)didGetContinuousModeReceived:(BOOL)continuousMode{ // continuousMode :YES:連続モード、NO:単発モード } ``` --- ## `didSetContinuousMode:` [`setContinuousMode`](./7_AsReaderRFIDDevice.md#setcontinuousmode)実行後にコールバックで実行結果を返します。 ```objectivec - (void)didSetContinuousMode:(int)status; ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 項目名 - 型 - 説明 * - status - int - 設定結果 0:成功 0以外:失敗 ``` ### サンプルコード ```objectivec - (void)didSetContinuousMode:(int)status{ // status 0:成功、0以外:失敗 } ```