39: 2016-12-04 (日) 21:50:40 takaboo |
40: 2017-12-17 (日) 21:28:48 takaboo |
| シリアル通信に関するAPI、タイミングやエラー処理、プロトコルの整合性チェック等を本ライブラリ内で行っているため、シリアル通信である事をほとんど意識すること無くアプリケーションの作りこみに専念することができます。 | | シリアル通信に関するAPI、タイミングやエラー処理、プロトコルの整合性チェック等を本ライブラリ内で行っているため、シリアル通信である事をほとんど意識すること無くアプリケーションの作りこみに専念することができます。 |
| | | |
- | なお、PCと[[BTE061D]]・[[BTE061E]]・[[BTE068]]・[[BTE068B]]・[[BTE082]]・[[BTE083]]・[[BTE074]]・[[BTE079]]・[[BTE080]]のいずれかがUSBポートに接続され、PCのOSに仮想COMポートが増設された状態で使用するものとします。 | + | なお、PCと[[BTE061D]]・[[BTE061E]]・[[BTE068]]・[[BTE068B]]・[[BTE082]]・[[BTE083]]・[[BTE074]]・[[BTE079]]・[[BTE080]]・[[BTE079B]]・[[BTE080B]]のいずれかがUSBポートに接続され、PCのOSに仮想COMポートが増設された状態で使用するものとします。 |
| | | |
| **ライブラリおよびサンプルプログラムのダウンロード [#j8bd290f] | | **ライブラリおよびサンプルプログラムのダウンロード [#j8bd290f] |
| ***Python [#mc6a5a49] | | ***Python [#mc6a5a49] |
| 'SampleCode\Ruby'フォルダにサンプルが同梱されます。ポート・ボーレート・ID等は使用する環境に合わせて適宜修正して使用します。~ | | 'SampleCode\Ruby'フォルダにサンプルが同梱されます。ポート・ボーレート・ID等は使用する環境に合わせて適宜修正して使用します。~ |
- | [[Python:http://www.python.jp/Zope]]はオープンソースの動的なプログラミング言語で、外部のDLLへ簡易にアクセスすることが出来ます。~ | + | [[Python:http://www.python.jp/]]はオープンソースの動的なプログラミング言語で、外部のDLLへ簡易にアクセスすることが出来ます。~ |
| LinuxでLoadLibraryを呼び出す際はcdllインスタンスを使用します。 | | LinuxでLoadLibraryを呼び出す際はcdllインスタンスを使用します。 |
| dxlib = windll.LoadLibrary( "dxlib_x32.dll" ) # for window | | dxlib = windll.LoadLibrary( "dxlib_x32.dll" ) # for window |
| // ID=1のAX-12へ位置(511)を指令 | | // ID=1のAX-12へ位置(511)を指令 |
| DX_WriteWordData (dev, 1, 30, 511, &err); | | DX_WriteWordData (dev, 1, 30, 511, &err); |
| + | DX_ClosePort (dev); |
| + | } |
| + | |
| + | ***DX_ReadLongData [#w341e7a5] |
| + | 対象IDのコントロールテーブルから2ワード(4バイト)のデータを読み出す。 |
| + | bool DX_ReadLongData(TDeviceID dvid, uint8_t id, uint16_t adr, uint32_t *rdata, TErrorCode *err); |
| + | -パラメータ |
| + | --[[TDeviceID>#TDeviceID]] '''dvid''' |
| + | ~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。 |
| + | --uint8_t '''id''' |
| + | ~対象とするID (0~253)。 |
| + | --uint16_t '''adr''' |
| + | ~コントロールテーブルのアドレス。 |
| + | --uint32_t '''*rdata''' |
| + | ~読み出した値の保存先。 |
| + | --[[TErrorCode>#TErrorCode]] '''*err''' |
| + | ~エラーコード。 |
| + | -戻り値 |
| + | --bool |
| + | ~正常な応答が得られた場合はtrue、それ以外はfalseを返す。~ |
| + | -使用例 |
| + | TDeviceID dev; |
| + | TErrorCode err; |
| + | uint32_t dat; |
| + | // オープン |
| + | dev = DX_OpenPort ("\\\\.\\COM10", 1000000); |
| + | if (dev) { |
| + | // ID=1のXM430から現在位置を取得 |
| + | if (DX_ReadLongData (dev, 1, 132, &dat, &err)) { |
| + | printf ("PRESENT POS=%d\n", dat); |
| + | } |
| + | DX_ClosePort (dev); |
| + | } |
| + | |
| + | ***DX_WriteLongData [#k42e5e5f] |
| + | 対象IDのコントロールテーブルへ2ワード(4バイト)のデータを書き込む。 |
| + | bool DX_WriteLongData(TDeviceID dvid, uint8_t id, uint16_t adr, uint32_t dat, TErrorCode *err); |
| + | -パラメータ |
| + | --[[TDeviceID>#TDeviceID]] '''dvid''' |
| + | ~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。 |
| + | --uint8_t '''id''' |
| + | ~対象とするID (0~253, 254)。 |
| + | --uint16_t '''adr''' |
| + | ~コントロールテーブルのアドレス。 |
| + | --uint32_t '''dat''' |
| + | ~書き込む値。 |
| + | --[[TErrorCode>#TErrorCode]] '''*errcode''' |
| + | ~エラーコード。 |
| + | -戻り値 |
| + | --bool |
| + | ~正常な応答が得られた場合はtrue、それ以外はfalseを返す。~ |
| + | BROADCASTING IDを指定した場合は応答待ちを行わない。 |
| + | -使用例 |
| + | TDeviceID dev; |
| + | TErrorCode err; |
| + | // オープン |
| + | dev = DX_OpenPort ("\\\\.\\COM10", 1000000); |
| + | if (dev) { |
| + | // ID=1のXM430へ位置(1024)を指令 |
| + | DX_WriteLongData (dev, 1, 30, 1024, &err); |
| DX_ClosePort (dev); | | DX_ClosePort (dev); |
| } | | } |
| |1|ERR_DX_ANGLE|Angle Limitの範囲外にGoal Positionが指定された| | | |1|ERR_DX_ANGLE|Angle Limitの範囲外にGoal Positionが指定された| |
| |0|ERR_DX_OVERVOLTAGE|電源電圧が指定動作電圧の範囲を超えた| | | |0|ERR_DX_OVERVOLTAGE|電源電圧が指定動作電圧の範囲を超えた| |
| + | |
| + | **追加API [#i7e58b8f] |
| + | #include(DXL_intuitive,notitle) |