====== IMcAdr() ====== ''IMcAdr()''はX・Y・M・Dメモリの開始アドレスを設定します。 {{:ja-jp_commands:reference:imcadr.svg?900|IMcAdr コマンドの動作フロー}} ''void IMcAdr(uint16_t x_offset, uint16_t y_offset, uint16_t m_offset, uint16_t d_offset)'' ===== コマンド ===== ^ コマンド ^ 引数 ^ 戻り値 ^ 動作 ^ | ''IMcAdr(x_offset, y_offset, m_offset, d_offset)'' | ''uint16_t x_offset''\\ ''uint16_t y_offset''\\ ''uint16_t m_offset''\\ ''uint16_t d_offset'' | ''void'' | X・Y・M・Dメモリの開始アドレスを設定します。 | ===== 使用例 ===== この例では、MPINO-16A8R8TのRS-485ポート''Serial2''、入力''D22''、トランジスタ出力''D39''を使用します。 void setup() { IMcMem(32, 32, 64, 64); // MC Protocolで使用するX・Y・M・Dメモリサイズを設定します。 IMcAdr(0, 0, 0, 0); // X・Y・M・Dメモリの開始アドレスを設定します。 IMcInit(Serial2, 1, 9600); // 通信ポート、局番、ボーレートを設定します。 } void loop() { IMcProtocol(); // 受信要求を確認し、MC Protocol応答を処理します。 if (X != nullptr) X[0] = digitalRead(22) == HIGH; if (Y != nullptr) digitalWrite(39, Y[0] ? HIGH : LOW); } ===== 注意事項 ===== * ''loop()''で''IMcProtocol()''を継続的に呼び出します。 * X/Yの16進数アドレスとM/Dの10進数アドレスを混同しないでください。 * ポインタを割り当てる前にX/Y/M/Dを使用しないでください。 * CnetまたはModbusが実行中に共有''M''/''D''を再割り当てすると、MC Protocolが参照していたアドレスが変わります。メモリサイズの設定はすべて''setup()''で完了し、実行中は再呼び出ししないでください。 * 割り当て関数は成功状態を返しません。サイズが0でない場合、該当するグローバルポインタが''nullptr''でないことを確認してからアクセスします。 ===== 同じカテゴリの内蔵コマンド ===== * [[:ja-jp_commands:reference:imcmem|IMcMem() 詳細説明を見る]] * [[:ja-jp_commands:reference:imcinit|IMcInit() 詳細説明を見る]] * [[:ja-jp_commands:reference:imcprotocol|IMcProtocol() 詳細説明を見る]] [[:ja-jp_commands:builtin|← 内蔵コマンド一覧]]