Kurz4 - Kapitola5

17. června 2007 v 15:41 | http://www.sweb.cz/kurz_evt/ |  Programování pro WinCE

6.5 Třída pro infračervený port

Opakování je matkou moudrosti.
I my se budeme držet této staré pravdy a procvičíme se v používání ClassWizardu. Do našeho projektu vložíme novou třídu, která bude zapouzdřovat činnost infračerveného portu. Pravým tlačítkem klikněte na IRRmtCnt classes na záložce Class View. Vybereme možnost New Class a otevře se dialog s vlastnostmi nové třídy.
Jméno třídy zvolíme např. CIRcontrol. Protože si třídu vytvoříme sami a nebudeme ji odvozovat od jiné třídy, zvolte jako typ třídy Generic Class. Okno bázových tříd zůstane prázdné a potvrďte OK.
Otevřeme-li si položku CIRcontrol na záložce Class View, je zřejmé, že automaticky byl doplněn pouze konstruktor a destruktor. My budeme potřebovat ještě tři členské funkce. Klikněte proto pravým tlačítkem na třídu CIRcontrol a zvolte Add Member Function. Typ funkce bude int a jako deklaraci vepište Learn(int nButt). Přístup bude Public a další volby ponechejte nezatržené. Stejným způsobem vložte další dvě členské funkce:
  • void Send(int nButt)
  • void Save()
Podobně je možné ke třídě přidávat i členské proměnné. My však potřebné členské proměnné doplníme jiným způsobem. Na nové třídě klepněte pravým tlačítkem a vyberte možnost Go to Definition. Automaticky budete přeneseni do souboru IRcontrol.h na místo, kde je naše nová třída definována. Vložte do ní přímo několik soukromých proměnných:
   struct sPuls{
UINT pocet;
char lastch;
LONGLONG kdy;
} Impuls[POCTLAC][MAXIMP];
LONGLONG m_llFrekv;
BOOL m_bOpened;
HANDLE m_hIRPort;
Členské proměnné by se měly objevit ve třídě CIRcontrol na záložce Class View.
Pokud byste se pokusili nyní program přeložit, objevilo by se chybové hlášení, že POCTLAC a MAXIMP není definováno. Vložte proto před definici třídy 2 řádky:
#define POCTLAC 15 
#define MAXIMP 250
POCTLAC je asi zřejmé. MAXIMP určuje maximální počet impulsů pro jeden povel dálkového ovládání. Uvedená hodnota by měla být dostačující, v případě potřeby je možné ji upravit. Abychom mohli program opět cvičně přeložit a otestovat (i když nebude dělat nic nového) chybí v členské funkci Learn návratová hodnota.
Klikněte v Class View pravým tlačítkem myši na této funkci a zvolte Go to Definition. Opět se přeneseme do těla funkce a tam doplníme:
   return 0;
Teď lze program otestovat, ale nezjistíme žádný pokrok :-)
Kostra třídy pro ovládání IrDA portu je připravená. Příštím krokem si ji naplníme. Povšimněte si, že díky pomocníku ClassWizard v eVT jsme se nemuseli hledat, v kterém souboru a na jakém místě je uložena konkrétní část zdrojového kódu. Rychle se můžeme dostat na potřebnou pozici.

Co bychom si měli z této lekce zapamatovat?

  • ClassWizard nám umožní dostat se rychle ke kódu jednotlivých částí tříd.
 

Buď první, kdo ohodnotí tento článek.

Nový komentář

Přihlásit se
  Ještě nemáte vlastní web? Můžete si jej zdarma založit na Blog.cz.