Direct read API of single handle system
Bit Data
INT WINAPI ReadDeviceBit(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* owData,WORD wCount);
16 bit data
INT WINAPI ReadDevice16(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* owData,WORD wCount);
32 bit data
INT WINAPI ReadDevice32(LPCSTR sNodeName,LPCSTR sDeviceName,DWORD* odwData,WORD wCount);
16-bit BCD data
INT WINAPI ReadDeviceBCD16(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* owData,WORD wCount);
32-bit BCD data
INT WINAPI ReadDeviceBCD32(LPCSTR sNodeName,LPCSTR sDeviceName,DWORD* odwData,WORD wCount);
Single float number data
INT WINAPI ReadDeviceFloat(LPCSTR sNodeName,LPCSTR sDeviceName,FLOAT* oflData,WORD wCount);
Double float number data
INT WINAPI ReadDeviceDouble(LPCSTR sNodeName,LPCSTR sDeviceName,DOUBLE* odbData,WORD wCount);
Text data
INT WINAPI ReadDeviceStr(LPCSTR sNodeName,LPCSTR sDeviceName,LPSTR psData,WORD wCount);
General data
INT WINAPI ReadDevice(LPCSTR sNodeName,LPCSTR sDeviceName,LPVOID pData,WORD wCount,WORD wAppKind);
General data (Variant Type)
INT WINAPI ReadDeviceVariant(LPCSTR sNodeName,LPCSTR sDeviceName,LPVARIANT pData,WORD wCount,WORD wAppKind);
Single handle system API
Bit Data
INT WINAPI WriteDeviceBit(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* pwData,WORD wCount);
16 bit data
INT WINAPI WriteDevice16(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* pwData,WORD wCount);
32 bit data
INT WINAPI WriteDevice32(LPCSTR sNodeName,LPCSTR sDeviceName,DWORD* pdwData,WORD wCount);
16-bit BCD data
INT WINAPI WriteDeviceBCD16(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* pwData,WORD wCount);
32-bit BCD data
INT WINAPI WriteDeviceBCD32(LPCSTR sNodeName,LPCSTR sDeviceName,DWORD* pdwData,WORD wCount);
Single float number data
INT WINAPI WriteDeviceFloat(LPCSTR sNodeName,LPCSTR sDeviceName,FLOAT* pflData,WORD wCount);
Double float number data
INT WINAPI WriteDeviceDouble(LPCSTR sNodeName,LPCSTR sDeviceName,DOUBLE* pdbData,WORD wCount);
Text data
INT WINAPI WriteDeviceStr(LPCSTR sNodeName,LPCSTR sDeviceName,LPCSTR psData,WORD wCount);
General data
INT WINAPI WriteDevice(LPCSTR sNodeName,LPCSTR sDeviceName,LPVOID pData,WORD wCount,WORD wAppKind);
General data (Variant Type)
INT WINAPI WriteDeviceVariant(LPCSTR sNodeName,LPCSTR sDeviceName,LPVARIANT pData,WORD wCount,WORD wAppKind);
Group Symbol Read API for Single Handle
Group Symbol
INT WINAPI ReadSymbol(LPCSTR sNodeName,LPCSTR sSymbolName,LPVOID oReadBufferData);
Group Symbol (Variant Type)
INT WINAPI ReadSymbolVariant(LPCSTR sNodeName,LPCSTR sSymbolName,LPVARIANT pData);
Group Symbol Write API for Single Handle
Group Symbol
INT WINAPI WriteSymbolD(LPCSTR sNodeName,LPCSTR sSymbolName,LPVOID pWriteBufferData);
Group Symbol (Variant Type)
INT WINAPI WriteSymbolVariantD(LPCSTR sNodeName,LPCSTR sSymbolName,LPVARIANT pData);
sNodeName: The station name is fixed to #WinGP.
sDeviceName: Directly describes the symbol names and device addresses registered in GP-Pro EX.
For example, use a symbol
"SWITCH1"
For example, directly specify the device address
"M100"
The following table shows the data types that you can specify when using symbols in each function.
Function |
Symbol data type |
|||||||
---|---|---|---|---|---|---|---|---|
Bit |
16 Bit |
32 Bit |
Float |
Double |
String | |||
Signed/ Unsigned/ Hexadecimal |
BCD |
Signed/ Unsigned/ Hexadecimal |
BCD |
|||||
XXXDeviceBit |
O |
— |
— |
— |
— |
— |
— |
— |
XXXDevice16 |
— |
O |
— |
— |
— |
— |
— |
— |
XXXDevice32 |
— |
— |
— |
O |
— |
— |
— |
— |
XXXDeviceBCD16 |
— |
— |
O |
— |
— |
— |
— |
— |
XXXDeviceBCD32 |
— |
— |
— |
— |
O |
— |
— |
— |
XXXDeviceFloat |
— |
— |
— |
— |
— |
O |
— |
— |
XXXDeviceDouble |
— |
— |
— |
— |
— |
— |
O |
— |
XXXDeviceStr |
— |
— |
— |
— |
— |
— |
— |
O |
XXXDevice |
O |
O |
O |
O |
O |
O |
O |
O |
pxxData: Pointer for read/write data
Defines the destination pointer for values that are read or values that are written. For each function, please define the corresponding data format pointer.
Data types for access |
Argument type |
---|---|
Bit Data |
WORD * pwData |
16 bit data |
WORD * pwData |
32 bit data |
DWORD * pdwData |
16-bit BCD data |
WORD * pwData |
32-bit BCD data |
DWORD * pdwData |
Single float number data |
FLOAT * pflData |
Double float number data |
DOUBLE * pdbData |
Text data |
LPTSTR psData |
General data |
LPVOID pData |
General data (for VB) |
LPVARIANT pData |
wCount: Number of read/write data
For the Read/WriteDeviceStr function, the amount of text data is expressed in single-byte units. If the symbol refers to a 16-bit device, use two characters to specify the number. If it refers to a 32-bit device, use four characters.
The following table shows the maximum amount of read/write data.
Data types for access |
Read/Write |
---|---|
Bit Data |
255 |
16 bit data |
1020 |
32 bit data |
510 |
16-bit BCD data |
1020 |
32-bit BCD data |
510 |
Single float number data |
510 |
Double float number data |
255 |
Text data |
1020 characters (Single-byte) |
wAppKind: Data Type Value
To specify the Data Type Value, you can either directly specify the value or specify using a constant name. For more details, please refer to the following.38.9.5.1 Data Type
The Read/WriteDevice function specifies the data type with parameters. It allows you to change the data type dynamically.
Return value (NULL)
Normal end: 0
Abnormal end: Error Code
Supplementary
When using Read/WriteDeviceBit function
pwData stores the same amount of data as in wCount starting from D0 bit.
For example, when 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 |
Handling sequential multiple bit data
it is more efficient to read/write in 16/32 bits using Read/WriteDevice16 and Read/WriteDevice32 than using Read/WriteDeviceBit.
"*" contains undefined values. Mask the value using an application program.
When using Read/WriteDeviceBCD16/32 functions
Use these functions for handling data as BCD internally in the device/PLC. Note that data (pxxData contents) to be sent to/received from the functions is binary data, not BCD.
BCD conversion is performed in the [WinGP SDK]. Negative numbers cannot be handled.
Function Name |
Decimal notation |
Hexadecimal notation |
---|---|---|
Read/WriteDeviceBCD16 |
0 to 9999 |
0000 to 270F |
Read/WriteDeviceBCD32 |
0 to 99999999 |
00000000 to 05F5E0FF |
When using the text data function
For variables to receive text data, secure sufficient data space to receive the data.