/// <summary>
    /// 対象モーターを止めずにppsを反映するコマンドを送信
    /// </summary>
    /// <param name="targetMotor"></param>
    void SetSendCmd_OnlySetting(MotorSetting targetMotor)
    {
        string sendCmd = string.Empty;

        switch (targetMotor.type)
        {
        case CMD_TYPE.MOTOR1:
            sendCmd = cmd_B3;
            break;

        case CMD_TYPE.MOTOR2:
            sendCmd = cmd_B4;
            break;

        case CMD_TYPE.MOTOR3:
            sendCmd = cmd_B5;
            break;

        case CMD_TYPE.MOTOR4:
            sendCmd = cmd_B6;
            break;
        }

        sendCmd += targetMotor.pps.ToString("X4");
        if (sendCmd.Length == CmdLength)
        {
            DataSend(sendCmd);
        }
    }
    /// <summary>
    /// PPS,方向を反映するコマンドを送信
    /// </summary>
    /// <param name="_ms"></param>
    void SetSendCmd_Setting(MotorSetting targetMotor)
    {
        if (!GetisConnect())
        {
            return;
        }

        string sendCmd = cmd_B2;

        switch (targetMotor.type)
        {
        case CMD_TYPE.MOTOR1:
            sendCmd += subCmd_Motor1;
            break;

        case CMD_TYPE.MOTOR2:
            sendCmd += subCmd_Motor2;
            break;

        case CMD_TYPE.MOTOR3:
            sendCmd += subCmd_Motor3;
            break;

        case CMD_TYPE.MOTOR4:
            sendCmd += subCmd_Motor4;
            break;
        }

        if (sendCmd.Length == CmdLength)
        {
            DataSend(sendCmd);
        }
    }
    /// <summary>
    /// MotorSettingにセットした値をもとにコマンドを送信
    /// </summary>
    void SendCmd_MotorSetting(MotorSetting _ms)
    {
        //モーターを止めて反映するか、止めずに反映するかによってコマンドが異なる
        switch (_ms._ptn)
        {
        case SEND_PTN.NONE:
            break;

        case SEND_PTN.START:
            SetSendCmd_isStart(_ms);
            break;

        case SEND_PTN.STOP:
            SetSendCmd_isStart(_ms);
            break;

        case SEND_PTN.ONLY_SETTING:
            SetSendCmd_OnlySetting(_ms);
            break;
        }

        //送信終わったら初期化する
        _ms._ptn    = SEND_PTN.NONE;
        _ms.isReady = false;
    }
    //準備OK
    public void ReadyOK(CMD_TYPE motor)
    {
        MotorSetting _ms = getMotorSetting(motor);

        if (_ms == null)
        {
            return;
        }
        _ms.isReady = true;
    }
    //コマンド送信時の動作パターンをセット ※コマンドは送信していない
    public void SetSendPattern(CMD_TYPE motor, SEND_PTN ptn)
    {
        MotorSetting _ms = getMotorSetting(motor);

        if (_ms == null)
        {
            return;
        }
        _ms._ptn = ptn;
    }
    //方向をセット ※コマンドは送信していない
    public void SetDir(CMD_TYPE motor, bool sw)
    {
        MotorSetting _ms = getMotorSetting(motor);

        if (_ms == null)
        {
            return;
        }
        _ms.dir = sw;
    }
    //PPSをセット ※コマンドは送信していない
    public void SetPPS(CMD_TYPE motor, int i)
    {
        MotorSetting _ms = getMotorSetting(motor);

        if (_ms == null)
        {
            return;
        }
        _ms.pps = i;
    }
    MotorSetting getMotorSetting(CMD_TYPE motor)
    {
        MotorSetting rtn = null;

        foreach (MotorSetting _ms in MotorInfo)
        {
            if (_ms.type == motor)
            {
                rtn = _ms;
            }
        }

        return(rtn);
    }
 private void Start()
 {
     StartInit();
     MotorInfo[0] = new MotorSetting {
         isReady = false, _ptn = SEND_PTN.NONE, type = CMD_TYPE.MOTOR1, pps = 0, dir = true
     };
     MotorInfo[1] = new MotorSetting {
         isReady = false, _ptn = SEND_PTN.NONE, type = CMD_TYPE.MOTOR2, pps = 0, dir = true
     };
     MotorInfo[2] = new MotorSetting {
         isReady = false, _ptn = SEND_PTN.NONE, type = CMD_TYPE.MOTOR3, pps = 0, dir = true
     };
     MotorInfo[3] = new MotorSetting {
         isReady = false, _ptn = SEND_PTN.NONE, type = CMD_TYPE.MOTOR4, pps = 0, dir = true
     };
 }
    /// <summary>
    /// 対象モーターの開始/停止コマンドを送信
    /// </summary>
    /// <param name="targetMotor"></param>
    void SetSendCmd_isStart(MotorSetting targetMotor)
    {
        //ppsを送信
        SetSendCmd_pps(targetMotor.pps);
        //方向を送信
        SetSendCmd_Dir(targetMotor.dir);
        //値を反映
        SetSendCmd_Setting(targetMotor);


        string sendCmd = string.Empty;

        if (targetMotor._ptn == SEND_PTN.START)
        {
            sendCmd = cmd_A0;
        }
        else
        {
            sendCmd = cmd_80;
        }

        switch (targetMotor.type)
        {
        case CMD_TYPE.MOTOR1:
            sendCmd += subCmd_Motor1;
            break;

        case CMD_TYPE.MOTOR2:
            sendCmd += subCmd_Motor2;
            break;

        case CMD_TYPE.MOTOR3:
            sendCmd += subCmd_Motor3;
            break;

        case CMD_TYPE.MOTOR4:
            sendCmd += subCmd_Motor4;
            break;
        }

        if (sendCmd.Length == CmdLength)
        {
            DataSend(sendCmd);
        }
    }