Skip to main content

Writing C programs



You can also write C programs with the WPI Robotics Library using a set of C functions that map on top of the C++ classes and methods. To write C code:

• You need to create .cpp (C++ files) rather than .C files because the C wrapper functions take
advantage of overloaded functions. This means that there are a number of functions that have
the same name, but different argument lists. This increases the compatibility with the C++
programming interfaces and will make transition to C++ much easier if you choose to do that.

• Specify port and/or slot (module) numbers in most of the functions. Behind the scenes, the
functions allocate C++ objects that correspond to the functions that you are using. This serves
two purposes: it ensures that you are not using a particular port for two purposes accidently
since the C++ underlying functions track “reservations” and makes the code very similar to
previous years where the port numbers were on each call.

You will find that there are a few C++ higher level code options that do not exist in C, it is a lower level
interface to the hardware connected to the cRIO and the driver station.

Sensors are automatically allocated when they are first used on a particular channel. Suppose you start
using a Victor on port 5. On the first use, an object is created behind the scenes that corresponds to that
motor. Each time you refer that that Victor object on port 5, the code calls the underlying object to set
or get values. When you are finished using an object, you may delete it by calling the Delete function
associated with the object, for example DeleteVictor(). This is usually not necessary because it is unlikely
that you would ever need to delete a sensor once it is created. Those functions mostly exist for testing.


Example of a C program


The following C program demonstrates driving the robot for 2 seconds forward in Autonomous and in arcade mode for the Operator Control period. Notice that constants define the port numbers used in the program. This is a good practice and should be used for C and C++ programs.

#include "WPILib.h"
#include "SimpleCRobot.h"
static const UINT32 LEFT_MOTOR_PORT = 1;
static const UINT32 RIGHT_MOTOR_PORT = 2;
static const UINT32 JOYSTICK_PORT = 1;
void Initialize(void)
{
CreateRobotDrive(LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT);
SetWatchdogExpiration(0.1);
}
void Autonomous(void)
{
SetWatchdogEnabled(false);
Drive(0.5, 0.0);
Wait(2.0);
Drive(0.0, 0.0);
}
void OperatorControl(void)
{
SetWatchdogEnabled(true);
while (IsOperatorControl())
{
WatchdogFeed();
ArcadeDrive(JOYSTICK_PORT);
}
}
START_ROBOT_CLASS(SimpleCRobot);



Popular posts from this blog

Putimage function in c

putimage function outputs a bit image onto the screen. Declaration:- void putimage(int left, int top, void *ptr, int op); putimage puts the bit image previously saved with getimage back onto the screen, with the upper left corner of the image placed at (left, top). ptr points to the area in memory where the source image is stored. The op argument specifies a operator that controls how the color for each destination pixel on screen is computed, based on pixel already on screen and the corresponding source pixel in memory. c smiling face animation This animation using c draws a smiling face which appears at random position on screen. See output below the code, it will help you in understanding the code easily. C programming code #include<graphics.h> #include<conio.h> #include<stdlib.h>   main() { int gd = DETECT, gm, area, temp1, temp2, left = 25, top = 75; void *p;   initgraph(&gd,&gm,"C:\\TC\\BGI");   setcolor(YELLOW)...

C++ Program to find the sum, difference, product and quotient of two integers

#include <iostream.h> #include <conio.h> void main() {   clrscr();   int x = 10;   int y = 2;   int sum, difference, product, quotient;   sum = x + y;   difference = x - y;   product = x * y;   quotient = x / y;   cout << "The sum of " << x << " & " << y << " is " << sum << "." << endl;   cout << "The difference of " << x << " & " << "y <<  is " << difference << "." << endl;   cout << "The product of " << x << " & " << y << " is " << product << "." << endl;   cout << "The quotient of " << x << " & " << y << " is " << quotient << "." << endl;   getch(); }

What is iostream.h in C++ Programing Language ?

In C++ programing language, all header files end with .H extension. In standard C++, all devices are accessed and used as a file.  One such header file is iostream.h in C++ programming language. In this, all input and output devices are treated as files.  Let's quickly look at what are the input and output devices mean in C++ program.  Standard Input Device - Keyboard  Standard Output Device   - Monitor  Standard Error Device - Screen or monitor In C++, input and output are not defined within, and are implemented with the help of a component of the C++ standard library which is I/O library.  A file is read simply as a stream of bytes at the lowest level. But at a user level, a file consists of possibly mixed data types which can be characters, arithmetic values class, objects etc.  What are the predefined streams in I/O Library? As discussed above there are input, output and error library in c++, they have some predefined streams objects as well w...