Я довольно новичок в lejos, хотя раньше использовал java.Проблема, с которой я сталкиваюсь, заключается в том, что, чтобы упростить навигацию и сделать ее более понятной, я использую методы в своем коде для движения трансмиссии.В коде есть места, где я хочу использовать методы, но также и места, где я не использую, но если я использую оба, я получаю ошибку, потому что методы и обычный код хотят открыть один и тот же порт.Я не уверен, где и как именно я должен закрыть порты.Пожалуйста, помогите!
import lejos.hardware.motor.*;
import lejos.hardware.port.*;
public class HardwareMappings {
EV3LargeRegulatedMotor leftDrive = null;
EV3LargeRegulatedMotor rightDrive = null;
EV3LargeRegulatedMotor attachment = null;
public HardwareMappings() {
leftDrive = new EV3LargeRegulatedMotor(MotorPort.B);
rightDrive = new EV3LargeRegulatedMotor(MotorPort.C);
attachment = new EV3LargeRegulatedMotor(MotorPort.A);
}
}
public class DrivetrainMethods {
HardwareMappings robot = new HardwareMappings();
public void ResetTachoCount() {
robot.leftDrive.resetTachoCount();
robot.rightDrive.resetTachoCount();
}
public void MoveSteering(int direction, int power, int rotations) throws
InterruptedException {
//set speed for the motors
robot.leftDrive.setSpeed((power * 60) + direction);
robot.rightDrive.setSpeed((power * 60) - direction);
robot.leftDrive.rotateTo(rotations * 360, true);
robot.rightDrive.rotateTo(rotations * 360);
//stop the motors
robot.leftDrive.stop(true);
robot.rightDrive.stop(true);
ResetTachoCount();
}
public void TankDrive (int leftPower, int rightPower, int rotationsB, int
rotationsC) throws InterruptedException {
//set speed for motors
robot.leftDrive.setSpeed(Math.abs(leftPower * 60));
robot.rightDrive.setSpeed(Math.abs(rightPower * 60));
robot.leftDrive.rotateTo(rotationsB * 360, true);
robot.rightDrive.rotateTo(rotationsC * 360);
//stop motors
robot.leftDrive.stop(true);
robot.rightDrive.stop(true);
ResetTachoCount();
}
}
public class Test1 {
public static void main (String[] args) throws InterruptedException{
HardwareMappings robot = new HardwareMappings();
DrivetrainMethods drivetrain = new DrivetrainMethods();
drivetrain.MoveSteering(0, 50, 1);
robot.leftDrive.rotate(720);
drivetrain.TankDrive(20, 20, 2, 2);
}
}
Я получаю ошибку, когда использую сопоставления оборудования и методы трансмиссии в одном и том же фрагменте кода.