Kurz3 - Kapitola9

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

5.9 Dialog signálových bitů

V dnešním krátkém díle (občas je vhodné si odpočinout :-) pouze zprovozníme druhou kartu pro nastavování signálových bitů portu. Většinu práce jsme již provedli v předminulé lekci při pokusném vytvoření časovače.
Nyní tedy stačí trochu opravit 4 metody třídy CDruhy a další karta by měla být kompletně hotová.
Upravte tedy následující funkce:
BOOL CDruhy::OnSetActive()
{
CWnd *pWnd;

CPropertyPage::OnSetActive();
// Vytvorim si casovac, ktery posle zpravu po 100 msec
if(!(m_nTimer=SetTimer(1,100,NULL))) {
MessageBox(_T("Timer error!"));
return FALSE;
}
// Vystupni bity povolim a nastavim posledni stav
pWnd=GetDlgItem(IDC_DTR); pWnd->EnableWindow(mujCOM.TypPortu()==2);
pWnd=GetDlgItem(IDC_RTS); pWnd->EnableWindow(mujCOM.TypPortu()==2);
OnRTS(); OnDTR();

return TRUE;
}
Zde stačilo doplnit povolení zaškrtávacích políček podle typu portu - význam to má pouze u COM portu.
void CDruhy::OnTimer(UINT nTim)
{
DWORD dwStav;

if(mujCOM.TypPortu()>1) {
// Prectu stav signalovych bitu portu do pomocne promenne
dwStav=mujCOM.GetBits();
// Podle jednotlivych bitu nastavim odpovidajici promenne
if(dwStav & MS_CTS_ON) m_nCTS=BST_CHECKED; else m_nCTS=BST_UNCHECKED;
if(dwStav & MS_RING_ON) m_nRI=BST_CHECKED; else m_nRI=BST_UNCHECKED;
if(dwStav & MS_DSR_ON) m_nDSR=BST_CHECKED; else m_nDSR=BST_UNCHECKED;
if(dwStav & MS_RLSD_ON) m_nDCD=BST_CHECKED; else m_nDCD=BST_UNCHECKED;
// Nastavim zaskrtavaci policka podle promennych
UpdateData(FALSE);
}
}
V obsluze časovače jsme doplnili čtení stavu signálových bitů do proměnné dwStav a podle získaných hodnot nastavíme odpovídající prvek.
A ještě analogicky doplníme:
void CDruhy::OnDTR()
{
DWORD dwSet=CLRDTR;

// Promenne nastavim podle stavu ovladacich prvku
UpdateData();
// Hodnotu DTR nastavim podle promenne m_nDTR
if(m_nDTR==BST_CHECKED) dwSet=SETDTR;
mujCOM.SetBit(dwSet);
}

void CDruhy::OnRTS()
{
DWORD dwSet=CLRRTS;

// Promenne nastavim podle stavu ovladacich prvku
UpdateData();
// Hodnotu RTS nastavim podle promenne m_nCTS
if(m_nRTS==BST_CHECKED) dwSet=SETRTS;
mujCOM.SetBit(dwSet);
}
Máte-li přístroj propojený s PC pomocí sériového portu kabelem, můžete testovat přenos signálů. Na straně PC lze použít verzi pro Win32.

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

  • Občas je dobré si trochu odpočinout :-).
 

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.