I’m the head coder for our team: 3346. I ran into this error today on the driver station:
ERROR: A timeout has been exceeded: RobotDrive...Output not updated often enough. ...in Check() in c:/Windriver/workspace/WPILib/MotorSafetyHelper.cpp at line 123
No Change to Network Configuration: "Local Area Connection""Wireless Network Connection"
I/O unit not detected or not installed correctly.
That is the error I receive on the driver station. The lights are green for robot communications and robot code but when I enable nothing works.
Here is my .cpp:
#include "WPILib.h"
class RobotDemo : public SimpleRobot
{
RobotDrive myRobot;
Jaguar ballpicker;
Joystick leftStick; // left joystick in USB 1 of the DS
Joystick rightStick; // and right JS is in USB 2 of the DS
DriverStationLCD *display;
Solenoid sol1;
Solenoid sol2;
Compressor compress;
public:
RobotDemo():
myRobot(1,2), // Drive Motors
ballpicker(3), // Motor That Picks Up Balls
leftStick(1),
rightStick(2),
sol1(7,1), // MIGHT HAVE TO CHANGE FIRST COORDINATE BECUASE MODULES-
sol2(7,8), // HAVE CHANGED THIS YEAR!!!
compress(1,1)
{
myRobot.SetExpiration(0.1);
display = DriverStationLCD::GetInstance();
}
void Autonomous(void)
{
myRobot.SetSafetyEnabled(true); // Autonomous Period
myRobot.Drive(0.6, 0.0); // Drives Forward->Half Speed->2 Seconds.
Wait(5.0);
myRobot.Drive(0.0, 0.0);
}
void OperatorControl(void)
{
GetWatchdog().SetEnabled(true);
compress.Start(); // Starts the Compressor
while (IsOperatorControl())
{
GetWatchdog().Feed();
myRobot.ArcadeDrive(leftStick); // Arcade Style--> Left Stick
/*
char text[255];
char text2[255];
display->Clear();
if(rightStick.GetTrigger())
{
arm2.Set(0.9); //full speed if trigger is pressed
sprintf(text, "Arm 2: 0.9");
display->PrintfLine(DriverStationLCD::kUser_Line1, text);
}
else
{
arm2.Set(0.0); //when trigger is not pressed, no power
sprintf(text, "Arm 2: 0.0");
display->PrintfLine(DriverStationLCD::kUser_Line1, text);
}
if (rightStick.GetRawButton(3))
{
arm.Set(1.0); // full speed if trigger pressed
sprintf(text2, "Arm: 1.0");
display->PrintfLine(DriverStationLCD::kUser_Line2, text2);
}
else
{
arm.Set(0.0); //no power if button 3 is not pressed
sprintf(text2, "Arm: 0.0");
display->PrintfLine(DriverStationLCD::kUser_Line2, text2);
}
display->UpdateLCD();
*/
if (leftStick.GetRawButton(3))
{
ballpicker.Set(0.1); // --> If Button 3-->Input-->10% Power
}
else
{
ballpicker.Set(0.0); // --> If Button 3-->No Input-->No Power
} // Left Stick Is For Driver/Ball Picker Up'er
if(rightStick.GetTrigger()) // Right Stick Is For Shooter
{
sol1.Set(true); // --> If Right Trigger-->Input-->Valve 1-->True
sol2.Set(false); // --> Valve 2-->False
}
else
{
sol1.Set(false); // --> If Right Trigger-->No Input-->Valve 1-->False
sol2.Set(true); // --> Valve 2-->True
}
Wait(0.005); // --> Allows Time for Motor Refresh/Update
}
// COPYRIGHT MUHAMMAD SULAIMAN--> NO ONE MESSES WITH THE ZOHAN!
}
};
START_ROBOT_CLASS(RobotDemo);
Please ignore the comments.
Thank You. Can someone please help me. I believe that my loop is being examined over and over again. Do I need a semicolon after while (IsOperatorControl()) I believe I do. I just didn’t have time to add that today, but will try adding that and deploying code tomorrow since robotics just ended. But that thought hit me right after I left. Is that a solution? Or is it something else?