5: 2017-12-22 (金) 00:34:28 takaboo | 6: 2017-12-23 (土) 11:36:42 takaboo | ||
---|---|---|---|
Line 6: | Line 6: | ||
ライブラリ内のテーブルが更新されないまま存在しているIDに対してDXL_Set~やDXL_Get~のAPIを使用すると、何の処理も行わずに即時復帰する。~ | ライブラリ内のテーブルが更新されないまま存在しているIDに対してDXL_Set~やDXL_Get~のAPIを使用すると、何の処理も行わずに即時復帰する。~ | ||
また全IDをスキャンし終えるまでには時間がかかるため、IDが明確にわかっている場合はDXL_GetModelInfoの使用を推奨する。 | また全IDをスキャンし終えるまでには時間がかかるため、IDが明確にわかっている場合はDXL_GetModelInfoの使用を推奨する。 | ||
- | int DXL_ScanDevices(TDeviceID dvid); | + | int DXL_ScanDevices(TDeviceID dvid, uint8_t *ids); |
-パラメータ | -パラメータ | ||
--TDeviceID '''dvid''' | --TDeviceID '''dvid''' | ||
~オープン済のDeviceIDを指定。~ | ~オープン済のDeviceIDを指定。~ | ||
+ | --uint8_t *'''ids''' | ||
+ | ~検索された全IDをストアする配列のポインタ。不要ならNULLを指定。~ | ||
-戻り値 | -戻り値 | ||
--bool~ | --bool~ | ||
Line 15: | Line 17: | ||
-使用例 | -使用例 | ||
TDeviceID dev; | TDeviceID dev; | ||
+ | uint8_t ids[255], num = 0; | ||
// COM10を57600bpsでオープン | // COM10を57600bpsでオープン | ||
dev = DX_OpenPort ("\\\\.\\COM10", 9600); | dev = DX_OpenPort ("\\\\.\\COM10", 9600); | ||
// デバイスをスキャン | // デバイスをスキャン | ||
- | DXL_ScanDevices (dev); | + | num = DXL_ScanDevices (dev, &ids); |
***DXL_GetModelInfo [#j50f584f] | ***DXL_GetModelInfo [#j50f584f] | ||
Line 35: | Line 38: | ||
-使用例 | -使用例 | ||
TDeviceID dev; | TDeviceID dev; | ||
- | // COM10を57600bpsでオープン | + | dev = DX_OpenPort ("/dev/ttyUSB0", 57600); |
- | dev = DX_OpenPort ("\\\\.\\COM10", 57600); | + | |
// ID=1のデバイス情報を取得 | // ID=1のデバイス情報を取得 | ||
DXL_GetModelInfo (dev, 1); | DXL_GetModelInfo (dev, 1); | ||
Line 59: | Line 61: | ||
***DXL_SetOperatingMode [#r5844545] | ***DXL_SetOperatingMode [#r5844545] | ||
動作モードを指定IDへ指令する。~ | 動作モードを指定IDへ指令する。~ | ||
- | 設定時にトルクがディスエーブルされる。また、デバイスがサポートしないモードを指定した場合はエラーとなるため、必ず戻り値を取得して可否を判断すること。 | + | デバイスの動作モードと指令値が異なる場合はトルクをディスエーブルした後に指令値に更新される。また、デバイスがサポートしないモードを指定した場合はエラーとなるため、必ず戻り値を取得して可否を判断すること。 |
bool DXL_SetOperatingMode(TDeviceID dvid, uint8_t id, uint8_t mode); | bool DXL_SetOperatingMode(TDeviceID dvid, uint8_t id, uint8_t mode); | ||