Can you show me an example of accessing DRF API from MS VC++ environment ?
Here is a VC++ example.
//--------------------------------------------------------------------------
// drf_vc.cpp : a console application accessing DRF API via dll interface.
//
// On environment such as Visual Studio C++ 2008, go to Project - properties,
// under Linker - Input, Additional Dependencies, specify
// C:\LonWorks\types\lib\lcadrf32.lib
//
// Then copy c:\lonworks\bin\lcadrf32.dll to the output folder
// of your project where your executable will be generated
//--------------------------------------------------------------------------
#include "stdafx.h"
#include
// Include header file
#include "C:\Lonworks\Types\Include\lcadrf.h"
#define MAX_DIR_LEN 256
#define MAX_NVCPNAME_LEN 256
int _tmain(int argc, _TCHAR* argv[])
{
// LdrfOpenCatalog()
PLdrfFileInfo pPLdrfFileInfo;
eLdrfErrCodes retCode;
retCode = LdrfOpenCatalog("c:\\lonworks\\types", T, &pPLdrfFileInfo);
printf("LdrfOpenCatalog() returned %d\n", retCode);
if (retCode == LDRF_ERR_NONE)
printf("Return code = LDRF_ERR_NONE\n\n");
// LdrfCatalogGetFile()
TUShort pDirIndex = 0;
TUByte pMatchScope = 0;
PUByteArray pProgID = 0;
TUShort pMajorVersion = 0;
TUByte pMinorVersion = 0;
TULong pLocale = 0;
char pFileName[MAX_DIR_LEN];
pFileName[0] = '\0';
TUShort pLength = MAX_DIR_LEN;
retCode = LdrfCatalogGetFile(pPLdrfFileInfo, LDRF_TYPE, 1, &pMatchScope,
&pProgID, &pDirIndex, &pMajorVersion, &pMinorVersion,
&pLocale, pFileName, &pLength);
printf("LdrfCatalogGetFile() returned %d\n", retCode);
// LdrfOpenFile()
retCode = LdrfOpenFile(pFileName, LDRF_TYPE, pMajorVersion, F, &pPLdrfFileInfo);
printf("LdrfOpenFile() returned %d\n", retCode);
// LdrfGetNVT()
int Index = 11; // NV Index value
PLdrfTypeTree LdrfTypeTree;
LdrfGetNVT(pPLdrfFileInfo, Index, &LdrfTypeTree);
// LdrfScanTypeTree()
TUShort pTypeSize;
TBool pHasRefs ;
LdrfScanTypeTree(LdrfTypeTree, &pTypeSize, &pHasRefs);
// LdrfReadTypeTreeNode()
TUShort unTypeOffset, unLength;
char cCPTName[MAX_NVCPNAME_LEN];
TUByte ucResNmSel, ucResCmtSel, ucResUntSel;
TULong ulResNmIdx, ulResCmtIdx, ulResUntIdx;
TNVTType DataType;
bool bErrNone = false;
LdrfReadTypeTreeNode(LdrfTypeTree, &DataType, &unTypeOffset,
&pTypeSize, cCPTName, &unLength,
&ucResNmSel, &ulResNmIdx, &ucResCmtSel,
&ulResCmtIdx, &ucResUntSel, &ulResUntIdx);
// LdrfGetEnumDetails()
TUByte ucEnumSel;
TUShort unEnumIdx;
long plMinValid;
long plMaxValid;
LdrfGetEnumDetails(LdrfTypeTree, &ucEnumSel, &unEnumIdx, &plMinValid, &plMaxValid);
// LdrfSelectEnumSet()
char cTagName[65];
TUShort pTagLen = 0;
LdrfSelectEnumSet(pPLdrfFileInfo, unEnumIdx, cTagName, &pTagLen, pFileName, &pLength);
// LdrfGetEnumMember()
short nValue = 0; // Initial value.
TUByte ucSel;
TULong ulSelInd;
char cString[MAX_NVCPNAME_LEN];
printf("\nPrint EnumMember\n");
while (LdrfGetEnumMember(pPLdrfFileInfo, (TByte)nValue++, cString,
&unLength, &ucSel, &ulSelInd) == 0)
{
printf("%s\n", cString);
}
// LdrfCloseFile()
LdrfCloseFile(pPLdrfFileInfo);
// LdrfCloseCatalog()
LdrfCloseCatalog(pPLdrfFileInfo);
printf("Done.\n");
return 0;
}
- LNS 3.0
- LNS Turbo Edition (Ver 3.2)
- Resource File Editor
Comments