PMX ArduinoLib MemREADToInt16()
『PMX Library for Arduino』のMemREADToInt16()関数について解説します。
【解説】
MemREADコマンドは、メモリマップのRAM領域から情報を読み出すためのコマンドです。PMXサーボのメモリマップにはRAM領域とROM領域があります。サーボ起動時にROM領域からRAM領域にデータが展開され、サーボの制御にはRAM領域のデータが使用されます。
この関数は、アドレスで指定したRAM領域から2バイトのデータを読み出すことができます。また、MemREAD()関数では、2バイト以上のデータはリトルエンディアン方式に分かれて1バイトずつ返しますが、この関数は内部で変換して返しますので2バイトのデータとしてそのまま使用することができます。符号付き2バイトデータを読み出す際にご利用ください。
【構文】
status = MemREADToInt16(ID, address, &int16Data);
【例】
1 2 3 |
short int16Data; // サーボから読み出したデータを受け取るための変数 flag = pmx.MemREADToInt16(ServoID, PMX::RamAddrList::NowPosition, &int16Data); Serial.println(int16Data); |
【パラメータ】
引数1:ID(byte型)
第一引数の「ID」はサーボIDです。「ID」は、MemREADコマンドの命令の対象になるサーボを指定しています。「ID」を0に指定すると、ID0のサーボを指定することができます。
引数2:address(unsigned short型)
第二引数の「address」は先頭アドレスです。「先頭アドレス」とは、メモリマップのアドレスを指し、読み出すデータの先頭のアドレスを指定することができます。上記の例では「PMX::RamAddrList::NowPosition」と書いていますが、これはライブラリ内で定義された変数で、メモリマップのアドレスを指定しています。「PMX::RamAddrList::NowPosition」には300が代入されていますので、実行の際は300に変換されます。また数値で300と指定しても同じ番地からデータを読み出すことができます。アドレスは『オンラインマニュアル』をご参照ください。
引数3:int16Data(short型)
第三引数の「int16Data」に変数のポインタを渡します。MemREADコマンドで読み出したデータが代入されます。
【戻り値】
戻り値:status(unsigned short型)
戻り値は、サーボとの通信状態とサーボの状態が正常かどうかのステータスを足したものが返ってきます。データが0であれば問題ありません。0以外の場合は、なんらかの問題が発生していますので、ステータス部がエラーの場合はオンラインマニュアルの『5.エラー状態』、または『PmxStatusErrorList』を、通信部がエラーの場合は『ComError』を参照してください。
status = PMXからの返信のステータス(PMX::PmxStatusErrorList) + 送受信の状態(PMX::ComError)