OpenRTM-aist-Python 1.1.2
公開メンバ関数 | 全メンバ一覧
OpenRTM_aist.PublisherPeriodic.PublisherPeriodic クラス

PublisherPeriodic クラス [詳解]

OpenRTM_aist.PublisherPeriodic.PublisherPeriodic の継承関係図
OpenRTM_aist.PublisherBase.PublisherBase OpenRTM_aist.DataPortStatus.DataPortStatus

公開メンバ関数

def __init__ (self)
 コンストラクタ [詳解]
 
def __del__ (self)
 デストラクタ [詳解]
 
def setPushPolicy (self, prop)
 PushPolicy の設定void PublisherNew::setPushPolicy(const coil::Properties& prop)
 
def createTask (self, prop)
 Task の設定bool PublisherNew::createTask(const coil::Properties& prop)
 
def init (self, prop)
 初期化 [詳解]
 
def setConsumer (self, consumer)
 InPortコンシューマのセット [詳解]
 
def setBuffer (self, buffer)
 バッファのセット [詳解]
 
def setListener (self, info, listeners)
 リスナを設定する。 [詳解]
 
def write (self, data, sec, usec)
 データを書き込む [詳解]
 
def isActive (self)
 アクティブ化確認 [詳解]
 
def activate (self)
 アクティブ化する [詳解]
 
def deactivate (self)
 非アクティブ化する [詳解]
 
def svc (self)
 スレッド実行関数int PublisherPeriodic::svc(void)
 
def pushAll (self)
 push all policy [詳解]
 
def pushFifo (self)
 push "fifo" policy [詳解]
 
def pushSkip (self)
 push "skip" policy [詳解]
 
def pushNew (self)
 push "new" policy [詳解]
 
def convertReturn (self, status, data)
 BufferStatus から DataPortStatus への変換 [詳解]
 
def invokeListener (self, status, data)
 DataPortStatusに従ってリスナへ通知する関数を呼び出す。 [詳解]
 
def onBufferWrite (self, data)
 ON_BUFFER_WRITEのリスナへ通知する。 [詳解]
 
def onBufferFull (self, data)
 ON_BUFFER_FULLリスナへイベントを通知する。 [詳解]
 
def onBufferWriteTimeout (self, data)
 ON_BUFFER_WRITE_TIMEOUTのリスナへ通知する。 [詳解]
 
def onBufferRead (self, data)
 ON_BUFFER_READのリスナへ通知する。 [詳解]
 
def onSend (self, data)
 ON_SENDのリスナへ通知する。 [詳解]
 
def onReceived (self, data)
 ON_RECEIVEDのリスナへ通知する。 [詳解]
 
def onReceiverFull (self, data)
 ON_RECEIVER_FULLのリスナへ通知する。 [詳解]
 
def onReceiverTimeout (self, data)
 ON_RECEIVER_TIMEOUTのリスナへ通知する。 [詳解]
 
def onReceiverError (self, data)
 ON_RECEIVER_ERRORのリスナへ通知する。 [詳解]
 
def onBufferEmpty (self)
 ON_BUFFER_EMPTYのリスナへ通知する。inline void onBufferEmpty()
 
def onSenderEmpty (self)
 ON_SENDER_EMPTYのリスナへ通知する。inline void onSenderEmpty()
 
def onSenderError (self)
 ON_SENDER_ERRORのリスナへ通知する。inline void onSenderError()
 
def bufferIsEmpty (self)
 バッファが空かどうかをチェックする。xbool bufferIsEmpty()
 
- 基底クラス OpenRTM_aist.PublisherBase.PublisherBase に属する継承公開メンバ関数
def init (self, prop)
 設定初期化 [詳解]
 
def setConsumer (self, consumer)
 virtual ReturnCode setConsumer(InPortConsumer* consumer) = 0;
 
def setBuffer (self, buffer)
 virtual ReturnCode setBuffer(BufferBase<cdrMemoryStream>* buffer) = 0;
 
def isActive (self)
 virtual bool isActive() = 0;
 
def activate (self)
 virtual ReturnCode activate() = 0;
 
def deactivate (self)
 virtual ReturnCode deactivate() = 0;
 
def release (self)
 Publisher を破棄する。 [詳解]
 
- 基底クラス OpenRTM_aist.DataPortStatus.DataPortStatus に属する継承公開メンバ関数
def toString (status)
 DataPortStatus リターンコードを文字列に変換 [詳解]
 

その他の継承メンバ

- 基底クラス OpenRTM_aist.DataPortStatus.DataPortStatus に属する継承静的公開変数類
int PORT_OK = 0
 brief DataPortStatus リターンコード [詳解]
 

詳解

PublisherPeriodic クラス

周期的にデータを送信するための Publisher クラス。このクラスは、通 常 Connector 内にあって、バッファおよびコンシューマに関連付けられ る。一定周期ごとにバッファからデータを取り出しコンシューマに対して データを送出する。

構築子と解体子

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.__init__ (   self)

コンストラクタ

コンストラクタ 送出処理の呼び出し間隔を、Propertyオブジェクトのdataport.push_rateメンバ に設定しておく必要がある。送出間隔は、Hz単位の浮動小数文字列で指定。 たとえば、1000.0Hzの場合は、「1000.0」を設定。 上記プロパティが未設定の場合は、「1000Hz」を設定。

引数
self
consumerデータ送出を待つコンシューマ
property本Publisherの駆動制御情報を設定したPropertyオブジェクト
def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.__del__ (   self)

デストラクタ

デストラクタ

引数
self

メソッド詳解

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.activate (   self)

アクティブ化する

Publisher をアクティブ化する。この関数を呼び出すことにより、 Publisherが持つ、データを送信するスレッドが動作を開始する。初期 化が行われていないなどにより、事前条件を満たさない場合、エラーコー ド PRECONDITION_NOT_MET を返す。

戻り値
PORT_OK 正常終了 PRECONDITION_NOT_MET 事前条件を満たさない

PublisherBase::ReturnCode PublisherPeriodic::activate()

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.convertReturn (   self,
  status,
  data 
)

BufferStatus から DataPortStatus への変換

バッファからの戻り値を DataPortStatus::Enum 型へ変換する関数。そ れぞれ、以下のように変換される。変換時にコールバックを呼ぶ場合、 コールバク関数も付記する。

  • BUFFER_OK: PORT_OK
    • None
  • BUFFER_ERROR: BUFFER_ERROR
    • None
  • BUFFER_FULL: BUFFER_FULL
  • NOT_SUPPORTED: PORT_ERROR
    • None
  • TIMEOUT: BUFFER_TIMEOUT
  • PRECONDITION_NOT_MET: PRECONDITION_NOT_MET
    • None
  • other: PORT_ERROR
    • None
引数
statusBufferStatus
datacdrMemoryStream
戻り値
DataPortStatu 型のリターンコード

PublisherBase::ReturnCodea PublisherPeriodic::convertReturn(BufferStatus::Enum status, const cdrMemoryStream& data)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.deactivate (   self)

非アクティブ化する

Publisher を非アクティブ化する。この関数を呼び出すことにより、 Publisherが持つ、データを送信するスレッドが動作を停止する。初期 化が行われていないなどにより、事前条件を満たさない場合、エラーコー ド PRECONDITION_NOT_MET を返す。

戻り値
PORT_OK 正常終了 PRECONDITION_NOT_MET 事前条件を満たさない

PublisherBase::ReturnCode PublisherPeriodic::deactivate()

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.init (   self,
  prop 
)

初期化

このクラスのオブジェクトを使用するのに先立ち、必ずこの関数を呼び 出す必要がある。引数には、このオブジェクトの各種設定情報を含む Properties を与える。少なくとも、送出処理の呼び出し周期を単位 Hz の数値として Propertyオブジェクトの publisher.push_rate をキー とする要素に設定する必要がある。周期 5ms すなわち、200Hzの場合、 200.0 を設定する。 dataport.publisher.push_rate が未設定の場合、 false が返される。データをプッシュする際のポリシーとして publisher.push_policy をキーとする値に、all, fifo, skip, new の いずれかを与えることができる。

以下のオプションを与えることができる。

  • publisher.thread_type: スレッドのタイプ (文字列、デフォルト: default)
  • publisher.push_rate: Publisherの送信周期 (数値)
  • publisher.push_policy: Pushポリシー (all, fifo, skip, new)
  • publisher.skip_count: 上記ポリシが skip のときのスキップ数
  • measurement.exec_time: タスク実行時間計測 (enable/disable)
  • measurement.exec_count: タスク関数実行時間計測周期 (数値, 回数)
  • measurement.period_time: タスク周期時間計測 (enable/disable)
  • measurement.period_count: タスク周期時間計測周期 (数値, 回数)
引数
property本Publisherの駆動制御情報を設定したPropertyオブジェクト
戻り値
ReturnCode PORT_OK 正常終了 INVALID_ARGS Properties が不正な値を含む

PublisherBase::ReturnCode PublisherPeriodic::init(coil::Properties& prop)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.invokeListener (   self,
  status,
  data 
)

DataPortStatusに従ってリスナへ通知する関数を呼び出す。

引数
statusDataPortStatus
datacdrMemoryStream
戻り値
リターンコード

PublisherPeriodic::ReturnCode PublisherPeriodic::invokeListener(DataPortStatus::Enum status, const cdrMemoryStream& data)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.isActive (   self)

アクティブ化確認

Publisher はデータポートと同期して activate/deactivate される。 activate() / deactivate() 関数によって、アクティブ状態と非アクティ ブ状態が切り替わる。この関数により、現在アクティブ状態か、非アク ティブ状態かを確認することができる。

戻り値
状態確認結果(アクティブ状態:true、非アクティブ状態:false)

bool PublisherPeriodic::isActive()

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.onBufferFull (   self,
  data 
)

ON_BUFFER_FULLリスナへイベントを通知する。

引数
datacdrMemoryStream

inline void onBufferFull(const cdrMemoryStream& data)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.onBufferRead (   self,
  data 
)

ON_BUFFER_READのリスナへ通知する。

引数
datacdrMemoryStream

inline void onBufferRead(const cdrMemoryStream& data)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.onBufferWrite (   self,
  data 
)

ON_BUFFER_WRITEのリスナへ通知する。

引数
datacdrMemoryStream

inline void onBufferWrite(const cdrMemoryStream& data)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.onBufferWriteTimeout (   self,
  data 
)

ON_BUFFER_WRITE_TIMEOUTのリスナへ通知する。

引数
datacdrMemoryStream

inline void onBufferWriteTimeout(const cdrMemoryStream& data)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.onReceived (   self,
  data 
)

ON_RECEIVEDのリスナへ通知する。

引数
datacdrMemoryStream

inline void onReceived(const cdrMemoryStream& data)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.onReceiverError (   self,
  data 
)

ON_RECEIVER_ERRORのリスナへ通知する。

引数
datacdrMemoryStream

inline void onReceiverError(const cdrMemoryStream& data)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.onReceiverFull (   self,
  data 
)

ON_RECEIVER_FULLのリスナへ通知する。

引数
datacdrMemoryStream

inline void onReceiverFull(const cdrMemoryStream& data)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.onReceiverTimeout (   self,
  data 
)

ON_RECEIVER_TIMEOUTのリスナへ通知する。

引数
datacdrMemoryStream

inline void onReceiverTimeout(const cdrMemoryStream& data)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.onSend (   self,
  data 
)

ON_SENDのリスナへ通知する。

引数
datacdrMemoryStream

inline void onSend(const cdrMemoryStream& data)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.pushAll (   self)

push all policy

PublisherBase::ReturnCode PublisherPeriodic::pushAll()

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.pushFifo (   self)

push "fifo" policy

PublisherBase::ReturnCode PublisherPeriodic::pushFifo()

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.pushNew (   self)

push "new" policy

PublisherBase::ReturnCode PublisherPeriodic::pushNew()

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.pushSkip (   self)

push "skip" policy

PublisherBase::ReturnCode PublisherPeriodic::pushSkip()

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.setBuffer (   self,
  buffer 
)

バッファのセット

この関数では、この Publisher に関連付けられるバッファをセットする。 バッファオブジェクトがヌルポインタの場合、INVALID_ARGSが返される。 それ以外の場合は、PORT_OK が返される。

引数
bufferCDR buffer へのポインタ
戻り値
ReturnCode PORT_OK 正常終了 INVALID_ARGS 引数に不正な値が含まれている

PublisherBase::ReturnCode PublisherPeriodic::setBuffer(CdrBufferBase* buffer)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.setConsumer (   self,
  consumer 
)

InPortコンシューマのセット

この関数では、この Publisher に関連付けられるコンシューマをセットする。 コンシューマオブジェクトがヌルポインタの場合、INVALID_ARGSが返される。 それ以外の場合は、PORT_OK が返される。

引数
consumerConsumer へのポインタ
戻り値
ReturnCode PORT_OK 正常終了 INVALID_ARGS 引数に不正な値が含まれている

PublisherBase::ReturnCode PublisherPeriodic::setConsumer(InPortConsumer* consumer)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.setListener (   self,
  info,
  listeners 
)

リスナを設定する。

Publisher に対してリスナオブジェクト ConnectorListeners を設定する。 各種リスナオブジェクトを含む ConnectorListeners をセットすることで、 バッファの読み書き、データの送信時等にこれらのリスナをコールする。 ConnectorListeners オブジェクトの所有権はポートまたは RTObject が持ち Publisher 削除時に ConnectorListeners は削除されることはない。 ConnectorListeners がヌルポインタの場合 INVALID_ARGS を返す。

引数
infoConnectorProfile をローカル化したオブジェクト ConnectorInfo
listenersリスナを多数保持する ConnectorListeners オブジェクト
戻り値
PORT_OK 正常終了 INVALID_ARGS 不正な引数

PublisherBase::ReturnCode PublisherPeriodic::setListener(ConnectorInfo& info, ConnectorListeners* listeners)

def OpenRTM_aist.PublisherPeriodic.PublisherPeriodic.write (   self,
  data,
  sec,
  usec 
)

データを書き込む

Publisher が保持するバッファに対してデータを書き込む。コンシュー マ、バッファ、リスナ等が適切に設定されていない等、Publisher オブ ジェクトが正しく初期化されていない場合、この関数を呼び出すとエラー コード PRECONDITION_NOT_MET が返され、バッファへの書き込み等の操 作は一切行われない。

バッファへの書き込みと、InPortへのデータの送信は非同期的に行われ るため、この関数は、InPortへのデータ送信の結果を示す、 CONNECTION_LOST, BUFFER_FULL などのリターンコードを返すことがあ る。この場合、データのバッファへの書き込みは行われない。

バッファへの書き込みに対して、バッファがフル状態、バッファのエ ラー、バッファへの書き込みがタイムアウトした場合、バッファの事前 条件が満たされない場合にはそれぞれ、エラーコード BUFFER_FULL, BUFFER_ERROR, BUFFER_TIMEOUT, PRECONDITION_NOT_MET が返される。

これら以外のエラーの場合、PORT_ERROR が返される。

引数
data書き込むデータ
secタイムアウト時間
nsecタイムアウト時間
戻り値
PORT_OK 正常終了 PRECONDITION_NO_MET consumer, buffer, listener等が適切に設定 されていない等、このオブジェクトの事前条件 を満たさない場合。 CONNECTION_LOST 接続が切断されたことを検知した。 BUFFER_FULL バッファがフル状態である。 BUFFER_ERROR バッファに何らかのエラーが生じた場合。 NOT_SUPPORTED サポートされない操作が行われた。 TIMEOUT タイムアウトした。

PublisherBase::ReturnCode PublisherPeriodic::write(const cdrMemoryStream& data, unsigned long sec, unsigned long usec)


このクラス詳解は次のファイルから抽出されました: