/// <summary>
    /// 初期設定用コルーチン
    /// </summary>
    /// <param name="callback_init"></param>
    /// <returns></returns>
    private IEnumerator InitCoroutine(UnityAction <bool> callback)
    {
        var wait = new WaitForSeconds(0.01f);

        //[PC→中継基板]リセット要求
        Now_Status_Init = STATUS_INIT.RESET;
        SetSendCmd(string.Empty);

        //[中継基板→PC]使用センサ数指定の要求待ち
        while (Now_Status_Init != STATUS_INIT.SENSOR_CNT)
        {
            ChkTimeOver();
            if (flg_TimeOver)
            {
                callback(true);
                yield break;
            }

            yield return(wait);
        }


        //[PC→中継基板]センサ数の送信
        SetSendCmd(Def_SensorCnt.ToString("00"));
        Now_Status_Init = STATUS_INIT.SENSOR_ID_WAIT;
        //Debug.LogWarning("[PC→中継基板]センサ数の送信");

        //センサーIDの指定をPC・中継基板間でやり取りする
        _init_SensorCnt = 0;
        while (_init_SensorCnt <= Def_SensorCnt)
        {
            //[中継基板→PC]使用センサ数のID要求待ち
            while (Now_Status_Init != STATUS_INIT.SENSOR_ID)
            {
                //Debug.Log("[中継基板→PC]使用センサ数のID要求待ち  id:" + _init_SensorCnt.ToString("00"));
                ChkTimeOver();
                if (flg_TimeOver)
                {
                    callback(false);
                    yield break;
                }

                yield return(wait);
            }
            //[PC→中継基板]センサーIDの送信
            if (++_init_SensorCnt <= Def_SensorCnt)
            {
                SetSendCmd(_init_SensorCnt.ToString("00"));
                Now_Status_Init = STATUS_INIT.SENSOR_ID_WAIT;
            }
        }

        //全て終わったら次のモードに以降する
        callback(true);
        yield break;
    }
    /// <summary>
    /// [初期設定]区切り文字で分割したデータを処理する
    /// </summary>
    /// <param name="_data"></param>
    void RecieveData_Check_Init(string[] _data)
    {
        if (_data == null)
        {
            return;
        }

        switch (Now_Status_Init)
        {
        //リセット要求を送信済み → 使用センサ数指定のコマンドの受信待ち
        case STATUS_INIT.RESET:
            if (FindKeyword_Init(_data, (byte)RECEIVECMD_PTN.REQ_SENSOR_CNT_0, (byte)RECEIVECMD_PTN.REQ_SENSOR_CNT_1))
            {
                Now_Status_Init = STATUS_INIT.SENSOR_CNT;       //センサ数の送信指示
            }
            break;

        //センサーID指定の要求待ち
        case STATUS_INIT.SENSOR_ID_WAIT:
            //最後は"I:"を受信しない仕様
            if (_init_SensorCnt < Def_SensorCnt)
            {
                if (FindKeyword_Init(_data, (byte)RECEIVECMD_PTN.REQ_SENSOR_ID_0, (byte)RECEIVECMD_PTN.REQ_SENSOR_ID_1))
                {
                    //                        Debug.LogWarning("I: を受信");
                    Now_Status_Init = STATUS_INIT.SENSOR_ID;       //センサーIDの送信指示
                }
            }
            else
            {
                char[] c = new char[2];
                if (Def_SensorCnt >= 10)
                {
                    c[0] = (char)Def_SensorCnt.ToString()[0];
                    c[1] = (char)Def_SensorCnt.ToString()[1];
                }
                else
                {
                    c[0] = '0';
                    c[1] = (char)Def_SensorCnt.ToString()[0];
                }

                if (FindKeyword_Init(_data, (byte)c[0], (byte)c[1]))
                {
                    //                        Debug.LogWarning("最後のIDを受信");
                    Now_Status_Init = STATUS_INIT.SENSOR_ID;       //センサーIDの送信指示
                }
            }

            break;
        }
    }