Follow

Show me an example of accessing DRF API from MS VC++ environment. (KB274)

Question Detail

Can you show me an example of accessing DRF API from MS VC++ environment ?

Solution

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;
}

Related Products
  • LNS 3.0
  • LNS Turbo Edition (Ver 3.2)
  • Resource File Editor
Was this article helpful?
0 out of 0 found this helpful
Have more questions? Submit a request

Comments

Powered by Zendesk