All LayGO API function names and argument sequences are identical to those documented in the C language API. For instance, the code to open a CID which might be written in C as:
LCid cid; cid = lgo_Open("PHYS0"); if (cid < 0) { PostOpenError(cid); } else { ConnectCid(cid); }
translates directly into the following Visual Basic code:
Dim cid As Integer cid = lgo_Open("PHYS0") If cid < 0 Then PostOpenError cid Else ConnectCid cid End If
For functions which take C pointer types such as LDataBuffer
or
LCtlBuffer
, substitute the first element of an array of
Byte
. The C code to read data:
unsigned char buffer[1024]; LResult result; result = lgo_Read(cid, buffer, 1024); if (result > 0) { ProcessData(buffer, result); } else if (result == lgo_ERROR_EVENT_WAITING) { ReadEvent(); }
becomes the Visual Basic code:
Dim buffer(1024) As Byte Dim result As Integer result = lgo_Read(cid, buffer(0), 1024) If result > 0 Then ProcessData buffer, result ElseIf result = ERROR_EVENT_WAITING Then ReadEvent End If
The 2nd parameter of lgo_Read() is declared as "pass by reference".
So an argument of buffer(0)
means that Visual Basic will pass the
address of the first element of the array, which is what the C
language function expects.
Where a NULL
pointer would be used in C, substitute the manifest
constant vbNullString
:
LResult result; result = lgo_ConnectRequest(cid, NULL, 0);
becomes
Dim result As Integer result = lgo_ConnectRequest(cid, vbNullString, 0)
All the other C integral types which are used as function arguments or return
values are mapped to the Visual Basic Integer
type,
with the exception of LUserId
which is mapped to type
Long
.