シングルハンドル系ダイレクトリードAPI
ビットデータ
INT WINAPI ReadDeviceBit(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* owData,WORD wCount);
16ビットデータ
INT WINAPI ReadDevice16(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* owData,WORD wCount);
32ビットデータ
INT WINAPI ReadDevice32(LPCSTR sNodeName,LPCSTR sDeviceName,DWORD* odwData,WORD wCount);
16ビットBCDデータ
INT WINAPI ReadDeviceBCD16(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* owData,WORD wCount);
32ビットBCDデータ
INT WINAPI ReadDeviceBCD32(LPCSTR sNodeName,LPCSTR sDeviceName,DWORD* odwData,WORD wCount);
単精度浮動小数点データ
INT WINAPI ReadDeviceFloat(LPCSTR sNodeName,LPCSTR sDeviceName,FLOAT* oflData,WORD wCount);
倍精度浮動小数点データ
INT WINAPI ReadDeviceDouble(LPCSTR sNodeName,LPCSTR sDeviceName,DOUBLE* odbData,WORD wCount);
文字列データ
INT WINAPI ReadDeviceStr(LPCSTR sNodeName,LPCSTR sDeviceName,LPSTR psData,WORD wCount);
汎用データ
INT WINAPI ReadDevice(LPCSTR sNodeName,LPCSTR sDeviceName,LPVOID pData,WORD wCount,WORD wAppKind);
汎用データ(Variant型)
INT WINAPI ReadDeviceVariant(LPCSTR sNodeName,LPCSTR sDeviceName,LPVARIANT pData,WORD wCount,WORD wAppKind);
シングルハンドル系ダイレクトライトAPI
ビットデータ
INT WINAPI WriteDeviceBit(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* pwData,WORD wCount);
16ビットデータ
INT WINAPI WriteDevice16(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* pwData,WORD wCount);
32ビットデータ
INT WINAPI WriteDevice32(LPCSTR sNodeName,LPCSTR sDeviceName,DWORD* pdwData,WORD wCount);
16ビットBCDデータ
INT WINAPI WriteDeviceBCD16(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* pwData,WORD wCount);
32ビットBCDデータ
INT WINAPI WriteDeviceBCD32(LPCSTR sNodeName,LPCSTR sDeviceName,DWORD* pdwData,WORD wCount);
単精度浮動小数点データ
INT WINAPI WriteDeviceFloat(LPCSTR sNodeName,LPCSTR sDeviceName,FLOAT* pflData,WORD wCount);
倍精度浮動小数点データ
INT WINAPI WriteDeviceDouble(LPCSTR sNodeName,LPCSTR sDeviceName,DOUBLE* pdbData,WORD wCount);
文字列データ
INT WINAPI WriteDeviceStr(LPCSTR sNodeName,LPCSTR sDeviceName,LPCSTR psData,WORD wCount);
汎用データ
INT WINAPI WriteDevice(LPCSTR sNodeName,LPCSTR sDeviceName,LPVOID pData,WORD wCount,WORD wAppKind);
汎用データ(Variant型)
INT WINAPI WriteDeviceVariant(LPCSTR sNodeName,LPCSTR sDeviceName,LPVARIANT pData,WORD wCount,WORD wAppKind);
シングルハンドル系グループシンボルリードAPI
グループシンボル
INT WINAPI ReadSymbol(LPCSTR sNodeName,LPCSTR sSymbolName,LPVOID oReadBufferData);
グループシンボル(Variant型)
INT WINAPI ReadSymbolVariant(LPCSTR sNodeName,LPCSTR sSymbolName,LPVARIANT pData);
シングルハンドル系グループシンボルライトAPI
グループシンボル
INT WINAPI WriteSymbol(LPCSTR sNodeName,LPCSTR sSymbolName,LPVOID pWriteBufferData);
グループシンボル(Variant型)
INT WINAPI WriteSymbolVariant(LPCSTR sNodeName,LPCSTR sSymbolName,LPVARIANT pData);
sNodeName : 局名は「#WinGP」固定になります。
sDeviceName: GP-Pro EXで登録されたシンボル名、またはデバイスアドレスを直接記述します。
例1)シンボルで指定する場合
"SWITCH1"
例2)デバイスアドレスを直接指定する場合
"M100"
シンボルで指定する場合、各関数で指定できるデータタイプは次のとおりです。
Function |
シンボルのデータタイプ |
|||||||
---|---|---|---|---|---|---|---|---|
Bit |
16Bit |
32Bit |
Float |
Double |
String |
|||
符号付き / 符号なし / 16進 |
BCD |
符号付き / 符号なし / 16進 |
BCD |
|||||
XXXDeviceBit |
Ο |
- |
- |
- |
- |
- |
- |
- |
XXXDevice16 |
- |
Ο |
- |
- |
- |
- |
- |
- |
XXXDevice32 |
- |
- |
- |
Ο |
- |
- |
- |
- |
XXXDeviceBCD16 |
- |
- |
Ο |
- |
- |
- |
- |
- |
XXXDeviceBCD32 |
- |
- |
- |
- |
Ο |
- |
- |
- |
XXXDeviceFloat |
- |
- |
- |
- |
- |
Ο |
- |
- |
XXXDeviceDouble |
- |
- |
- |
- |
- |
- |
Ο |
- |
XXXDeviceStr |
- |
- |
- |
- |
- |
- |
- |
Ο |
XXXDevice |
Ο |
Ο |
Ο |
Ο |
Ο |
Ο |
Ο |
Ο |
pxxData : Read/Writeデータへのポインタ
値の読み込み先または書き込み先となるデータへのポインタを指定します。各関数に応じたデータ型のポインタを指定してください。
アクセスするデータの種類 |
引数のタイプ |
---|---|
ビットデータ |
WORD * pwData |
16ビットデータ |
WORD * pwData |
32ビットデータ |
DWORD * pdwData |
16ビットBCDデータ |
WORD * pwData |
32ビットBCDデータ |
DWORD * pdwData |
単精度浮動小数点データ |
FLOAT * pflData |
倍精度浮動小数点データ |
DOUBLE * pdbData |
文字列データ |
LPTSTR psData |
汎用データ |
LPVOID pData |
汎用データ (VB用) |
LPVARIANT pData |
wCount : Read/Writeデータ数
Read/WriteDeviceStr関数の場合、文字列データのデータ数は1バイト単位です。シンボルが16ビット幅のデバイスの場合は2文字、32ビット幅のデバイスの場合は4文字単位で指定してください。
読み書きできる最大リード数/ライト数は下表のとおりです。
アクセスするデータの種類 |
リード時/ライト時 |
---|---|
ビットデータ |
255 |
16ビットデータ |
1020 |
32ビットデータ |
510 |
16ビットBCDデータ |
1020 |
32ビットBCDデータ |
510 |
単精度浮動小数点データ |
510 |
倍精度浮動小数点データ |
255 |
文字列データ |
1020文字(半角) |
wAppKind : データタイプ値
データタイプ値の指定方法は値を直接指定する方法と、定義名で指定する方法があります。詳細は以下を参照してください。
38.9.5.1 データ型
Read/WriteDevice関数は、データタイプをパラメータで指定するので、動的にデータタイプを変更できます。
戻り値
正常終了: 0
異常終了 : エラーコード
補足
Read/WriteDeviceBit関数を使用する場合
pwDataには、wCount数分だけD0ビットから詰めて格納します。
例: wCountが20の場合
|
F |
E |
D |
C |
B |
A |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PwData |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
PwData+1 |
* |
* |
* |
* |
* |
* |
* |
* |
* |
* |
* |
* |
20 |
19 |
18 |
17 |
連続する複数ビットデータを扱う場合
Read/WriteDeviceBitよりRead/WriteDevice16やRead/WriteDevice32で16/32ビット単位のRead/Writeの方が効率的です。
「*」には不定な値が入ります。アプリケーションプログラムでマスクしてください。
Read/WriteDeviceBCD16/32関数を使用する場合
接続機器内部で、データをBCDとして扱っている場合は、これらの関数を使用します。ただし、この関数と受け渡しするデータ(pxxDataの内容)は、BCDではなくバイナリデータとなります。
(「WinGP SDK」内部でBCD変換を行っています。)負の数は扱えません。
関数名 |
10 進表現 |
16 進表現 |
---|---|---|
Read/WriteDeviceBCD16 |
0 ~ 9999 |
0000 ~ 270F |
Read/WriteDeviceBCD32 |
0 ~ 99999999 |
00000000 ~ 05F5E0FF |
文字列データ関数を使用する場合
文字列データを受け取る変数は、受け取れるだけの十分なデータ領域を確保してください。