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 WriteSymbol(LPCSTR sNodeName,LPCSTR sSymbolName,LPVOID pWriteBufferData);
Group Symbol (Variant Type)
INT WINAPI WriteSymbolVariant(LPCSTR sNodeName,LPCSTR sSymbolName,LPVARIANT pData);
sNodeName: The station name is fixed as "WinGP".
sDeviceName: Directly describes the symbol names and device addresses registered in GP-Pro EX.
Example 1) Use a symbol
"SWITCH1"
Example 2) 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 single-byte characters |
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
Problem: 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 content) sent to or received from the function is binary data, not BCD.
BCD conversion is run internally in the WinGP SDK. Cannot handle negative numbers.
Function Name |
Decimal notation |
Hexadecimal notation |
---|---|---|
Read/WriteDeviceBCD16 |
0...9999 |
0000 to 270F |
Read/WriteDeviceBCD32 |
0...99999999 |
00000000 to 05F5E0FF |
When using the text data function
For variables to receive text data, secure sufficient data space to receive the data.