Windows版 iTRONサービスコールの作成 (時間管理機能)
(その4)

周期起動ハンドラを起動または停止する

周期起動ハンドラを起動または停止するサービスコールは以下のとおりです。


サービスコール名説明
act_cyc

周期起動ハンドラの活性制御を行います。(Ver3.0のみ)

sta_cyc

周期起動ハンドラを起動します。(Ver4.0のみ)

stp_cyc

周期起動ハンドラを停止します。(Ver4.0のみ)

周期起動ハンドラの活性制御を行う (Ver3.0のみ)

周期起動ハンドラの活性制御を行うには以下のサービスコールを使用します。



    ER 	act_cyc( HNO cycno, UINT cycact )
	

引数説明
cycno

周期ハンドラ番号。

pk_dcyc

周期ハンドラの活性状態。

周期ハンドラの起動・停止を指定します。

  • TCY_OFFの場合、周期ハンドラの停止します。
  • TCY_ONの場合、周期ハンドラの起動します。

TCY_INIを指定した場合は、周期カウンタを初期化します。

戻り値説明
E_OK

正常終了。

E_ID

範囲外の周期ハンドラID番号。

E_NOEXS

指定した周期ハンドラID番号は登録されていない。


・サービスコールのソースコードは以下のようになります。


/****************************************************************************/
/*!
 *  @brief  周期ハンドラの活性制御.
 *
 *  @param  [in]    cycno   周期ハンドラ番号.
 *  @param  [in]    cycact  周期ハンドラ活性情報.
 *
 *  @retval エラーコード.
 */
ER      act_cyc( HNO cycno, UINT cycact )
{
    ER ercd;

    wi_CommonLock();

    //! 周期ハンドラの起動/停止を設定する.
    ercd = wi_ActionCycleHadler( cycno,
                                ((cycact & TCY_ON ) != 0) ? TRUE : FALSE,
                                ((cycact & TCY_INI) != 0) ? TRUE : FALSE );

    wi_CommonUnlock();
    return ercd;
}
	

周期ハンドラを起動する (Ver4.0のみ)

周期ハンドラを起動するには以下のサービスコールを使用します。



    ER sta_cyc( ID cycid )
	

引数説明
cycid

周期ハンドラID番号。

戻り値説明
E_OK

正常終了。

E_ID

範囲外の周期ハンドラID番号。

E_NOEXS

指定した周期ハンドラID番号は登録されていない。


・サービスコールのソースコードは以下のようになります。


/****************************************************************************/
/*!
 *  @brief  周期ハンドラの起動.
 *
 *  @param  [in]    cycid   周期ハンドラID番号.
 *
 *  @retval エラーコード.
 */
ER      sta_cyc( ID cycid )
{
    ER ercd;

    wi_CommonLock();

    //! 周期ハンドラを起動する.
    ercd = wi_ActionCycleHadler( cycid, TRUE, FALSE );

    wi_CommonUnlock();
    return ercd;
}
	

引数を「周期ハンドラの起動」にして、周期起動ハンドラの活性制御関数を呼び出します。

周期起動ハンドラを停止する (Ver4.0のみ)

周期起動ハンドラを停止するには以下のサービスコールを使用します。



    ER stp_cyc( ID cycid )
	

引数説明
cycid

周期ハンドラID番号。

戻り値説明
E_OK

正常終了。

E_ID

範囲外の周期ハンドラID番号。

E_NOEXS

指定した周期ハンドラID番号は登録されていない。


・サービスコールのソースコードは以下のようになります。


/****************************************************************************/
/*!
 *	@brief	周期ハンドラの停止.
 *
 *	@param	[in]	cycid	周期ハンドラID番号.
 *
 *	@retval	エラーコード.
 */
ER		stp_cyc( ID cycid )
{
	ER ercd;

	wi_CommonLock();

	//! 周期ハンドラを停止する.
	ercd = wi_ActionCycleHadler( cycid, FALSE, FALSE );

	wi_CommonUnlock();
	return ercd;
}
	

引数を「周期ハンドラの停止」にして、周期起動ハンドラの活性制御関数を呼び出します。

周期起動ハンドラの活性制御関数

周期起動ハンドラの活性制御関数のソースコードは以下のとおりです。



/****************************************************************************/
/*!
 *  @brief  周期ハンドラの活性制御.
 *
 *  @param  [in]    no      周期ハンドラ番号.
 *  @param  [in]    act     TRUE = 起動 / FALSE = 停止.
 *  @param  [in]    init    TRUE = 初期化要求.
 *
 *  @retval エラーコード.
 */
ER      wi_ActionCycleHadler( INT no, BOOL act, BOOL init )
{
    ER          ercd;
    WICYCOBJ    *p;

    //! 周期ハンドラ番号のオブジェクトを取得する.
    p = (WICYCOBJ *)wi_FindObject( no, TMAX_MAXCYC, ObjList, &ercd );
    if( !p ){
        return ercd;
    }
    //! 周期ハンドラの活性情報をセットする.
    p->Active = act;

    //! 周期カウンタを初期化する.
    if( init ){
        p->StartTime = wi_GetSystemTime();
    }
    return E_OK;
}
	

周期起動ハンドラの活性制御関数は以下のような処理を行います。

  • 引数で指定された周期ハンドラのID番号に該当する周期ハンドラ・オブジェクトを取り出します。
  • 周期ハンドラの活性情報(起動または停止情報)をオブジェクトに設定します。
  • 周期カウンタを初期化する場合は、オブジェクトの周期カウンタをクリアします。


Windowsは米国Microsoft Corporationの登録商標です。