6: 2017-12-23 (土) 11:36:42 takaboo ソース 7: 2017-12-25 (月) 02:05:53 takaboo ソース
Line 24: Line 24:
***DXL_GetModelInfo [#j50f584f] ***DXL_GetModelInfo [#j50f584f]
-指定IDのデバイス情報の読み出しに成功するとライブラリ内のテーブルにその情報が反映され、以後プレフィクスに「DXL_Set」ないし「DXL_Get」が付与されるAPIが使用できるようになる。+指定IDのデバイス情報の読み出しに成功すると、ライブラリ内のIDテーブルに現在の動作モードとモデルを記憶し、デバイスのReturn Delay Timeが0でなければトルクディスエーブルした後に0を書き込む。以後プレフィクスに「DXL_Set」ないし「DXL_Get」が付与された物理値の指令ないし取得等を行うAPIは、指定されたIDが実態を持つものとして処理される。
-ライブラリ内のテーブルが更新されないまま存在しているIDに対してDXL_Set~やDXL_Get~のAPIを使用すると、何の処理も行わずに即時復帰する。+ライブラリ内のテーブルを更新しない場合、実際に存在しているIDに対してDXL_Set~やDXL_Get~のAPIを使用すると、何の処理も行わずに即時復帰する。
 TDXL_ModelInfo *DXL_GetModelInfo(TDeviceID dvid, uint8_t id);  TDXL_ModelInfo *DXL_GetModelInfo(TDeviceID dvid, uint8_t id);
- 
-パラメータ -パラメータ
--TDeviceID '''dvid''' --TDeviceID '''dvid'''
Line 39: Line 38:
 TDeviceID dev;  TDeviceID dev;
 dev = DX_OpenPort ("/dev/ttyUSB0", 57600);  dev = DX_OpenPort ("/dev/ttyUSB0", 57600);
- // ID=1のデバイス情報を取得 + // ID=1のデバイス情報から内部テーブルを更新し、かつモデル名を取得 
- DXL_GetModelInfo (dev, 1);+ printf("%s", DXL_GetModelInfo (dev, 1).name);
***DXL_PrintDevicesList [#s3fd9115] ***DXL_PrintDevicesList [#s3fd9115]
-内部のテーブルに反映された存在するデバイスの全リストをコンソールに出力する。デバッグ用。+DXL_ScanDevicesかDXL_GetModelInfoでAPI内のIDテーブルに反映されたデバイスの全リストをコンソールに出力する。デバッグ用。
 bool DXL_PrintDevicesList(int *pf(const char *, ...));  bool DXL_PrintDevicesList(int *pf(const char *, ...));
***DXL_GetErrorCode [#l99bda3b] ***DXL_GetErrorCode [#l99bda3b]
-Xシリーズなどのコントロールテーブル上にハードウェアエラーの情報がある場合に限りその値を取得する。+API内で通信を行っている間に取得された最後のエラーコードを取り出す。~ 
 +DXL_ScanDevicesかDXL_GetModelInfoでAPI内のIDテーブルを更新しておく必要がある。
 TErrorCode DXL_GetErrorCode(TDeviceID dvid, uint8_t id);  TErrorCode DXL_GetErrorCode(TDeviceID dvid, uint8_t id);
-パラメータ -パラメータ
Line 55: Line 55:
~検索対象のIDを指定。~ ~検索対象のIDを指定。~
-戻り値 -戻り値
---bool~ +--TErrorCode 
-~成功するとTure、失敗するとFalseを返す。~+~未検索のIDを指定すると0xFFFFを返す。~
-使用例 -使用例
***DXL_SetOperatingMode [#r5844545] ***DXL_SetOperatingMode [#r5844545]
動作モードを指定IDへ指令する。~ 動作モードを指定IDへ指令する。~
-デバイスの動作モードと指令値が異なる場合はトルクをディスエーブルした後に指令値に更新される。また、デバイスがサポートしないモードを指定した場合はエラーとなるため、必ず戻り値を取得して可否を判断すること。+デバイスの動作モードと指令値が異なる場合はトルクをディスエーブルした後に指令値に更新される。また、デバイスがサポートしないモードを指定した場合はエラーとなるため、必ず戻り値を取得して可否を判断すること。
 +予めDXL_ScanDevicesかDXL_GetModelInfoでAPI内のIDテーブルを更新しておく必要がある。
 bool DXL_SetOperatingMode(TDeviceID dvid, uint8_t id, uint8_t mode);  bool DXL_SetOperatingMode(TDeviceID dvid, uint8_t id, uint8_t mode);
Line 75: Line 76:
***DXL_GetOperatingMode [#x7567d67] ***DXL_GetOperatingMode [#x7567d67]
指定IDの動作モードを取得する。~ 指定IDの動作モードを取得する。~
 +予めDXL_ScanDevicesかDXL_GetModelInfoでAPI内のIDテーブルを更新しておく必要がある。
 bool DXL_GetOperatingMode(TDeviceID dvid, uint8_t id, uint8_t *mode);  bool DXL_GetOperatingMode(TDeviceID dvid, uint8_t id, uint8_t *mode);
***DXL_SetTorqueEnable [#qcf1eee1] ***DXL_SetTorqueEnable [#qcf1eee1]
トルクイネーブルを指定IDへ指令する。~ トルクイネーブルを指定IDへ指令する。~
-なおプロトコルV1搭載モデルに角度や回転数を指令すると、本APIに関わらず自動的にトルクイネーブルが1になる。+なおプロトコルV1搭載モデルに角度や回転数を指令すると、本APIに関わらず自動的にトルクイネーブルが1になる。
 +予めDXL_ScanDevicesかDXL_GetModelInfoでAPI内のIDテーブルを更新しておく必要がある。
 bool DXL_SetTorqueEnable(TDeviceID dvid, uint8_t id, bool en);  bool DXL_SetTorqueEnable(TDeviceID dvid, uint8_t id, bool en);
-パラメータ -パラメータ
Line 93: Line 96:
***DXL_GetTorqueEnable [#x3459343] ***DXL_GetTorqueEnable [#x3459343]
指定IDのトルクイネーブルを取得する。~ 指定IDのトルクイネーブルを取得する。~
 +予めDXL_ScanDevicesかDXL_GetModelInfoでAPI内のIDテーブルを更新しておく必要がある。
 bool DXL_SetTorqueEnable(TDeviceID dvid, uint8_t id, bool *en);  bool DXL_SetTorqueEnable(TDeviceID dvid, uint8_t id, bool *en);
-パラメータ -パラメータ
Line 105: Line 109:
***DXL_SetLED [#kfc7a7c3] ***DXL_SetLED [#kfc7a7c3]
-LEDの明滅を指定IDへ指令する。輝度や色の制御は対象外。+LEDの明滅を指定IDへ指令する。輝度や色の制御は対象外。
 +予めDXL_ScanDevicesかDXL_GetModelInfoでAPI内のIDテーブルを更新しておく必要がある。
 bool DXL_SetLED(TDeviceID dvid, uint8_t id, bool en);  bool DXL_SetLED(TDeviceID dvid, uint8_t id, bool en);
-パラメータ -パラメータ
Line 119: Line 124:
***DXL_SetGoalAngle [#zde96bae] ***DXL_SetGoalAngle [#zde96bae]
位置決め制御時の角度(deg)を指定IDへ指令する。~ 位置決め制御時の角度(deg)を指定IDへ指令する。~
-0degは動作範囲の中央とし、実際の精度は対象のデバイスに依存する。+0degは動作範囲の中央とし、実際の精度は対象のデバイスに依存する。
 +予めDXL_ScanDevicesかDXL_GetModelInfoでAPI内のIDテーブルを更新しておく必要がある。
 bool DXL_SetGoalAngle(TDeviceID dvid, uint8_t id, double angle);  bool DXL_SetGoalAngle(TDeviceID dvid, uint8_t id, double angle);
-パラメータ -パラメータ
Line 133: Line 139:
***DXL_SetGoalAngles [#h7eadf0c] ***DXL_SetGoalAngles [#h7eadf0c]
複数軸に対して位置決め制御時の角度(deg)を指令する。~ 複数軸に対して位置決め制御時の角度(deg)を指令する。~
-ライブラリ内ではSYNCやBULKインストラクションを使用しているため、実際のデバイスに指令が到達しているかの判断は行わない。+ライブラリ内ではSYNCやBULKインストラクションを使用しているため、実際のデバイスに指令が到達しているかの判断は行わない。
 +予めDXL_ScanDevicesかDXL_GetModelInfoでAPI内のIDテーブルを更新しておく必要がある。
 bool DXL_SetGoalAngles(TDeviceID dvid, const uint8_t *ids, double *angles, int num);  bool DXL_SetGoalAngles(TDeviceID dvid, const uint8_t *ids, double *angles, int num);
-パラメータ -パラメータ


トップ   差分 リロード印刷に適した表示   全ページ一覧 単語検索 最新ページの一覧   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom