This is a rewrite of my previous post (now deleted) that gives more information about what the issue is. I’m trying to record motor values and speeds during driver control and write those values to a separate txt file. My plan was that since I already had the values printing to terminal as long as the controller stayed wired to my laptop, I could just output those values to a separate file and save them. I tried using “ofstream” in order to do this, but whenever I run the program, no output file is created and even if I manually create one beforehand, nothing is written to it. How would I go about doing this?
Note: I already have #include fstream
and using namespace std
at the top of my main.cpp
Otherwise, nothing has been touched other than motor ports and user control, both of which give no errors.
Here is the code in usercontrol:
void usercontrol( void ) {
ofstream output("output.txt", ofstream::out);
while (1) {
//Reset motor rotation values
rightdt.resetRotation();
leftdt.resetRotation();
angleAdj.resetRotation();
intake1.resetRotation();
intake2.resetRotation();
liftLeft.resetRotation();
liftRight.resetRotation();
//Drive Train
rightdt.spin(vex::directionType::fwd, master.Axis2.value(), velocityUnits::pct);
leftdt.spin(vex::directionType::fwd, master.Axis3.value(), velocityUnits::pct);
if(master.ButtonA.pressing()){
driveTrain.spin(vex::directionType::fwd, 20, velocityUnits::pct);
}
if(master.ButtonB.pressing()){
driveTrain.spin(vex::directionType::rev, 20, velocityUnits::pct);
}
//Intakes
if(master.ButtonL1.pressing()){
intake.spin(directionType::fwd, 100, velocityUnits::pct);
}
else if(master.ButtonL2.pressing()){
intake.spin(directionType::rev, 100, velocityUnits::pct);
}
else{
intake.stop(brakeType::coast);
}
//Angle Adjuster
if(master.ButtonUp.pressing()){
angleAdj.spin(directionType::fwd, 50, velocityUnits::pct);
}
else if(master.ButtonDown.pressing()){
angleAdj.spin(directionType::rev, 50, velocityUnits::pct);
}
else{
angleAdj.stop(brakeType::hold);
}
//Lift
if(master.ButtonR1.pressing()){
lift.spin(directionType::fwd, 100, velocityUnits::pct);
}
else if(master.ButtonR2.pressing()){
lift.spin(directionType::rev, 65, velocityUnits::pct);
}
else{
lift.stop(brakeType::hold);
}
vex::task::sleep(20); //Sleep the task for a short amount of time to prevent wasted resources.
//Writes change in motor revolution at certain speed to "output.txt"
output << "rightdt.rotateFor(directionType::fwd, " << rightdt.rotation(rev) << " ,rotationUnits::rev, " << rightdt.value() << ", velocityUnits::pct, false);" << endl;
output << "leftdt.rotateFor(directionType::fwd, " << leftdt.rotation(rev) << " ,rotationUnits::rev, " << leftdt.value() << ", velocityUnits::pct, false);" << endl;
output << "angleAdj.rotateFor(directionType::fwd, " << angleAdj.rotation(rev) << " ,rotationUnits::rev, " << angleAdj.value() << ", velocityUnits::pct, false);" << endl;
output << "intake1.rotateFor(directionType::fwd, " << intake1.rotation(rev) << " ,rotationUnits::rev, " << intake1.value() << ", velocityUnits::pct, false);" << endl;
output << "intake2.rotateFor(directionType::fwd, " << intake2.rotation(rev) << " ,rotationUnits::rev, " << intake2.value() << ", velocityUnits::pct, false);" << endl;
output << "liftLeft.rotateFor(directionType::fwd, " << liftLeft.rotation(rev) << " ,rotationUnits::rev, " << liftLeft.value() << ", velocityUnits::pct, false);" << endl;
output << "liftRight.rotateFor(directionType::fwd, " << liftRight.rotation(rev) << " ,rotationUnits::rev, " << liftRight.value() << ", velocityUnits::pct, true);" << endl;
output << "vex::task::sleep(20)" << endl;
//Comments to space out individual blocks of code
for(int i = 0; i < 4; i++) {
output << "//" << endl;
}
}
output.close();
}