17: 2011-07-26 (Tue) 11:29:54 takaboo source 18: 2013-03-28 (Thu) 20:38:24 takaboo source
Line 8: Line 8:
**ライブラリおよびサンプルプログラムのダウンロード [#j8bd290f] **ライブラリおよびサンプルプログラムのダウンロード [#j8bd290f]
以下のリンクよりライブラリ及びサンプルプログラムをアーカイブしたファイルがダウンロードできます。 以下のリンクよりライブラリ及びサンプルプログラムをアーカイブしたファイルがダウンロードできます。
 +-''2013/03/28 Ver.2.8''~
 +#ref(http://www.besttechnology.co.jp/dow​nload/DXLIBforWin2.8.zip)
 +内容
 +--名称をDXLIB2からDXLIBに戻す。
 +--ROBO-ONE標準化フォーラムでの総意を元にAPIの定義と型を変更。~
 +dxlib2.7以前と互換性がなくなるので注意が必要。~
 +もちろんサンプルも修正。
 +--64ビット環境が増えてきたため、DLL名のサフィックスを統一。
 +--Linuxを真面目に対応。
 +--受信スレッドを完全に廃止し処理をブロッキング化し可読性を向上。
 +--パケットの整合性チェックを厳密化。
-''2011/07/20 Ver.2.6''~ -''2011/07/20 Ver.2.6''~
#ref(http://www.besttechnology.co.jp/dow​nload/DXLIB2forWin2.6.zip) #ref(http://www.besttechnology.co.jp/dow​nload/DXLIB2forWin2.6.zip)
Line 52: Line 63:
--初期リリース~ --初期リリース~
-アーカイブファイルには以下のファイルが同梱されます。必要に応じて解凍してください。 +アーカイブファイルには以下のファイルが同梱されます。必要に応じて解凍してください。(注意:Ver2.8以降の記述に更新されています) 
-|DXLIB2|dxlib2.dll|<|ライブラリ本体 | +|DXLIB|dxlib_x32.dll|<|ライブラリ本体 | 
-|~|dxlib2_x64.dll|<|~| +|~|dxlib_x64.dll|<|~| 
-|~|libdxlib2.a|<|GCC用ライブラリ(定義のみ) | +|~|libdxlib_x32.a|<|GCC用ライブラリ(定義のみ) | 
-|~|libdxlib2_x64.a|<|~| +|~|libdxlib_x64.a|<|~| 
-|~|dxlib2.llb|<|MSVC用ライブラリ(定義のみ) | +|~|dxlib_x32.llb|<|MSVC用ライブラリ(定義のみ) | 
-|~|dxlib2_x64.lib|<|~| +|~|dxlib_x64.lib|<|~| 
-|~|dxlib2.c|<|ライブラリソース | +|~|dxlib.c|<|ライブラリソース | 
-|~|dxlib2.h|<|ライブラリヘッダ | +|~|dxlib.h|<|ライブラリヘッダ | 
-|~|dxmemmap.h|<|DX/AX/EXシリーズ用コントロールテーブル定義ヘッダ |+|~|dxmemmap.h|<|DX/AX/RX/EX/MXシリーズ用コントロールテーブル定義ヘッダ |
|~|makelib.bat|<|ライブラリ再構築用バッチ | |~|makelib.bat|<|ライブラリ再構築用バッチ |
|~|83.bat|<|~| |~|83.bat|<|~|
Line 71: Line 82:
|~|~|smpl6(sync).c |~| |~|~|smpl6(sync).c |~|
|~|~|smpl7(rawpacket).c |~| |~|~|smpl7(rawpacket).c |~|
 +|~|~|smpl8(dualport).c |~|
|~|~|smpl9(DynamicLoad).c |~| |~|~|smpl9(DynamicLoad).c |~|
|~|~|smpl10(USS3).c |~| |~|~|smpl10(USS3).c |~|
-|~|~|libdxlib2.a |DXLIB2フォルダに収録されるものと同一 | +|~|~|dxlib.h |DXLIBフォルダに収録されるものと同一 |
-|~|~|libdxlib2_x64.a |~| +
-|~|~|dxlib2.h |~|+
|~|~|dxmemmap.h |~| |~|~|dxmemmap.h |~|
-|~|~|dxlib2.dll |~| +|~|~|dxlib_x32.dll |~| 
-|~|~|dxlib2_x64.dll |~|+|~|~|dxlib_x64.dll |~|
|~|DELPHI|Project1.dpr |サンプル | |~|DELPHI|Project1.dpr |サンプル |
|~|~|Unit1.dfm |~| |~|~|Unit1.dfm |~|
-|~|~|DXLIB2.pas |~|+|~|~|DXLIB.pas |~|
|~|~|Unit1.dfm |~| |~|~|Unit1.dfm |~|
|~|~|Unit1.pas |~| |~|~|Unit1.pas |~|
-|~|~|dxlib2.dll |DXLIB2フォルダに収録されるものと同一 +|~|~|dxlib_x32.dll |DXLIBフォルダに収録されるものと同一
-|~|LabVIEW2009|sample.vi |サンプル |+|~|~|dxlib_x64.dll |~| 
 +|~|LabVIEW2010|sample.vi |サンプル
 +|~|~|sample_mx.vi |~| 
 +|~|~|synctest.vi |~| 
 +|~|~|dbyte2byte.vi |サブvi |
|~|~|dbyte2word.vi |~| |~|~|dbyte2word.vi |~|
-|~|~|DXLIB2.llb |DXLIB2ラッパーライブラリ +|~|~|errcnt.vi |~| 
-|~|~|dxlib2.dll |DXLIB2フォルダに収録されるものと同一 |+|~|~|DXLIB.llb |DXLIBラッパーライブラリ
 +|~|~|dxlib_x32.dll |DXLIBフォルダに収録されるものと同一 |
|~|EXCEL|text.xls |サンプルシート | |~|EXCEL|text.xls |サンプルシート |
-|~|~|dxlib2.dll |DXLIB2フォルダに収録されるものと同一 +|~|~|dxlib_x32.dll |DXLIBフォルダに収録されるものと同一 | 
-|~|Linux|smpl2(ping).c |サンプル | +|~|~|dxlib_x64.dll |~
-|~|~|smpl4(word_rw).c |サンプル |+|~|Linux|smpl2.c |サンプル | 
 +|~|~|smpl4.c |~|
|~|Ruby|SMPL1.c |サンプル | |~|Ruby|SMPL1.c |サンプル |
-|~|~|SMPL3.c |サンプル | +|~|~|SMPL3.c |~|
-|~|~|dxlib2.dll |DXLIB2フォルダに収録されるものと同一 |+
|~|Python|SMPL1.py |サンプル | |~|Python|SMPL1.py |サンプル |
-|~|~|SMPL3.py |サンプル | +|~|~|SMPL3.py |~|
-|~|~|dxlib2.dll |DXLIB2フォルダに収録されるものと同一 |+
**開発環境毎の設定 [#u3ff03d9] **開発環境毎の設定 [#u3ff03d9]
Line 112: Line 126:
~ダウンロードファイルを解凍後、コンパイルするソースファイルと同一フォルダに以下のファイルをコピー~ ~ダウンロードファイルを解凍後、コンパイルするソースファイルと同一フォルダに以下のファイルをコピー~
|=ファイル |=ファイル名 |=備考 | |=ファイル |=ファイル名 |=備考 |
-|<ヘッダ |<dxlib2.h |<必要な宣言を集約 | +|<ヘッダ |<dxlib.h |<必要な宣言を集約 | 
-|<DLL |<dxlib2.dll |<DLL本体(実行時に必要) +|<DLL |<dxlib_x32.dll |<DLL本体(実行時およびリンク時に必要) |
-|<ライブラリ |<libdxlib2.a |<リンク時に必要 |+
+コンパイルオプションの選択 +コンパイルオプションの選択
~ツールメニュー→コンパイラオプションをクリックし、表示されるダイアログボックスの設定リストから'x86 (Console)'を選択~ ~ツールメニュー→コンパイラオプションをクリックし、表示されるダイアログボックスの設定リストから'x86 (Console)'を選択~
Line 121: Line 134:
~リンクタブ内の追加ボタンを押し、新規に行を追加~ ~リンクタブ内の追加ボタンを押し、新規に行を追加~
#ref(GCC_CompileOption_Link_add_btn.png)​~ #ref(GCC_CompileOption_Link_add_btn.png)​~
-~新規に追加された空の行をクリックし'dxlib2'と入力~+~新規に追加された空の行をクリックし'dxlib_x32'と入力~
#ref(GCC_ComplileOption_Link_add_dxlib2.​png)~ #ref(GCC_ComplileOption_Link_add_dxlib2.​png)~
Line 127: Line 140:
****DLLの動的リンク [#y15bf22f] ****DLLの動的リンク [#y15bf22f]
-動的にDLLを使用する場合はライブラリの追加登録やオプションの指定は必要ありませんが、ソース中でdxlib2.hをインクルードする前に_DYNAMICLOADマクロを定義しておきます。+動的にDLLを使用する場合はライブラリの追加登録やオプションの指定は必要ありませんが、ソース中でdxlib.hをインクルードする前に_DYNAMICLOADマクロを定義しておきます。
 #define _DYNAMICLOAD  #define _DYNAMICLOAD
- #include "dxlib2.h" + #include "dxlib.h" 
-これによりヘッダファイル内の諸定義が切り替わり、DLLのロード及びアンロードを行うDX_LoadDLLとDX_UnloadDLLが利用できるようになります。+これによりヘッダファイル内の諸定義が切り替わり、DLLのロード及びアンロードを行うLoadDLLとUnloadDLLが利用できるようになります。
***Microsoft Visual C++ [#j5a74d33] ***Microsoft Visual C++ [#j5a74d33]
Line 137: Line 150:
~ダウンロードファイルを解凍後、コンパイルするソースファイルと同一フォルダに以下のファイルをコピー~ ~ダウンロードファイルを解凍後、コンパイルするソースファイルと同一フォルダに以下のファイルをコピー~
|=ファイル |=ファイル名 |=備考 | |=ファイル |=ファイル名 |=備考 |
-|<ヘッダ |<dxlib2.h |<必要な宣言を集約 | +|<ヘッダ |<dxlib.h |<必要な宣言を集約 | 
-|<DLL |<dxlib2.dll |<DLL本体(実行時に必要) | +|<DLL |<dxlib_x32.dll |<DLL本体(実行時に必要) | 
-|<ライブラリ |<dxlib2.lib |<リンク時に必要 |+|<ライブラリ |<dxlib_x32.lib |<リンク時に必要 |
+プロジェクトのプロパティを変更~ +プロジェクトのプロパティを変更~
~構成プロパティ→C/C++→全般→追加のインクルードディレクトリの項目にヘッダファイルの格納フォルダを指定~ ~構成プロパティ→C/C++→全般→追加のインクルードディレクトリの項目にヘッダファイルの格納フォルダを指定~
Line 151: Line 164:
***National Instruments LabVIEW [#mdd5d507] ***National Instruments LabVIEW [#mdd5d507]
-'SampleCode\LabVIEW2009'フォルダにサンプルが同梱されます。ポート・ボーレート・ID等は使用する環境に合わせて適宜修正して使用します。~ +'SampleCode\LabVIEW2010'フォルダにサンプルが同梱されます。ポート・ボーレート・ID等は使用する環境に合わせて適宜修正して使用します。~ 
-[[LabVIEW2009:http://www.ni.com/labview/ja/]]には外部のDLLへアクセスする手段が提供されています。しかしながらDXLIB2そのままの定義ではLabVIEWからは使いづらいため、サンプルプログラムではサブviでラッピングしてDXLIB2.llbにまとめて提供しています。+[[LabVIEW2010:http://www.ni.com/labview/ja/]]には外部のDLLへアクセスする手段が提供されています。しかしながらDXLIBそのままの定義ではLabVIEWからは使いづらいため、サンプルプログラムではサブviでラッピングしてDXLIB.llbにまとめて提供しています。
#ref(vi_frontpanel.png) #ref(vi_frontpanel.png)
#ref(vi_diagram.png) #ref(vi_diagram.png)
 +
***DELPHI [#bdd8ef87] ***DELPHI [#bdd8ef87]
'SampleCode\DELPHI'フォルダにサンプルが同梱されます。ポート・ボーレート・ID等は使用する環境に合わせて適宜修正して使用します。~ 'SampleCode\DELPHI'フォルダにサンプルが同梱されます。ポート・ボーレート・ID等は使用する環境に合わせて適宜修正して使用します。~
-[[DELPHI:http://www.embarcadero.com/jp/p​roducts/delphi]]はPASCAL言語によるPC向け開発ツールであり、外部のDLLへ容易にアクセスする事が出来ます。サンプルに含まれるDXLIB2.pas内にDXLIB2.DLLを動的にロードする関数を用意しましたので、ユーザソースのuses節にdxlib2を追記すればDynamixel Libraryの各APIへ簡便にアクセスできます。+[[DELPHI:http://www.embarcadero.com/jp/p​roducts/delphi]]はPASCAL言語によるPC向け開発ツールであり、外部のDLLへ容易にアクセスする事が出来ます。サンプルに含まれるDXLIB.pas内にdxlib_x32.dllないしdxlib_x64.dllを動的にロードする関数を用意しましたので、ユーザソースのuses節にdxlibを追記すればDynamixel Libraryの各APIへ簡便にアクセスできます。
***Ruby [#r63b1e3e] ***Ruby [#r63b1e3e]
Line 163: Line 177:
[[Ruby:http://www.ruby-lang.org/ja]]はオープンソースの動的なプログラミング言語で、外部のDLLへ簡易にアクセスすることが出来ます。~ [[Ruby:http://www.ruby-lang.org/ja]]はオープンソースの動的なプログラミング言語で、外部のDLLへ簡易にアクセスすることが出来ます。~
  require 'dl/import'   require 'dl/import'
-  molude dxlib2+  molude dxlib
   extend DL::Importer    extend DL::Importer
-   dlload "./dxlib2.dll"+   dlload "./dxlib_x32.dll"
   extern "int DX_OpenPort( char *, long )"    extern "int DX_OpenPort( char *, long )"
  end   end
-  devid = dxlib2.DX_OpenPort( "ポート名", ボーレート )+  devid = dxlib.DX_OpenPort( "ポート名", ボーレート )
***Python [#mc6a5a49] ***Python [#mc6a5a49]
Line 174: Line 188:
[[Python:http://www.python.jp/Zope]]はオープンソースの動的なプログラミング言語で、外部のDLLへ簡易にアクセスすることが出来ます。~ [[Python:http://www.python.jp/Zope]]はオープンソースの動的なプログラミング言語で、外部のDLLへ簡易にアクセスすることが出来ます。~
LinuxでLoadLibraryを呼び出す際はcdllインスタンスを使用します。 LinuxでLoadLibraryを呼び出す際はcdllインスタンスを使用します。
-  dxlib2 = windll.LoadLibrary( "dxlib2.dll" )  # for window +  dxlib = windll.LoadLibrary( "dxlib_x32.dll" )  # for window 
-  dxlib2 = cdll.LoadLibrary( "./dxlib2.so" )  # for linux+  dxlib = cdll.LoadLibrary( "./dxlib.so" )  # for linux
***Java [#ceff395d] ***Java [#ceff395d]
Line 182: Line 196:
[[MATLAB:http://www.mathworks.co.jp/prod​ucts/matlab]]からの使用例を紹介します。ポート・ボーレート・ID等は使用する環境に合わせて適宜修正して下さい。~ [[MATLAB:http://www.mathworks.co.jp/prod​ucts/matlab]]からの使用例を紹介します。ポート・ボーレート・ID等は使用する環境に合わせて適宜修正して下さい。~
+事前準備 +事前準備
-~まずはMATLAB起動後、「ファイル(F)」→「パス設定(H)」でdxlib2.dllとdxlib2.hの格納されたパスを指定します。+~まずはMATLAB起動後、「ファイル(F)」→「パス設定(H)」でdxlib_x32.dllとdxlib.hの格納されたパスを指定します。
+DLLのロード +DLLのロード
- loadlibrary('dxlib2.dll','dxlib2.h');+ loadlibrary('dxlib_x32.dll','dxlib.h','alias','dxlib');
+ポートのオープン +ポートのオープン
-~ロードされたdxlib2のDX_OpenPortを呼出します。関数名の後はポートとボーレートです。 +~ロードされたdxlibのDX_OpenPortを呼出します。関数名の後はポートとボーレートです。 
- devid = calllib('dxlib2','DX_OpenPort','\\.\COM3',1000000); + devid = calllib('dxlib','DX_OpenPort','\\.\COM3',1000000); 
-+TDxErrorCodeの取得 ++TErrorCodeの取得 
-~TDxErrorCodeはポインタで引き渡している為、事前に型宣言をしておきます。値はErr.Valueで取得可能です。+~TErrorCodeはポインタで引き渡している為、事前に型宣言をしておきます。値はErr.Valueで取得可能です。
 Err = libpointer('uint16Ptr', 0);  Err = libpointer('uint16Ptr', 0);
- Ret = calllib('dxlib2', 'DX_Ping', devid, 1, 10, Err);+ Ret = calllib('dxlib', 'DX_Ping', devid, 1, 10, Err);
 fprintf('%x', Err.Value);  fprintf('%x', Err.Value);
+ポートのクローズ +ポートのクローズ
~DX_OpenPortを行ったので、DX_ClosePortを使用してポートを閉じます。 ~DX_OpenPortを行ったので、DX_ClosePortを使用してポートを閉じます。
- calllib('dxlib2','DX_ClosePort',devid);+ calllib('dxlib','DX_ClosePort',devid);
+DLLのアンロード +DLLのアンロード
- unloadlibrary('dxlib2');+ unloadlibrary('dxlib');
***Linux [#w5c096b8] ***Linux [#w5c096b8]
Line 204: Line 218:
ダウンロードファイルを解凍~ ダウンロードファイルを解凍~
+オブジェクトファイルの作成~ +オブジェクトファイルの作成~
-  gcc dxlib2.c -o dxlib2.o+  gcc dxlib.c -o dxlib.o
+共有ライブラリの作成~ +共有ライブラリの作成~
RubyやPython等で使用する場合のみ。~ RubyやPython等で使用する場合のみ。~
-  gcc -fPIC -shared dxlib2.c -o dxlib2.so -lpthread -lrt+  gcc -fPIC -shared dxlib.c -o dxlib.so
+コンパイル~ +コンパイル~
-dxlib2のオブジェクトファイルとC言語ソースを合わせてコンパイルする。~+dxlibのオブジェクトファイルとC言語ソースを合わせてコンパイルする。~
ポート・ボーレート等は使用する環境に合わせて適宜追加・修正する。~ ポート・ボーレート等は使用する環境に合わせて適宜追加・修正する。~
ライブラリは必要に合わせて追加する。~ ライブラリは必要に合わせて追加する。~
-  gcc sample.c dxlib2.o -o sample -lpthread -lrt +  gcc sample.c dxlib.o -o sample
-+Windowsとの相違点~ +
-起動時にattach()、終了時にdetach()を呼び出す。+
**API [#ybae1454] **API [#ybae1454]
-dxlib2.dllは、シリアル通信を意識する必要が無いレベルで、対象IDのデバイスのコントロールテーブルへの読み書き行うAPIを用意しています。+Dynamixel Libraryではシリアル通信を直接意識するコードを記述せずに、対象IDのデバイスのコントロールテーブルへの読み書き行うAPIを用意しています。
-C言語のソースにdxlib2.hをインクルードすれば、APIを使用するのに必要なプロトタイプとマクロの定義がなされます。+C言語のソースにdxlib.hをインクルードすれば、APIを使用するのに必要なプロトタイプとマクロの定義がなされます。
***DX_OpenPort [#zbd2f6ef] ***DX_OpenPort [#zbd2f6ef]
-ライブラリの内部情報を初期化すると同時に指定されたCOMポートをオープンし、ユニークな[[DXDEVICEID>#DXDEVICEID]]を返す。以後はこの[[DXDEVICEID>#DXDEVICEID]]を使用して各APIを使用する。~ +ライブラリの内部情報を初期化すると同時に指定されたCOMポートをオープンし、ユニークな[[TDeviceID>#TDeviceID]]を返す。以後はこの[[TDeviceID>#TDeviceID]]を使用して各APIを使用する。~ 
-複数のCOMポートを使用する場合は、使用するポート毎にDX_OpenPortを行い[[DXDEVICEID>#DXDEVICEID]]を取得しなくてはならない。 +複数のCOMポートを使用する場合は、使用するポート毎にDX_OpenPortを行い[[TDeviceID>#TDeviceID]]を取得しなくてはならない。 
- DXDEVICEID DX_OpenPort (char *pcom, long br);+ TDeviceID DX_OpenPort (char *pcom, long br);
-パラメータ -パラメータ
--char '''*pcom''' --char '''*pcom'''
Line 231: Line 243:
~インターフェースとデバイス間の通信速度[bps]。 ~インターフェースとデバイス間の通信速度[bps]。
-戻り値 -戻り値
---[[DXDEVICEID>#DXDEVICEID]]~+--[[TDeviceID>#TDeviceID]]~
~オープンに成功した場合は0以外の値、失敗した場合は0を返す。~ ~オープンに成功した場合は0以外の値、失敗した場合は0を返す。~
-使用例 -使用例
- DXDEVICEID dev;+ TDeviceID dev;
 // COM10を9600bpsでオープン  // COM10を9600bpsでオープン
 dev = DX_OpenPort ("\\\\.\\COM10", 9600);  dev = DX_OpenPort ("\\\\.\\COM10", 9600);
Line 240: Line 252:
***DX_ClosePort [#w1ab7cbb] ***DX_ClosePort [#w1ab7cbb]
DX_OpenPortで開いたCOMポートを閉じる。~ DX_OpenPortで開いたCOMポートを閉じる。~
-DX_ClosePortが実行された以後は指定された[[DXDEVICEID>#DXDEVICEID]]での通信が行えなくなる。 +DX_ClosePortが実行された以後は指定された[[TDeviceID>#TDeviceID]]での通信が行えなくなる。 
- BOOL DX_ClosePort (DXDEVICEID dvid);+ BOOL DX_ClosePort (TDeviceID dvid);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
-戻り値 -戻り値
--BOOL --BOOL
~クローズに成功した場合はTRUE、失敗した場合はFALSEを返す。 ~クローズに成功した場合はTRUE、失敗した場合はFALSEを返す。
-使用例 -使用例
- DXDEVICEID dev;+ TDeviceID dev;
 // オープン  // オープン
 dev = DX_OpenPort ("\\\\.\\COM10", 9600);  dev = DX_OpenPort ("\\\\.\\COM10", 9600);
Line 259: Line 271:
***DX_ChangeBaudrate [#ba9f52b8] ***DX_ChangeBaudrate [#ba9f52b8]
-既にオープンされている[[DXDEVICEID>#DXDEVICEID]]の通信速度の変更を行う。~+既にオープンされている[[TDeviceID>#TDeviceID]]の通信速度の変更を行う。~
実行すると強制的に受信バッファがクリアされる。 実行すると強制的に受信バッファがクリアされる。
- BOOL DX_ChangeBaudrate (DXDEVICEID dvid, long br);+ BOOL DX_ChangeBaudrate (TDeviceID dvid, long br);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
--long '''br'''~ --long '''br'''~
~新しい通信速度[bps]。 ~新しい通信速度[bps]。
Line 271: Line 283:
~通信速度の変更が成功するとTRUE、失敗するとFALSE。~ ~通信速度の変更が成功するとTRUE、失敗するとFALSE。~
-使用例 -使用例
- DXDEVICEID dev;+ TDeviceID dev;
 // オープン  // オープン
 dev = DX_OpenPort ("\\\\.\\COM10", 9600);  dev = DX_OpenPort ("\\\\.\\COM10", 9600);
Line 283: Line 295:
***DX_Active [#ie20e4a7] ***DX_Active [#ie20e4a7]
-指定された[[DXDEVICEID>#DXDEVICEID]]のポートが使用可能であるかを確認する。~+指定された[[TDeviceID>#TDeviceID]]のポートが使用可能であるかを確認する。~
USB接続等によりインターフェースが取り外し可能な場合に、実際に使用可能であるかを判断するために使用するが、状況によっては正確に判断できない場合もある。 USB接続等によりインターフェースが取り外し可能な場合に、実際に使用可能であるかを判断するために使用するが、状況によっては正確に判断できない場合もある。
- BOOL DX_Active (DXDEVICEID dvid);+ BOOL DX_Active (TDeviceID dvid);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
-戻り値 -戻り値
--BOOL --BOOL
~指定されたdvidが使用可能な場合はTRUE、使用不可の場合はFALSE。 ~指定されたdvidが使用可能な場合はTRUE、使用不可の場合はFALSE。
-使用例 -使用例
- DXDEVICEID dev;+ TDeviceID dev;
 // オープン  // オープン
 dev = DX_OpenPort ("\\\\.\\COM10", 9600);  dev = DX_OpenPort ("\\\\.\\COM10", 9600);
Line 306: Line 318:
***DX_Ping [#v393b505] ***DX_Ping [#v393b505]
PINGインストラクションを使用して対象IDからの応答を確認する。 PINGインストラクションを使用して対象IDからの応答を確認する。
- BOOL DX_Ping (DXDEVICEID dvid, UCHAR id, int timeout, TDxErrorCode *errcode);+ BOOL DX_Ping (TDeviceID dvid, UCHAR id, int timeout, TErrorCode *errcode);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
--UCHAR '''id''' --UCHAR '''id'''
~対象とするID (0~253, 254)。 ~対象とするID (0~253, 254)。
--int '''timeout''' --int '''timeout'''
~受信タイムアウト[ms]。 ~受信タイムアウト[ms]。
---[[TDxErrorCode>#TDxErrorCode]] '''*errcode'''+--[[TErrorCode>#TErrorCode]] '''*errcode'''
~エラーコード。 ~エラーコード。
-戻り値 -戻り値
Line 320: Line 332:
~正常な応答が得られた場合はTRUE、それ以外はFALSE。~ ~正常な応答が得られた場合はTRUE、それ以外はFALSE。~
-使用例 -使用例
- DXDEVICEID   dev; + TDeviceID   dev; 
- TDxErrorCode err;+ TErrorCode err;
 // オープン  // オープン
 dev = DX_OpenPort ("\\\\.\\COM10", 57143);  dev = DX_OpenPort ("\\\\.\\COM10", 57143);
Line 336: Line 348:
***DX_Ping2 [#g16504b3] ***DX_Ping2 [#g16504b3]
PINGインストラクションを使用して不特定の対象の応答を確認する。 PINGインストラクションを使用して不特定の対象の応答を確認する。
- BOOL DX_Ping (DXDEVICEID dvid, UCHAR *id, int timeout, TDxErrorCode *errcode);+ BOOL DX_Ping (TDeviceID dvid, UCHAR *id, int timeout, TErrorCode *errcode);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
--UCHAR '''*id''' --UCHAR '''*id'''
~検索で見つかったIDの保存先。 ~検索で見つかったIDの保存先。
--int '''timeout''' --int '''timeout'''
~受信タイムアウト[ms]。 ~受信タイムアウト[ms]。
---[[TDxErrorCode>#TDxErrorCode]] '''*errcode'''+--[[TErrorCode>#TErrorCode]] '''*errcode'''
~エラーコード。 ~エラーコード。
-戻り値 -戻り値
Line 350: Line 362:
~正常な応答が得られた場合はTRUE、それ以外はFALSE。~ ~正常な応答が得られた場合はTRUE、それ以外はFALSE。~
-使用例 -使用例
- DXDEVICEID   dev; + TDeviceID   dev; 
- TDxErrorCode err;+ TErrorCode err;
 UCHAR        id;  UCHAR        id;
 // オープン  // オープン
Line 367: Line 379:
***DX_ReadByteData [#u7d86432] ***DX_ReadByteData [#u7d86432]
対象IDのコントロールテーブルから1バイトのデータを読み出す。 対象IDのコントロールテーブルから1バイトのデータを読み出す。
- BOOL DX_ReadByteData (DXDEVICEID dvid, UCHAR id, UCHAR adr, UCHAR *result, int timeout, TDxErrorCode *errcode);+ BOOL DX_ReadByteData (TDeviceID dvid, UCHAR id, UCHAR adr, UCHAR *result, int timeout, TErrorCode *errcode);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
--UCHAR '''id''' --UCHAR '''id'''
~対象とするID (0~253)。 ~対象とするID (0~253)。
Line 379: Line 391:
--int '''timeout''' --int '''timeout'''
~受信タイムアウト[ms]。 ~受信タイムアウト[ms]。
---[[TDxErrorCode>#TDxErrorCode]] '''*errcode'''+--[[TErrorCode>#TErrorCode]] '''*errcode'''
~エラーコード。 ~エラーコード。
-戻り値 -戻り値
Line 385: Line 397:
~正常な応答が得られた場合はTRUE、それ以外はFALSE。~ ~正常な応答が得られた場合はTRUE、それ以外はFALSE。~
-使用例 -使用例
- DXDEVICEID   dev; + TDeviceID   dev; 
- TDxErrorCode err;+ TErrorCode err;
 UCHAR dat;  UCHAR dat;
 // オープン  // オープン
Line 400: Line 412:
***DX_WriteByteData [#ma2205f0] ***DX_WriteByteData [#ma2205f0]
対象IDのコントロールテーブルへ1バイトのデータを書き込む。 対象IDのコントロールテーブルへ1バイトのデータを書き込む。
- BOOL DX_WriteByteData (DXDEVICEID dvid, UCHAR id, UCHAR adr, UCHAR dat, int timeout, TDxErrorCode *errcode);+ BOOL DX_WriteByteData (TDeviceID dvid, UCHAR id, UCHAR adr, UCHAR dat, int timeout, TErrorCode *errcode);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
--UCHAR '''id''' --UCHAR '''id'''
~対象とするID (0~253, 254)。 ~対象とするID (0~253, 254)。
Line 412: Line 424:
--int '''timeout''' --int '''timeout'''
~受信タイムアウト[ms]。 ~受信タイムアウト[ms]。
---[[TDxErrorCode>#TDxErrorCode]] '''*errcode'''+--[[TErrorCode>#TErrorCode]] '''*errcode'''
~エラーコード。 ~エラーコード。
-戻り値 -戻り値
Line 419: Line 431:
BROADCASTING IDを指定した場合は応答待ちを行わない。 BROADCASTING IDを指定した場合は応答待ちを行わない。
-使用例 -使用例
- DXDEVICEID   dev; + TDeviceID   dev; 
- TDxErrorCode err;+ TErrorCode err;
 UCHAR dat;  UCHAR dat;
 // オープン  // オープン
Line 436: Line 448:
***DX_ReadWordData [#x202d573] ***DX_ReadWordData [#x202d573]
対象IDのコントロールテーブルから1ワード(2バイト)のデータを読み出す。 対象IDのコントロールテーブルから1ワード(2バイト)のデータを読み出す。
- BOOL DX_ReadWordData (DXDEVICEID dvid, UCHAR id, UCHAR adr, USHORT *result, int timeout, TDxErrorCode *errcode);+ BOOL DX_ReadWordData (TDeviceID dvid, UCHAR id, UCHAR adr, USHORT *result, int timeout, TErrorCode *errcode);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
--UCHAR '''id''' --UCHAR '''id'''
~対象とするID (0~253)。 ~対象とするID (0~253)。
Line 448: Line 460:
--int '''timeout''' --int '''timeout'''
~受信タイムアウト[ms]。 ~受信タイムアウト[ms]。
---[[TDxErrorCode>#TDxErrorCode]] '''*errcode'''+--[[TErrorCode>#TErrorCode]] '''*errcode'''
~エラーコード。 ~エラーコード。
-戻り値 -戻り値
Line 454: Line 466:
~正常な応答が得られた場合はTRUE、それ以外はFALSE。~ ~正常な応答が得られた場合はTRUE、それ以外はFALSE。~
-使用例 -使用例
- DXDEVICEID   dev; + TDeviceID   dev; 
- TDxErrorCode err;+ TErrorCode err;
 USHORT dat;  USHORT dat;
 // オープン  // オープン
Line 469: Line 481:
***DX_WriteWordData [#pcc1b3ce] ***DX_WriteWordData [#pcc1b3ce]
対象IDのコントロールテーブルへ1ワード(2バイト)のデータを書き込む。 対象IDのコントロールテーブルへ1ワード(2バイト)のデータを書き込む。
- BOOL DX_WriteWordData (DXDEVICEID dvid, UCHAR id, UCHAR adr, USHORT dat, int timeout, TDxErrorCode *errcode);+ BOOL DX_WriteWordData (TDeviceID dvid, UCHAR id, UCHAR adr, USHORT dat, int timeout, TErrorCode *errcode);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
--UCHAR '''id''' --UCHAR '''id'''
~対象とするID (0~253, 254)。 ~対象とするID (0~253, 254)。
Line 481: Line 493:
--int '''timeout''' --int '''timeout'''
~受信タイムアウト[ms]。 ~受信タイムアウト[ms]。
---[[TDxErrorCode>#TDxErrorCode]] '''*errcode'''+--[[TErrorCode>#TErrorCode]] '''*errcode'''
~エラーコード。 ~エラーコード。
-戻り値 -戻り値
Line 488: Line 500:
BROADCASTING IDを指定した場合は応答待ちを行わない。 BROADCASTING IDを指定した場合は応答待ちを行わない。
-使用例 -使用例
- DXDEVICEID   dev; + TDeviceID   dev; 
- TDxErrorCode err;+ TErrorCode err;
 // オープン  // オープン
 dev = DX_OpenPort ("\\\\.\\COM10", 1000000);  dev = DX_OpenPort ("\\\\.\\COM10", 1000000);
Line 500: Line 512:
***DX_ReadBlockData [#b8a1ae1e] ***DX_ReadBlockData [#b8a1ae1e]
対象IDのコントロールテーブルから指定サイズのデータを読み出す。 対象IDのコントロールテーブルから指定サイズのデータを読み出す。
- BOOL DX_ReadBlockData (DXDEVICEID dvid, UCHAR id, UCHAR adr, UCHAR size, UCHAR *result, int timeout, TDxErrorCode *errcode);+ BOOL DX_ReadBlockData (TDeviceID dvid, UCHAR id, UCHAR adr, UCHAR size, UCHAR *result, int timeout, TErrorCode *errcode);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
--UCHAR '''id''' --UCHAR '''id'''
~対象とするID (0~253)。 ~対象とするID (0~253)。
Line 514: Line 526:
--int '''timeout''' --int '''timeout'''
~受信タイムアウト[ms]。 ~受信タイムアウト[ms]。
---[[TDxErrorCode>#TDxErrorCode]] '''*errcode'''+--[[TErrorCode>#TErrorCode]] '''*errcode'''
~エラーコード。 ~エラーコード。
-戻り値 -戻り値
Line 520: Line 532:
~正常な応答が得られた場合はTRUE、それ以外はFALSE。~ ~正常な応答が得られた場合はTRUE、それ以外はFALSE。~
-使用例 -使用例
- DXDEVICEID   dev; + TDeviceID   dev; 
- TDxErrorCode err;+ TErrorCode err;
 UCHAR        comp[4];  UCHAR        comp[4];
 dev = DX_OpenPort ("\\\\.\\COM10", 1000000);  dev = DX_OpenPort ("\\\\.\\COM10", 1000000);
Line 537: Line 549:
***DX_WriteBlockData [#fcf55aa0] ***DX_WriteBlockData [#fcf55aa0]
対象IDのコントロールテーブルへ指定サイズのデータを書き込む。 対象IDのコントロールテーブルへ指定サイズのデータを書き込む。
- BOOL DX_WriteBlockData (DXDEVICEID dvid, UCHAR id, UCHAR adr, UCHAR size, UCHAR *dat, int timeout, TDxErrorCode *errcode);+ BOOL DX_WriteBlockData (TDeviceID dvid, UCHAR id, UCHAR adr, UCHAR size, UCHAR *dat, int timeout, TErrorCode *errcode);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
--UCHAR '''id''' --UCHAR '''id'''
~対象とするID (0~253, 254)。 ~対象とするID (0~253, 254)。
Line 551: Line 563:
--int '''timeout''' --int '''timeout'''
~受信タイムアウト[ms]。 ~受信タイムアウト[ms]。
---[[TDxErrorCode>#TDxErrorCode]] '''*errcode'''+--[[TErrorCode>#TErrorCode]] '''*errcode'''
~エラーコード。 ~エラーコード。
-戻り値 -戻り値
Line 558: Line 570:
BROADCASTING IDを指定した場合は応答待ちを行わない。 BROADCASTING IDを指定した場合は応答待ちを行わない。
-使用例 -使用例
- DXDEVICEID   dev; + TDeviceID   dev; 
- TDxErrorCode err;+ TErrorCode err;
 UCHAR        comp[4] = { 0, 1, 200, 200 };  UCHAR        comp[4] = { 0, 1, 200, 200 };
 dev = DX_OpenPort ("\\\\.\\COM10", 1000000);  dev = DX_OpenPort ("\\\\.\\COM10", 1000000);
Line 571: Line 583:
SYNCインストラクションを使用して複数IDへブロック書き込みを行う。~ SYNCインストラクションを使用して複数IDへブロック書き込みを行う。~
書き込まれるデータの構成はユーザに委ねられる。 書き込まれるデータの構成はユーザに委ねられる。
- BOOL DX_WriteSyncData (DXDEVICEID dvid, UCHAR size, UCHAR *dat, TDxErrorCode *errcode);+ BOOL DX_WriteSyncData (TDeviceID dvid, UCHAR size, UCHAR *dat, TErrorCode *errcode);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
--UCHAR '''size''' --UCHAR '''size'''
~パラメータのサイズ。 ~パラメータのサイズ。
--UCHAR '''*dat''' --UCHAR '''*dat'''
~書き込むパラメータの保存先。 ~書き込むパラメータの保存先。
---[[TDxErrorCode>#TDxErrorCode]] '''*errcode'''+--[[TErrorCode>#TErrorCode]] '''*errcode'''
~エラーコード。 ~エラーコード。
-戻り値 -戻り値
Line 588: Line 600:
 #define _POS2 (511)  #define _POS2 (511)
- DXDEVICEID   dev; + TDeviceID   dev; 
- TDxErrorCode err;+ TErrorCode err;
 UCHAR        param[8] = {  UCHAR        param[8] = {
   30,    // アドレス (Goal Position)    30,    // アドレス (Goal Position)
Line 612: Line 624:
***DX_TxPacket [#r051327a] ***DX_TxPacket [#r051327a]
任意のインストラクションパケットを送信する。 任意のインストラクションパケットを送信する。
- int DX_TxPacket (DXDEVICEID dvid, UCHAR cID, TInstruction cInst, UCHAR *pParam, int iLength, TDxErrorCode *errcode);+ int DX_TxPacket (TDeviceID dvid, UCHAR cID, TInstruction cInst, UCHAR *pParam, int iLength, TErrorCode *errcode);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
--UCHAR '''cID''' --UCHAR '''cID'''
~対象とするID (0~254)。 ~対象とするID (0~254)。
Line 624: Line 636:
--int '''iLength'''~ --int '''iLength'''~
~送信するパラメータのサイズ。 ~送信するパラメータのサイズ。
---[[TDxErrorCode>#TDxErrorCode]] '''*errcode'''+--[[TErrorCode>#TErrorCode]] '''*errcode'''
~エラーコード。 ~エラーコード。
-戻り値 -戻り値
~インターフェースより送信が行われた場合は送信バイト数、それ以外は0。 ~インターフェースより送信が行われた場合は送信バイト数、それ以外は0。
-使用例 -使用例
- DXDEVICEID   dev; + TDeviceID   dev; 
- TDxErrorCode err;+ TErrorCode err;
 UCHAR        param[2] = {  UCHAR        param[2] = {
   25,    // アドレス (LED)    25,    // アドレス (LED)
Line 645: Line 657:
ステータスパケットを受信する。~ ステータスパケットを受信する。~
基本的にDX_TxPacketとペアで使用する。ステータスパケットが得られない状況で使用するとタイムアウトするまで返らない。 基本的にDX_TxPacketとペアで使用する。ステータスパケットが得られない状況で使用するとタイムアウトするまで返らない。
- int DX_RxPacket (DXDEVICEID dvid, UCHAR *pRcv, int sz, int readsize, int *pLength, int timeout, TDxErrorCode *errcode);+ int DX_RxPacket (TDeviceID dvid, UCHAR *pRcv, int sz, int readsize, int *pLength, int timeout, TErrorCode *errcode);
-パラメータ -パラメータ
---[[DXDEVICEID>#DXDEVICEID]] '''dvid''' +--[[TDeviceID>#TDeviceID]] '''dvid''' 
-~DX_OpenPortで開いた際の[[DXDEVICEID>#DXDEVICEID]]。+~DX_OpenPortで開いた際の[[TDeviceID>#TDeviceID]]。
--UCHAR '''*pRcv''' --UCHAR '''*pRcv'''
~受信バッファ。~ ~受信バッファ。~
Line 660: Line 672:
--int '''timeout''' --int '''timeout'''
~受信タイムアウト[ms]。 ~受信タイムアウト[ms]。
---[[TDxErrorCode>#TDxErrorCode]] '''*errcode'''+--[[TErrorCode>#TErrorCode]] '''*errcode'''
~エラーコード。 ~エラーコード。
-戻り値 -戻り値
Line 666: Line 678:
-使用例 -使用例
 int          i, len;  int          i, len;
- DXDEVICEID   dev; + TDeviceID   dev; 
- TDxErrorCode err;+ TErrorCode err;
 UCHAR        param[2] = {  UCHAR        param[2] = {
   25,    // アドレス (LED)    25,    // アドレス (LED)
Line 686: Line 698:
 };  };
***DXLIB2のオリジナルな定義 [#af9ca340] ***DXLIB2のオリジナルな定義 [#af9ca340]
-&aname(DXDEVICEID); +&aname(TDeviceID); 
-:DXDEVICEID | ''(unsigned int|unsigned long long)''~+:TDeviceID | ''(unsigned int|unsigned long long)''~
インターフェース毎に割り当てられるユニークな値。DX_OpenPortにて自動的に生成される。 インターフェース毎に割り当てられるユニークな値。DX_OpenPortにて自動的に生成される。
&aname(TInstruction);~ &aname(TInstruction);~
Line 701: Line 713:
INST_SYNC_WRITE~ INST_SYNC_WRITE~
INST_SYNG_REG_WRITE INST_SYNG_REG_WRITE
-&aname(TDxErrorCode); +&aname(TErrorCode); 
-:TDxErrorCode | ''(USHORT)''~+:TErrorCode | ''(USHORT)''~
APIの内部処理とステータスパケットに含まれる16ビットのエラーコード。上位8ビットはAPI内部で検出したエラー、下位8ビットはステータスパケットに含まれるエラーフラグが割り当てられている。~ APIの内部処理とステータスパケットに含まれる16ビットのエラーコード。上位8ビットはAPI内部で検出したエラー、下位8ビットはステータスパケットに含まれるエラーフラグが割り当てられている。~
|CENTER:|LEFT:|LEFT:|c |CENTER:|LEFT:|LEFT:|c
|bit|macro name| |h |bit|macro name| |h
-|15|ERR_INVALID_DEVID|使用できないDXDEVICEID |+|15|ERR_INVALID_DEVID|使用できないTDeviceID |
|14|ERR_INVALID_ID|指定できないID | |14|ERR_INVALID_ID|指定できないID |
|13|ERR_DIFF_ID|異なるIDからの応答 | |13|ERR_DIFF_ID|異なるIDからの応答 |


Front page   Diff ReloadPrint View   Page list Search Recent changes   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)