ELF'ų kurimas
Paprastų elfų kūrimas nereikalauja ypatingų programavimo žinių, bet be jų nesukūrsite nieko gero! Elfų kūrimas su "Embedded Workbench 4.0 Evaluation" vyksta C++ kalba. Sukūrtą elfą galite išbandyti ar naudoti tik telefone, kuriame yra įrašytas elfpackas. Daugiau apie elfpacko įrašymą i telefona ir jau sukūrtus elfus galite pasiskaityti šioje temoje
***ELFpack & ELFs***.
Instrukcija
Kaip minėjau visas programavimas vyksta su
"Embedded Workbench 4.0 Evaluation" programa, tad ją parsisiunčiame. Parsisiuntę, išskleidžiame ją ir jos aplanke sukuriame kitą aplanką "SE". Tada parsisiunčiame iš
iš čia bent "C++", "include", "Library", "ElfPack" ir kokį "HelloWorld" elfą (rekomenduočiau parsisiųsti viską, kas tame aplanke yra, dauguma tų failų opensource elfai), bei sukeliame viską į prieštai sukurtą "SE" aplanką.
Tuomet įeiname į nurodyįą direktoriją "...\Embedded Workbench 4.0 Evaluation\SE\HelloWorld" ir paleidžiame "HelloWorld.eww" failą. Atidarytas failas turi atrodyti panašiai į šį:
Du kartus spragtelėkite su pele ant
main.c, jums atidarys programavimo langą.
Prieš pradedant programuoti pirmiausią atlikite šį veiksmą!
Project -> Edit Configurations... -> Release -> OK Norint patikrinti ar jūsų komandose nėra klaidų spauskite
Project -> Compile arba Alt+F7.
Jeigu norite išsaugoti elfą spauskite
Project -> Rebuild All, elfas bus išsaugotas "...\SE_ELF\Elf\Release\Exe" aplanke.
Raudonai apibrauktas kodas turi būti įtraukiamas, kuriant betkokį elfą:
#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"
void elf_exit(void)
{
kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}
Mėlynai apibrauktas kodas yra jusų programuojamo elfo komadu kodas: taip pat kiekvienas elfas turi turėti pagrindine funkciją:
int main (void)
Sėkmės, kuriant naujus ir kietus elfus!!!Jeigu sudomino, labai daug pamokų, naudojant sudėtingesnes funkcijas rasite čia.
Elfų funkcijų kodai:
StatusIndication_ShowNotes(STR("čia rasomas tekstas, kuris bus rodomas ant ekrano"));
StatusIndication_ShowNotes(0x6FFFFFFF); - išvalo ekraną.
SetLampLevel(skaičius nuo 0 iki 100, tai yra blykstės švietimo stiprumo %);
SUBPROC(elf_exit); - išjungia elfą,
int NewKey(int key, int r1 , int mode)
{
if (key==mugtuko kodas)
{
if(mode==paspaudimo kodas)
{
}
}
Elfų main.c failai:
SystemTemp#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"
void elf_exit(void)
{
kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}
BATT bat;
u16 ws[193];
int NewKey(int key, int r1 , int mode)
{
if (key==KEY_POWER)
{ if(mode==KBD_SHORT_PRESS)
{
ModifyKeyHook(NewKey,0);
StatusIndication_ShowNotes(0x6FFFFFFF);
SUBPROC(elf_exit);
return(0);
}
}
if(key==KEY_PLAY)
{
if(mode==KBD_SHORT_PRESS)
{
GetBattaryState((int const*)1 , &bat);
snwprintf(ws,196,(u16*)L"Temp = %d C",bat.SystemTemperature);
StatusIndication_ShowNotes(Str2ID(ws,0,SID_ANY_LEN));
}
return(-1);
}
return(0);
}
int main(u16 *exename,u16 *filename)
{
ModifyKeyHook(NewKey,1);
return(0);
}
Lighter#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"
void elf_exit(void)
{
kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}
int i=0;
char flag=0;
int NewKey(int key, int r1 , int mode)
{
if (key==KEY_POWER)
{
if(mode==KBD_SHORT_PRESS)
{
ModifyKeyHook(NewKey,0);
StatusIndication_ShowNotes(0x6FFFFFFF);
SetLampLevel(0);
SUBPROC(elf_exit);
return(0);
}
}
if(key==KEY_VOL_UP)
{
if(mode==KBD_SHORT_PRESS)
{
if(i<100)
{
if(i==110)i=100;
i+=10;
if(flag==1)StatusIndication_ShowNotes(int2strID(i/10));
SetLampLevel(i^0x01);
}
}
return(-1);
}
if(key==KEY_VOL_DOWN)
{
if(mode==KBD_SHORT_PRESS)
{
if(i>0)
{
if(i==-10)i=0;
i-=10;
if(flag==1)StatusIndication_ShowNotes(int2strID(i/10));
SetLampLevel(i^0x01);
}
}
return(-1);
}
if(key==KEY_CAMERA_FOCUS)
{
if(mode==KBD_SHORT_PRESS)
{
if(flag==0)
{
StatusIndication_ShowNotes(STR("ïîêąç óšîâí˙ ˙šêîñòč âêėž÷¨¨í"));
flag=1;
}else
{
flag=0;
StatusIndication_ShowNotes(0x6FFFFFFF);
}
}
return(-1);
}
return(0);
}
int main(const u16 *exename, const u16 *filename)
{
ModifyKeyHook(NewKey,1);
return(0);
}
SoundOnKeyPress v1.3#include "..\include\Lib_Clara.h"
#include "..\include\Dir.h"
void elf_exit(void)
{
kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}
bool pl=false;
u16 * Path;
u16 * PathMP3;
u16 * SFile;
bool ismute=false;
bool stby=false;
int UIHook1(UI_MESSAGE* mes)
{
stby=false;
return 0;
}
int UIHook2(UI_MESSAGE* mes)
{
stby=true;
return 0;
}
int id;
int NewKey(int key, int r1 , int mode)
{
if (mode==KBD_SHORT_PRESS)
{
if (key==KEY_POWER)
{
ModifyKeyHook(NewKey,0);
ModifyUIHook(PHONE_IN_STBY_EVENT,UIHook2,0);
ModifyUIHook(UI_STANDBY_UNFOCUS_EVENT,UIHook1,0);
SUBPROC(elf_exit);
return(0);
}
if(isKeylocked()==0 && stby==true && ismute==false)
{
switch(key)
{
case 0x10:
SFile=(u16*)L"/KeySound/0.mp3";pl=true;break;
case 0x11:
SFile=(u16*)L"/KeySound/1.mp3";pl=true;break;
case 0x12:
SFile=(u16*)L"/KeySound/2.mp3";pl=true;break;
case 0x13:
SFile=(u16*)L"/KeySound/3.mp3";pl=true;break;
case 0x14:
SFile=(u16*)L"/KeySound/4.mp3";pl=true;break;
case 0x15:
SFile=(u16*)L"/KeySound/5.mp3";pl=true;break;
case 0x16:
SFile=(u16*)L"/KeySound/6.mp3";pl=true;break;
case 0x17:
SFile=(u16*)L"/KeySound/7.mp3";pl=true;break;
case 0x18:
SFile=(u16*)L"/KeySound/8.mp3";pl=true;break;
case 0x19:
SFile=(u16*)L"/KeySound/9.mp3";pl=true;break;
case 0x1A:
SFile=(u16*)L"/KeySound/z.mp3";pl=true;break;
case 0x1B:
SFile=(u16*)L"/KeySound/r.mp3";pl=true;break;
default:
pl=false;break;
}
if(pl)
{
Path=GetDir(1);
id=PlayFile(Path,SFile);
if(id)
{pl=false;return(1);}
Path=GetDir(0);
id=PlayFile(Path,SFile);
if(id)
{pl=false;return(1);}
Path=GetDir(9);
id=PlayFile(Path,SFile);
if(id)
{pl=false;return(1);}
Path=GetDir(8);
id=PlayFile(Path,SFile);
if(id)
{pl=false;return(1);}
id=PlayFile(PathMP3,SFile);
if(id)
{pl=false;return(1);}
}
}
}
if (mode==KBD_LONG_PRESS)
{
if (key==KEY_DIEZ)
{
if(ismute)
ismute=false;
else
ismute=true;
}
}
return(1);
}
int main(const u16 *exename, const u16 *filename)
{
PathMP3=(u16*)L"/card/MP3/";
ModifyUIHook(UI_STANDBY_UNFOCUS_EVENT,UIHook1,1);
ModifyUIHook(PHONE_IN_STBY_EVENT,UIHook2,1);
ModifyKeyHook(NewKey,1);
return(0);
}
KeyCode#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"
void elf_exit(void)
{
kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}
u16 timer;
int nkey;
char s[28]="KeyCode (c) Deitro :)";
void onTimer (u16 * unk , void * data)
{
StatusIndication_ShowNotes(Str2ID(s,1,25));
delay(500);
}
int NewKey(int key, int r1 , int mode)
{
if (mode==KBD_SHORT_PRESS)
{
if (key==KEY_DIEZ)
{
StatusIndication_ShowNotes(0x6FFFFFFF);
ModifyKeyHook(NewKey,0);
SUBPROC(elf_exit);
return(0);
}
}
if (key==KEY_ESC)
return(-1);
s[9]=char(key/10+0x30);
s[10]=char(key%10+0x30);
nkey=key;
timer=Timer_Set(500,onTimer,0);
return(-1);
}
int main()
{
ModifyKeyHook(NewKey,1);
return 0;
}
HelloWord#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"
void elf_exit(void)
{
kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}
u16 timer;
int lamp=0;
int n=10;
void onTimer (u16 * unk , void * data)
{
if(n--)
{
Timer_ReSet(&timer,500,onTimer,0);
SetLampLevel(lamp^=0x10);
}
else
{
StatusIndication_ShowNotes(0x6FFFFFFF);
SetLampLevel(0);
SUBPROC(elf_exit);
}
}
int main (void)
{
StatusIndication_ShowNotes(STR("Hello World!"));
timer=Timer_Set(500,onTimer,0);
return(0);
}
Manau pradžiai užteks. Bandykit ir išmoksit!!!