PDA

View Full Version : Using printf() as UserCode in EasyC 2.0


tacman1123
05-31-2006, 08:45 AM
I've add stdio.h to the Include files of my project, but printf("Test: %d", 1); (as a UserCode block) isn't writing to the terminal. What does PrintToScreen() do differently? PrintToScreen is limited to a single variable, and has a "\n" at the end, I'd like to have a bit more control (and just understand the communciation process better).

Do I need to include the printf_lib? If so, can someone explain the steps of integrating the VexCode libraries with the EasyC libraries?

TIA,

Tac

gabrielse
05-31-2006, 09:03 AM
I've add stdio.h to the Include files of my project, but printf("Test: %d", 1); (as a UserCode block) isn't writing to the terminal. What does PrintToScreen() do differently? PrintToScreen is limited to a single variable, and has a "\n" at the end, I'd like to have a bit more control (and just understand the communciation process better).

Do I need to include the printf_lib? If so, can someone explain the steps of integrating the VexCode libraries with the EasyC libraries?

TIA,

Tac

I've had good luck using PrintToScreen as user code when I need to print multiple variables on one line. Use PrintToScreen the same way you would use printf in a user code block, just make sure you typecast your variables. There is no need to include any libraries.

example (type this in as user code):
PrintToScreen("x = %d, y = %d\n", (int)x, (int)y);

Good luck.

tacman1123
05-31-2006, 10:01 AM
Thanks, that helps. I'd still like to know more about how to integrate low-level calls, but your solution solved my immediate problem, which was a simple script to monitor the radio transmitter values (since the Online mode doesn't display those). For those that are interested, here it is.

#include "Main.h"

void main ( void )
{
int time = 0;
int rx = 0;
int channel = 1;
int rx_value = 1;
int i = 0;

StartTimer ( 1 ) ;
while ( 1 )
{
time = GetTimer ( 1 ) ;
for ( rx=1 ; rx<=2 ; rx++ ) // loop through rx
{
for ( channel=1 ; channel<=6 ; channel++ )
{
rx_value = GetRxInput ( rx , channel ) ;
PrintToScreen("%3d ", (int)rx_value);
}
}
PrintToScreen ( "at %d\n" , (int)time ) ;
}
}

Now what would be nice is if the terminal window could be widened and the font could be changed to a fixed-width font, so that the results came out tabular instead of in a series of numbers.