PicoC program
általános információk
mire szolgál?
A programozó nyelv a PicoC (http://code.google.com/p/picoc/) . A PicoC egy nagyon kicsi C fordító a programozáshoz. Eredetileg ezt UAV-k fedélzeti repülés rendszeréhez írták, de ugyanúgy hasznos más robotizálásnál, beágyazott és nem beágyazott alkalmazásoknál is.
fontos
· Nem a teljes C specifikáció érhető el
· A program kód fordított. Tehát a lehető legkevesebb sort alkalmazzuk, és kerüljük a komplex program struktúrát.
· Minden program külön feladatban fut, szinkronizálatlanul az SPS-hez
· A printf kimenetek a Loxon Config log ablakában fognak megjelenni.
· Az egyéni programozás program összeomlást okozhat, ezért óvatosan programozz. Vészhelyzet esetére mindig legyen egy tartalék SD kártya a legutóbbi működő képes verzióval, ha a programozás problémát okozna.
· Egy egész számnak 32 bit-e van.
· 128kB érhető el, ezért használjuk a memóriát takarékosan.
· Minden olyan funkció, ami mutatóval tér vissza muszáj a memóriát üressel felülírni, hacsak a mutató továbbítva lett mint paraméter.
· Idő értékek másodpercben vannak kijelezve.
· Kevés matematika műveletet alkalmazzunk, mert a Minisever processzorának nincs külön matematika egysége.
SPS objektumok
Vannak program objektumok, 1,4,8,16 be és kimenettel. Beilleszthetsz egy program objektumot az általános fül alatt a program menüpontban.
Minden programnak van egy hiba (TeQ) kimenete, ahol a hibaüzeneteket kijelzi. Ez lehetővé teszi a syntax hibák felfedezését.
A program kódot tudjuk módosítani ha kétszer kattintunk a program objektumra.
elérhető funkciók
A következő fejezetben fel van sorolva az összes elérhető funkció. Az alap C funkciókat és rengeteg információt találsz az alábbi leírásban www.cplusplus.com/reference/clibrary/
C könyvtár funkciók
char *getprogramname();
void printf(char *format, …);
char *sprintf(char *ptr, char *format, …);
void exit();
void *malloc(int size);
void *calloc(int num,int size);
void *realloc(void *ptr,int size);
void free(void *ptr);
int atoi(char *str);
float atof(char *str);
void strcpy(char *dst,char *src);
void strncpy(char *dst,char *src,int len);
int strcmp(char *str1,char *str2);
int strncmp(char *str1,char *str2,int len);
void strcat(char *dst,char *src);
char *strdup(char *str);
char* strstr(char *str,char *strfind);
int strfind(char *str,char *strfind,int pos);
int strlen(char *str);
void memset(void *ptr,int val,int len);
void memcpy(void *dst,void *src,int len);
int memcmp(void *ptr1,void *ptr2,int len);
void errorprintf(char *format,…);
matematikai funkciók
float sin(float x);
Returns the sine of an angle of x radians.
float cos(float x);
Returns the cosine of an angle of x radians.
float tan(float x);
Returns the tangent of an angle of x radians.
float asin(float x);
Returns the principal value of the arc sine of x, expressed in radians. In trigonometrics, arc sine is the inverse operation of sine.
float acos(float x);
Returns the principal value of the arc cosine of x, expressed in radians. In trigonometrics, arc cosine is the inverse operation of cosine.
float atan(float x);
Returns the principal value of the arc tangent of x, expressed in radians. In trigonometrics, arc tangent is the inverse operation of tangent.
float sinh(float x);
Returns the hyperbolic sine of x.
float cosh(float x);
Returns the hyperbolic cosine of x.
float tanh(float x);
Returns the hyperbolic tangent of x.
float exp(float x);
Returns the base-e exponential function of x, which is the e number raised to the power x.
float fabs(float x);
Returns the absolute value of x
float log(float x);
Returns the natural logarithm of x.
float log10(float x);
Returns the common (base-10) logarithm of x.
float pow(float base,float exponent);
Returns base raised to the power exponent.
float sqrt(float x);
Returns the square root of x.
float round(float x);
Returns rounded value of x.
float ceil(float x);
Returns the smallest integral value that is not less than x.
float floor(float x);
Returns the largest integral value that is not greater than x.
kiterjesztett C mappa funkciók
int batoi(char *str);
float batof(char *str);
char* strstrskip(char *str,char *strfind);
char *index(char *,int);
int lineno();
SPS funkciók
void setlogtext(char *str);
float getio(char *str);
int setio(char *str,float value);
int getinputevent();
float getinput(int input);
char *getinputtext(int input);
void setoutput(int output,float value);
void setoutputtext(int output,char *str);
file funkciók
FILE *fopen(char *filename,char *mode);
int fclose(FILE *f);
int fprintf(FILE *f,char *format, … );
int fputc(int character,FILE *f);
int fputs(char *str, FILE *f);
int fflush(FILE *f);
int fwrite (void *ptr,int size,int count,FILE *f);
int fgetc(FILE *f);
char *fgets(char *str,int num,FILE *f);
int fread(void *,int size,int count,FILE *f);
int fseek(FILE *f,long offset,int origin);
int remove(char *filename);
int rename(char *oldname,char *newname);
FILE* tmpfile();
char *tmpnam(char* str);
http funkciók
char*httpget(char*address,char*page);
stream funkciók
STREAM *stream_create(char* filename,int read,int append);
void stream_printf(STREAM* stream,char *format, …);
int stream_write(STREAM* stream,void* ptr,int size);
void stream_flush(STREAM* stream);
int stream_read(STREAM* stream,void* ptr,int size,int timeout);
int stream_readline(STREAM* stream,void* ptr,int maxsize,int timeout);
void stream_close(STREAM* stream);