PDA

View Full Version : REMINDER : NetBeans not talk to the CRIO


cilginbilgin
02-08-2010, 06:22 AM
Here is the situation:

We are trying to use our joysticks and jaguars.Serial port was only a try, you can ignore it if you want.

Our java code:


package edu.wpi.first.wpilibj.templates;


import edu.wpi.first.wpilibj.GenericHID.Hand;
import edu.wpi.first.wpilibj.SimpleRobot;
import edu.wpi.first.wpilibj.RobotDrive;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.Jaguar;
import edu.wpi.first.wpilibj.Watchdog;
import edu.wpi.first.wpilibj.SerialPort;
import edu.wpi.first.wpilibj.visa.VisaException;
import edu.wpi.first.wpilibj.RobotBase;

public class RobotTemplate extends SimpleRobot {


RobotDrive drive = new RobotDrive(1,2);
final int baud = 9600;
final int dataBits =8;
SerialPort sp;
Watchdog wd;

public void autonomous() {

System.out.println("autonomous OK");
wd.feed();
wd.setEnabled(false);

drive.tankDrive(2, 2);

}

public void operatorControl() {
System.out.println("Operator OK");
wd.feed();

try
{
sp = new SerialPort(baud,dataBits);
}
catch(VisaException vs)
{
}
Joystick driveJoy= new Joystick(1);
Jaguar leftControl = new Jaguar(1);
Jaguar rightControl = new Jaguar(2);

if(driveJoy.getTrigger())
{
leftControl.set(driveJoy.getY());
rightControl.set(driveJoy.getAxis(Joystick.AxisTyp e.kX));
}
else if(driveJoy.getRawButton(2))
{
leftControl.set(driveJoy.getThrottle());
rightControl.set(driveJoy.getAxis(Joystick.AxisTyp e.kThrottle));
}
else if(driveJoy.getRawButton(4))
{
leftControl.set(driveJoy.getMagnitude());
}

}
}


And here is the console output:


init:
init:
No to.jar.file specified.
Using "suite\RobotTemplate_1.0.0.jar"
Deleting directory C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\build
Deleting directory C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\suite
Deleting directory C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\j2meclass es
clean:
Created dir: C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\build
Compiling 1 source file to C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\build
compile:
Created dir: C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\j2meclass es
preverify:
Created dir: C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\suite
Building jar: C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\suite\Rob otTemplate_1.0.0.jar
jar-app:
Using "suite\RobotTemplate_1.0.0.jar"
CompilerOracle: exclude com/sun/squawk/Method.getParameterTypes
CompilerOracle: exclude com/sun/squawk/SymbolParser.getSignatureTypeAt
CompilerOracle: exclude com/sun/squawk/SymbolParser.stripMethods
[translating suite image [closed: false, parent: squawk] ...]
### Excluding compile: com.sun.squawk.Method::getParameterTypes
### Excluding compile: com.sun.squawk.SymbolParser::getSignatureTypeAt
Romizer processed 77 classes and generated these files:
C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\image.sym
C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\image.sui te
C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\image.sui te.metadata
C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\image.sui te.api
Expanding: C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\suite\Rob otTemplate_1.0.0.jar into C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\suite
Moving 1 file to C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\suite
Moving 1 file to C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\suite
Moving 1 file to C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\suite
Deleting: C:\Documents and Settings\Developer\My Documents\NetBeansProjects\RobotTemplate\image.sui te.api
Connecting FTP @10.29.5.2
upgrade:
Sending local file image.suite
flashapp:
deploy:
init:
[cRIO] [OTA Server] ********* REBOOTING cRIO *********
[cRIO]
Waiting for cRIO to reboot (1s)
Waiting for cRIO to reboot (2s)
Waiting for cRIO to reboot (3s)
Waiting for cRIO to reboot (4s)
Waiting for cRIO to reboot (5s)
Waiting for cRIO to reboot (6s)
Waiting for cRIO to reboot (7s)
[cRIO]
[cRIO] -> * Loading StartupDlls: debug
[cRIO] Entering debug.o StartupLibraryInit
[cRIO] Debugging is up, target server mounted at /tsfs
[cRIO]
[cRIO]
[cRIO] VxWorks
[cRIO]
[cRIO] Copyright 1984-2006 Wind River Systems, Inc.
[cRIO]
[cRIO] CPU: MPC5200 -- Wind River Lite5200 BSP.
[cRIO] Runtime Name: VxWorks
[cRIO] Runtime Version: 6.3
[cRIO] BSP version: 2.0/10
[cRIO] Created: Jul 29 2009, 13:41:47
[cRIO] ED&R Policy Mode: Deployed
[cRIO] WDB Comm Type: WDB_COMM_END
[cRIO] WDB: Ready.
[cRIO]
[cRIO] Leaving debug.o StartupLibraryInit
[cRIO] * Loading StartupDlls: NiRioRpc
[cRIO] * Loading StartupDlls: niorbs
[cRIO] * Loading StartupDlls: NiViSrvr
[cRIO] * Loading StartupDlls: nivissvc
[cRIO] task 0xee3da8 (PAL00fb5148) deleted: errno=0 (0) status=0 (0)
[cRIO] NI-RIO Server 3.2 started successfully.
[cRIO] task 0xc5f1f8 (NiRioRpc) deleted: errno=0 (0) status=0 (0)
[cRIO] * Loading StartupDlls: nivision
[cRIO] * Loading StartupDlls: niserial
[cRIO] * Loading StartupDlls: FRC_FPGA
[cRIO] * Loading StartupDlls: FRC_NetworkCommunication
[cRIO] FRC_NetworkCommunication was compiled from SVN revision 2064
[cRIO] FPGA Hardware GUID: 0xAD9A5591CC64E4DF756D77D1B57A549E
[cRIO] FPGA Software GUID: 0xAD9A5591CC64E4DF756D77D1B57A549E
[cRIO] FPGA Hardware Version: 2010
[cRIO] FPGA Software Version: 2010
[cRIO] FPGA Hardware Revision: 1.3.0
[cRIO] FPGA Software Revision: 1.3.0
[cRIO] * Loading StartupDlls: FRC_JavaVM
[cRIO]
[cRIO]
[cRIO] [OTA Server] Version: 2010 FRC, Feb 4 2010, 21:33:36
[cRIO]
[cRIO] task 0x214b2d0 (t2) deleted: errno=0 (0) status=0 (0)
[cRIO]
[cRIO] Welcome to LabVIEW Real-Time 8.6.1f2
[cRIO]
[cRIO] NI-VISA Server 4.5 started successfully.
[cRIO] task 0xe623d0 (t1) deleted: errno=1835009 (0x1c0001) status=1 (0x1)
[cRIO]
[cRIO] [Squawk VM] Version: 2010 FRC, Feb 4 2010, 21:35:40
[cRIO] FPGA Hardware GUID: 0xad9a5591cc64e4df756d77d1b57a549e
[cRIO] FPGA Software GUID: 0xad9a5591cc64e4df756d77d1b57a549e
[cRIO] Information: No user-supplied robotMain()
[cRIO] task 0xe5f610 (FTP Server Connection Thread) deleted: errno=70 (0x46) status=0 (0)
[cRIO] task 0xe5f610 (FTP Server Connection Thread) deleted: errno=70 (0x46) status=0 (0)
[cRIO] Operator OK
[cRIO] java.lang.NullPointerException
[cRIO] at java.lang.Throwable.<init>(Throwable.java:88)
[cRIO] at java.lang.Exception.<init>(Exception.java:44)
[cRIO] at java.lang.RuntimeException.<init>(RuntimeException.java:48)
[cRIO] at java.lang.NullPointerException.<init>(NullPointerException.java:54)
[cRIO] at com.sun.squawk.VM.nullPointerException(VM.java:391 )
[cRIO] at edu.wpi.first.wpilibj.templates.RobotTemplate.oper atorControl(RobotTemplate.java:57)
[cRIO] at edu.wpi.first.wpilibj.SimpleRobot.startCompetition (SimpleRobot.java:83)
[cRIO] at edu.wpi.first.wpilibj.RobotBase.startApp(RobotBase .java:132)
[cRIO] at javax.microedition.midlet.MIDletTunnelImpl.callSta rtApp(MIDletTunnelImpl.java:60)
[cRIO] at com.sun.squawk.imp.MIDletMainWrapper.main(MIDletMa inWrapper.java:110)
[cRIO] at com.sun.squawk.Klass.main(Klass.java:2997)
[cRIO] at com.sun.squawk.Isolate.run(Isolate.java:1554)
[cRIO] at java.lang.Thread.run(Thread.java:231)
[cRIO] at com.sun.squawk.VMThread.callRun(VMThread.java:1499 )
[cRIO] at com.sun.squawk.VM.callRun(VM.java:305)

The driver sitation do not permit me to control both teleoperated and autonomous control. When i press enable the clock starts but stops after 3 seconds. Than it says "Teleoperated/Autonomous Disabled" and "Watchdog Not Fed".
Is the problem about my code? What should i do?

MattD
02-08-2010, 03:14 PM
There are a few problems here. It looks like the NullPointerException is from trying to feed the Watchdog incorrectly. "wd" is never assigned. Remove your Watchdog object and feed the Watchdog like this instead:

Watchdog.getInstance().feed();

The code in your operatorControl() method is only going to be called once. You need to place it in a loop, like this:


public void operatorControl()
{
while (isEnabled() && isOperatorControl())
{
Watchdog.getInstance.feed();

// operator control here
}
}

You might also want to add in a small delay at the end of the loop body, since driver station input only comes in at 50Hz. There's not much of a point in reading input faster than that.