37template<
typename TYP = BYTE>
97 CPollingTriggerT(
void) : m_pListener(NULL), m_interval(100), m_chatter(3), m_chatCount(0)
116 return m_thread.
Start(_T(
"PollingTigger"));
138 m_chatData.Resize(chatter);
139 loop ( i, m_chatData.GetSize() )
143 m_interval = interval;
145 m_chatCount = chatter;
169 if ( m_pListener != NULL )
191 loop ( i, m_chatter - 1 )
193 TYP t = m_chatData[(m_chatCount - i) % m_chatter];
196 TYP da = TYP((m_fixData & cf) | (b & ~cf));
197 TYP ch = TYP(m_fixData ^ da);
199 if ( ch != 0 && m_pListener != NULL )
205 m_chatData[m_chatCount % m_chatter] = b;
209 TYP ch = TYP(m_fixData ^ b);
211 if ( ch != 0 && m_pListener != NULL )
221 IListener* m_pListener;
227 friend class CPollingTriggerTest;
#define loop(VAR, CNT)
loop構文.
CThreadStatus & ReferThreadStatus(void)
[参照] 監視スレッド状態参照.
virtual ~CPollingTriggerT(void)
デストラクタ
void Stop(void)
[設定] クローズ.
CPollingTriggerT(void)
コンストラクタ
bool Start(void)
[設定] ポーリング開始
virtual DWORD Run(void)
スレッド
void SetParameter(IPort *P, IListener *L, DWORD interval=100, DWORD chatter=3)
[設定] ポーリング設定
bool SetRunner(IRunner *pRunner)
[設定] ランナー、設定
bool Stop(DWORD dwWait=15000)
[設定] スレッド停止 スレッドに対して停止要求します。
bool Start(LPCTSTR lpszName=NULL)
[設定] スレッド開始
CPollingTriggerT< BYTE > CPollingTrigger
ポーリングトリガークラス.
virtual void OnPollingError(DWORD error)=0
[通知] エラー通知
virtual void OnPollingBitChanged(TYP changeBit, TYP dataBit)=0
[通知] トリガー変化通知
virtual ~IListener(void)
デストラクタ
virtual DWORD GetPortData(TYP &_dat)=0
[取得] ポートデータ取得
virtual ~IPort(void)
デストラクタ
bool IsRunnable(void) const
[確認] 実行可能か否か