那位大侠帮忙分析一下C++源代码?
void CCycleTestDlg::OnTimer(UINT nIDEvent)
{
UINT nBit=m_nCounter/2;
if(nBit>=0 && nBit<4 && !m_bPQ46)//skip PQ46
{
nBit=4;
m_nCounter=nBit*2;
}
if(nBit>=4 && nBit<18 && !m_bCD34)//skip CD34
{
nBit=18;
m_nCounter=nBit*2;
}
if(nBit>=18 && nBit<19 && !m_bSGM811Meter)//skip SGM811 Meter
{
nBit=19;
m_nCounter=nBit*2;
}
if(nBit>=19 && nBit<22 && !m_bSGM811Clock)//skip SGM811 Clock
{
nBit=22;
m_nCounter=nBit*2;
}
if(nBit>=22)
{
m_nCounter=nBit=0;
m_nTested++;
m_nLeft--;
UpdateData(FALSE);
if(m_nLeft==0)
OnBnClickedButtonStop();
}
if(m_nCounter%2!=0)//odd means to pull the button back
ClearOutput();
else//even measn to push the button
OutputBit(nBit);
m_nCounter++;
CDialog::OnTimer(nIDEvent);
}
void CCycleTestDlg::OutputBit(UINT nBit)
{
UINT nOutput;
nOutput=((UINT)0x01)<<nBit;
DO_WritePort(m_nCard,PORT_DO_LOW,nOutput);
}
void CCycleTestDlg::ClearOutput()
{
DO_WritePort(m_nCard,PORT_DO_LOW,0x00);
}
主要是nBit的值怎么变化的,Noutput怎么变化的。谢谢了。