コンテンツにスキップ
関数 > モーター制御関数 >

PmcmSetEncoder

機能

エンコーダカウンタ値の設定をします。

書式

INT PmcmSetEncoder(
    WORD wID,
    WORD wAxis,
    PLONG plData
);

パラメータ

wID

ボードのID番号を指定します。

言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0/VBA GCC
WORD unsigned short ushort Short Integer uint16_t

wAxis

設定する軸を指定します。複数の軸を指定することができます。

設定値 内容
PMCM_AXIS_X X軸
PMCM_AXIS_Y Y軸
言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0/VBA GCC
WORD unsigned short ushort Short Integer uint16_t

plData

カウンタ値が格納されているバッファへのポインタを指定します。
設定範囲は-134217728 ~ +134217727

バッファは2軸分用意してください

言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0/VBA GCC
PLONG long* int Integer Long int32_t*

戻り値

関数が正常に終了した場合は0(PMCM_RESULT_SUCCESS)が返ります。
正常に終了しなかった場合は0以外が返りますので、その場合はエラーコードを参照してください。

言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0/VBA GCC
INT int int Integer Long int32_t

備考

複数軸同時に設定しない場合でも、カウンタ値バッファは2軸分用意し、配列の先頭アドレスを関数へ設定するようにしてください。

long lData[2]; 2軸分用意
lData[0] X軸のカウンタ値
lData[1] Y軸のカウンタ値

使用例

IDが0のボードの、X軸のエンコーダカウンタ値を1000、Y軸のエンコーダカウンタ値を-1000に設定します。

C/C++

int nResult;
WORD wAxis;
long lData[2];
wAxis = PMCM_AXIS_X + PMCM_AXIS_Y;
lData[0] = 1000;
lData[1] = -1000;
nResult = PmcmSetEncoder(0, wAxis, lData);

C++/CLI

int result;
unsigned short axis;
long data[2];
axis = PMCM_AXIS_X + PMCM_AXIS_Y;
data[0] = 1000;
data[1] = -1000;
result = PmcmSetEncoder(0, axis, data);

C#

int result;
ushort axis;
int[] data = new int[2];
axis = Pmcm.PMCM_AXIS_X + Pmcm.PMCM_AXIS_Y;
data[0] = 1000;
data[1] = -1000;
result = Pmcm.SetEncoder(0, axis, data);

VB(.NET2002以降)

Dim result As Integer
Dim axis As Short
Dim data(1) As Integer
axis = PMCM_AXIS_X + PMCM_AXIS_Y
data(0) = 1000
data(1) = -1000
result = PmcmSetEncoder(0, axis, data)

VB6.0/VBA

Dim lngResult As Long
Dim intAxis As Integer
Dim lngData(1) As Long
intAxis = PMCM_AXIS_X + PMCM_AXIS_Y
lngData(0) = 1000
lngData(1) = -1000
lngResult = PmcmSetEncoder(0, intAxis, lngData(0))

GCC

int32_t result;
uint16_t axis;
int32_t data[2];
axis = PMCM_AXIS_X + PMCM_AXIS_Y;
data[0] = 1000;
data[1] = -1000;
result = PmcmSetEncoder(0, axis, data);