【问题标题】:FTC Android Studio problemsFTC Android Studio 问题
【发布时间】:2017-11-17 16:50:46
【问题描述】:

(这是给我的第一个团队的) 当尝试编译我的代码并将结果放在驱动站上时,点击播放按钮后出现“未指定模块”错误,并且生成的代码未编译,操作模式随后不在驱动站上。我们现在使用的是 Android Studio 3.0 版(以前是过时的版本)。以前,我们在模块中没有出现此错误。是否有人能够解释模块的概念以及如何添加模块以使此错误停止?我本人对使用 Android Studio 进行软件开发还很陌生。虽然我不相信代码是错误的,但为了上下文,我会提供它。任何帮助表示赞赏:D

package org.firstinspires.ftc.teamcode;

import com.qualcomm.robotcore.eventloop.opmode.OpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
import com.qualcomm.robotcore.hardware.DcMotor;
import org.firstinspires.ftc.robotcore.external.Telemetry;

@TeleOp(name="AutoDrive", group="TankDrive")
public class AutoDrive extends OpMode 
{
    private DcMotor leftFrontMotor = null;
    private DcMotor leftBackMotor = null;
    private DcMotor rightFrontMotor = null;
    private DcMotor rightBackMotor = null;
    boolean sent;
    private int driveTime;
    public void init()
    {

        leftFrontMotor = hardwareMap.dcMotor.get("leftFront"); //Get motor objects, store them in corresponding reference variables
        rightFrontMotor = hardwareMap.dcMotor.get("rightFront");

        leftFrontMotor.setPower(0);
        rightFrontMotor.setPower(0);



        driveTime = 3000 // Robot will take 3 seconds with current weight to drive to safe zone
        Telemetry.addLine("Hardware variables successfully instantiated");
        sent = Telemetry.update();
    }

    public void start()
    {

        long limit = System.currentTimeMillis() + driveTime;

        while(System.currentTimeMillis() < limit) //drive in straight line for limit seconds
            drive();

        Telemetry.addLine("Stopping..");
        sent = Telemetry.update();
    }

    public void loop() {}

    public void stop() 
    {

        leftFrontMotor.setPower(0);
        rightFrontMotor.setPower(0);
        Telemetry.addLine("Robot successfully stopped.");
        sent = Telemetry.update();

    }
    private void drive()
    {
        leftFrontMotor.setPower(1);

        rightFrontMotor.setPower(1);

    }
}

【问题讨论】:

  • 为什么需要'sent'变量?它似乎没有什么特别的作用。

标签: java android-studio robotics


【解决方案1】:
Telemetry.addLine("Hardware variables successfully instantiated");
sent = Telemetry.update();

应该是

telemetry.addLine("Hardware variables successfully instantiated");
sent = telemetry.update();

小写时,您在 OpMode 中引用遥测对象(这是您想要的)。 addLine 和 update 方法不是静态的,因此您不能通过 Telemetry 类调用它们。

【讨论】:

    【解决方案2】:
            leftFrontMotor = hardwareMap.dcMotor.get("leftFront"); //Get motor objects, store them in corresponding reference variables
        rightFrontMotor = hardwareMap.dcMotor.get("rightFront");
    

    应该是

            leftFrontMotor = hardwareMap.get(DcMotor.class, "leftFront"); //Get motor objects, store them in corresponding reference variables
            rightFrontMotor = hardwareMap.get(DcMotor.class, "rightFront");
    

    【讨论】:

    • 这是不正确的,会导致语法错误。
    • 好吧,现在我知道出了什么问题并编辑了帖子。但无论如何它应该是 DcMotor。 DcMotor 引用类名而不是名为“dcMotor”的未定义变量。
    • HardwareMap 类实际上有一个名为dcMotor 的变量,它有一个get(String deviceName) 方法。您建议的代码错误将正常工作。但是,您拥有它的方式是目前推荐的方式。
    • 哦,好的。我不知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2014-02-15
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多