|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
Output not updated often enough error
Yesterday, or maybe the day before, all our code stopped working. We had a robot that was fully drivable with the joysticks. However, now any code we run starts throwing exceptions, no matter how simple.
For example, when we attempt to run code as simple as this: Code:
package edu.wpi.first.wpilibj.templates;
import edu.wpi.first.wpilibj.IterativeRobot;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.RobotDrive;
import edu.wpi.first.wpilibj.Jaguar;
public class RobotTemplate extends IterativeRobot {
Joystick left;
Joystick right;
RobotDrive robot;
public void robotInit() {
Joystick left = new Joystick(1);
Joystick right = new Joystick(2);
RobotDrive robot = new RobotDrive(1,2,3,4);
}
/**
* This function is called periodically during autonomous
*/
public void autonomousPeriodic() {
}
/**
* This function is called periodically during operator control
*/
public void teleopPeriodic() {
robot.tankDrive(left, right);
}
}
Code:
java.lang.NullPointerException [cRIO] at edu.wpi.first.wpilibj.templates.RobotTemplate.teleopPeriodic(RobotTemplate.java:43) [cRIO] at edu.wpi.first.wpilibj.IterativeRobot.startCompetition(IterativeRobot.java:145) [cRIO] at edu.wpi.first.wpilibj.RobotBase.startApp(RobotBase.java:156) [cRIO] in virtual method #10 of javax.microedition.midlet.MIDlet(bci=17) [cRIO] at javax.microedition.midlet.MIDletTunnelImpl.callStartApp(64) [cRIO] at com.sun.squawk.imp.MIDletMainWrapper.main(110) [cRIO] in virtual method #95 of com.sun.squawk.Klass(bci=25) [cRIO] at com.sun.squawk.Isolate.run(1506) [cRIO] at java.lang.Thread.run(231) [cRIO] in virtual method #47 of com.sun.squawk.VMThread(bci=42) [cRIO] in static method #3 of com.sun.squawk.VM(bci=6) [cRIO] WARNING: Robots don't quit! [cRIO] ---> The startCompetition() method (or methods called by it) should have handled the exception above. [cRIO] Robot Drive... Output not updated often enough. [cRIO] Robot Drive... Output not updated often enough. [cRIO] Robot Drive... Output not updated often enough. [cRIO] Robot Drive... Output not updated often enough. We are testing this code without any motors attached to the jaguars since our team is working on the frame. Could this be an issue? Also, one of our other programmers was trying his hand at programming on this. I am not 100% sure what he did, but this problem is persisting throughout all new projects we create. Do these errors indicate that he may have mistakenly modified the API's we received from first? |
|
#2
|
||||
|
||||
|
Re: Output not updated often enough error
the "Output not updated often enough error" message is a secondary problem. That message will print when your robot apps stops working for any reason.
The Key is in the stack trace: java.lang.NullPointerException [cRIO] at edu.wpi.first.wpilibj.templates.RobotTemplate.tele opPeriodic(RobotTemplate.java:43) So at line 43 of RobotTemplate.java the app tried to do something with a pointer that was null. Like call a method or reference a field. In your code the suspect pointer is "robot". Which you'd think was initialized in robotInit(), but that is actually a local variable that is hiding the field "robot". So the field is still null. The NetBeans editor may have given you a yellow warning on that line. It can sometimes nag too much, but you should always look at the warning by hovering the mouse over the yellow triangle. |
|
#3
|
|||
|
|||
|
Re: Output not updated often enough error
Just a heads up..
When you put this before your init: P.S you can declare 2 things in one line just use commas, Code:
Joystick left; Joystick right; Joystick left, right; Code:
Joystick left = new Joystick(1); Joystick right = new Joystick(2); You dident declare an axis for driving Code:
robot.tankDrive(left.getY(),right.getY()); Last edited by ProgrammerMatt : 27-01-2012 at 15:06. |
|
#4
|
|||
|
|||
|
Re: Output not updated often enough error
In your robotInit instead of:
Code:
Joystick left = new Joystick(1);
Joystick right = new Joystick(2);
RobotDrive robot = new RobotDrive(1,2,3,4);
Code:
left = new Joystick(1);
right = new Joystick(2);
robot = new RobotDrive(1,2,3,4);
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|