/// <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); } }