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.