Проблемы использования порта Lejos

Я довольно плохо знаком с 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);
    }
}

Я получаю сообщение об ошибке, когда использую сопоставления оборудования и методы трансмиссии в одном и том же фрагменте кода.

0 ответов

Другие вопросы по тегам