PMX C#Lib MemWRITE()

『PMX Library for C#』のMemWRITE()関数について解説します。

 

【解説】

MemWRITEコマンドは、RAM領域のメモリマップにデータを書き込むためのコマンドです。このコマンドを使用することで各種設定値の書き換えや、サーボのトルク指示、動作指令などを実行することができます。

 

【構文】

status = MemWRITE(ID, address, txDataArray[], writeOpt);

 

【例】

 

【パラメータ】

引数1:ID(byte型)

第一引数の「ID」はサーボIDです。「ID」は、MemWRITEコマンドの命令の対象になるサーボを指定しています。「ID」を0に指定すると、ID0のサーボを指定することができます。

 

引数2:address(ushort型)

第二引数の「address」は先頭アドレスです。「先頭アドレス」とは、メモリマップのアドレスを指し、読み出すデータの先頭のアドレスを指定することができます。上記の例では「RamAddrList.MinVoltageLimit」と書いていますが、これはライブラリ内で定義された変数で、メモリマップのアドレスを指定しています。「RamAddrList.MinVoltageLimit」には76が代入されていますので、実行の際は76に変換されます。また数値で76と指定しても同じ番地にデータを書き込むことができます。アドレスは『オンラインマニュアル』をご参照ください。

 

引数3:txDataArray[](byte配列型)

第三引数の「txDataArray」は書込データです。サーボに書き込むデータを第三引数で渡します。書込データはリトルエンディアンで1バイトずつに分割したデータをbyte型の配列で渡します。2バイト以上のデータを1バイトずつに変換する方法は、下記の【データを用意する方法】をご参照ください。

 

引数4:writeOpt(byte型)

第四引数の「writeOpt」は、サーボがトルクオンの状態でMemWRITEコマンドの実行を許可するかを指定できます。許可する場合は1、許可しない場合は0を渡します。

 

【データを用意する方法】

C#の機能として、データを分割するための「BitConverter.GetBytes()」を使用することができます。この関数を使用することで簡単にデータをbytes型の配列に変換することができます。

引数にByteに分割するデータを渡します。BitConverter.GetBytes()が実行されるとtxDataArray[]に分割したデータを受け取ることができますので、そのままMemWRITE()の引数3として使用することができます。

BitConverter.GetBytes()について、詳しくはこちらをご参照ください。

 

【戻り値】

戻り値:status(ushort型)

戻り値は、サーボとの通信状態とサーボの状態が正常かどうかのステータスを足したものが返ってきます。データが0であれば問題ありません。0以外の場合は、なんらかの問題が発生していますので、ステータス部がエラーの場合はオンラインマニュアルの『5.エラー状態』、または『PmxStatusErrorList』を、通信部がエラーの場合は『ComError』を参照してください。

status = PMXからの返信のステータス(PMX::PmxStatusErrorList) + 送受信の状態(PMX::ComError)

 

 

リファレンスの目次に戻る