打印

关于LABVIEW的VI生成C代码

[复制链接]
2713|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
wangjiahao88|  楼主 | 2016-8-20 11:34 | 只看该作者
LABVIEW的前面板。

以下是LABVIEW的程序。

使用特权

评论回复
板凳
wangjiahao88|  楼主 | 2016-8-20 11:34 | 只看该作者
这个是G代码图。
很简单的一个应用。只是两个数字相加。类型是U8.

2.png (10.02 KB )

2.png

使用特权

评论回复
地板
wangjiahao88|  楼主 | 2016-8-20 11:35 | 只看该作者
执行后,生成了以下几个文件。

3.png (16.71 KB )

3.png

使用特权

评论回复
5
wangjiahao88|  楼主 | 2016-8-20 11:36 | 只看该作者
/****************************************************************************************
*        LabVIEW (TM) Code Generator 15.0.1
*        (C) Copyright 1997-2011 by National Instruments Corp.
*        All rights reserved.
*        Delimited VI name: 未命名 1.vi
*        Generated from: C:\Users\Administrator\Desktop\新建文件夹\未命名 1.vi
*  Generated UI: false
*  Generated Debug Info: false
*  Generated Serial Only: true
*  Generated Stack Variables: false
*  Generated Guard Code: false
*  Generated Interrupt Code: false
*  Generated C Function Calls: true
*  Generated Integer Only : false
*  Generated Expression Folding : false
*  Generated memory model: dynamic
*****************************************************************************************/
#define LV_MAIN
#include "LVCGenIncludes.h"
#include "A________1Lib.h"
#if CGEN_VERSION != 15000
#error CGenerator version mismatch
#endif
/* VI heap data */
struct _A________1_heap {
        uInt8 by_INPUT1;
        uInt8 by____x_y;
        uInt8 by_INPUT2;
} _DATA_SECTION __A________1_heap; /* heap */

static struct _A________1_heap _DATA_SECTION *heap = &__A________1_heap; /* heap */



/****** Clean Up Uninitialized Left Shift Registers before program exits to prevent memory leaks **********/


void _TEXT_SECTION A________1_CleanupLSRs(void);
void _TEXT_SECTION A________1_CleanupLSRs(void) {
}


/****** Add Sub VI Instance Data to global list **********/


void _TEXT_SECTION A________1_AddSubVIInstanceData(void);
void _TEXT_SECTION A________1_AddSubVIInstanceData(void) {
}


/****** Allocate VI Constants  **********/


void _TEXT_SECTION A________1_AddVIGlobalConstants(void);
void _TEXT_SECTION A________1_AddVIGlobalConstants(void) {
}


/****** VI Constant Initialization function **********/


void _TEXT_SECTION A________1_InitVIConstantList(void);
void _TEXT_SECTION A________1_InitVIConstantList(void) {
}


/****** Block diagram code **********/


static uInt8 INPUT1__2B = 0 ;
static DataType dtINPUT1__2B = uCharDataType;
static uInt8 OUTPUT__48_init_ = 0 ;
static uInt8* OUTPUT__48 = &OUTPUT__48_init_;
static DataType dtOUTPUT__48 = uCharDataType;
static uInt8 INPUT2__63 = 0 ;
static DataType dtINPUT2__63 = uCharDataType;
extern eRunStatus A________1_Run(        )
{
        Boolean bRunToFinish = true;
        int32 nReady = 1;
        A________1_InitVIConstantList();
        {
                heap->by_INPUT2 = INPUT2__63;
                heap->by_INPUT1 = INPUT1__2B;
                /**/
                /* 加 */
                /**/
                heap->by____x_y =  (heap->by_INPUT1 + heap->by_INPUT2);
                *OUTPUT__48 = heap->by____x_y;
                return eFinished;
        }
}
/****** Main Entry Point for VI **********/

TextPtr A________1_VIName = "\316\264\303\374\303\373 1.vi";

eRunStatus A________1_Start(subVIInstanceDataPtr viInstanceData, Boolean bShowFrontPanel, Boolean bRunToFinish, ArgList* argsIn, ArgList* argsOut, Boolean *pause);
eRunStatus A________1_Start(subVIInstanceDataPtr viInstanceData, Boolean bShowFrontPanel, Boolean bRunToFinish, ArgList* argsIn, ArgList* argsOut, Boolean *pause){
        A________1_AddSubVIInstanceData();
        return A________1_Run();
}


/****** Library interface **********/


void Sum()
{
        int32 i;
        LVCGenRTInit();

        /* Init globals */
        for (i=0;i<sizeof(globTable)/sizeof(InitFPTermsFunc);i++) {
                (*(globTable[i]))(NULL, false);
        }

        /* Init VI Constants */
        for (i=0;i<sizeof(globConstInitTable)/sizeof(VoidFn);i++) {
                (*(globConstInitTable[i]))();
        }

        A________1_AddSubVIInstanceData();
        A________1_InitVIConstantList();

        /* Call top level VI main function */
        A________1_Run();
        return;
}

void CCG_Cleanup()
{
        int32 i;
        /* Cleanup VI Constants */
        for (i=0;i<sizeof(globConstCleanupTable)/sizeof(VoidFn);i++) {
                (*(globConstCleanupTable[i]))();
        }

        /* Cleanup globals */
        for (i=0;i<sizeof(globCleanupTable)/sizeof(VoidFn);i++) {
                (*(globCleanupTable[i]))(false);
        }

        for (i=0;i<sizeof(lsrCleanupTable)/sizeof(VoidFn);i++) {
                (*(lsrCleanupTable[i]))();
        }

        LVCGenRTEnd();
}



/****** End of generated code **********/

使用特权

评论回复
6
wangjiahao88|  楼主 | 2016-8-20 11:37 | 只看该作者
#ifndef _A________1Lib_h
#define _A________1Lib_h

#include "LVDefs_plat.h"

#ifndef CGEN_LIBFUNC_PREFIX
#define CGEN_LIBFUNC_PREFIX
#endif
#ifndef  CGEN_LIBFUNC_CALL
#define  CGEN_LIBFUNC_CALL
#endif

#ifdef __cplusplus
extern "C" {
#endif

CGEN_LIBFUNC_PREFIX void CGEN_LIBFUNC_CALL Sum();

// This function clears the values for unintialized shift register, globals and First Call variables.
// Call this function as part of your application cleanup or to reset the state.
CGEN_LIBFUNC_PREFIX void CGEN_LIBFUNC_CALL CCG_Cleanup();

#ifdef __cplusplus
} // extern "C"
#endif

#endif /* _A________1Lib_h */

使用特权

评论回复
7
wangjiahao88|  楼主 | 2016-8-20 11:37 | 只看该作者
#ifndef _LVForms_h
#define _LVForms_h
#include "LVCCG.h"
#include "CCGDataSupport.h"
#include "LVGlobs.h"

extern TextPtr A________1_VIName;
extern eRunStatus A________1_Start(subVIInstanceDataPtr viInstanceData, Boolean bShowFrontPanel, Boolean bRunToFinish, ArgList *argsIn, ArgList *argsOut, Boolean *pause);
#define A________1_formID 2000

#ifdef LV_MAIN
FormTableEntry formTable[] = {
{ A________1_formID, A________1_Start, &A________1_VIName },
};
uInt8 formTableSize = 1;
#ifndef No_OS
LVCriticalSection gVICriticalSections[1];
uInt8 gVICriticalSectionsSize = 0;
#endif
#else
extern FormTableEntry formTable[];
#endif

#endif

使用特权

评论回复
8
wangjiahao88|  楼主 | 2016-8-20 11:39 | 只看该作者

#define _Include_PDAFltBinop_opPlus

#define _Integer_Only

#define ARR_DIM_SIZE 2

#define        CGEN_ALIGNMENT        4

#define        CGEN_BIGENDIAN        0

使用特权

评论回复
9
wangjiahao88|  楼主 | 2016-8-20 11:40 | 只看该作者
#ifndef _LVGlobs_h
#define _LVGlobs_h
#define        HOST_IP_ADDRESS        "192.168.1.129"
#define        BUILD_SPECIFICATION_ID        ""
#include "LVCGenIncludes.h"
#ifdef LV_MAIN
int32 nBigClusterSize = 32;
void GlobFiller(Boolean bShowFrontPanel);
void GlobFiller(Boolean bShowFrontPanel) {}
void Filler(void);
void Filler(void) {}
Boolean InitFPTermsFiller(ArgList* argsIn, Boolean bShowFrontPanel);
Boolean InitFPTermsFiller(ArgList* argsIn, Boolean bShowFrontPanel) { return true; }
InitFPTermsFunc globTable[] = {
        InitFPTermsFiller,
};

extern void A________1_AddVIGlobalConstants(void);
VoidFn globConstInitTable[] = {
        Filler,

        A________1_AddVIGlobalConstants,
};
VoidFn globConstCleanupTable[] = {
        Filler,
};
CleanUpFunc globCleanupTable[] = {
        GlobFiller,
};

extern void A________1_CleanupLSRs(void);
VoidFn lsrCleanupTable[] = {
        Filler,

        A________1_CleanupLSRs,
};
#else
extern InitFPTermsFunc globTable[];
extern VoidFn globCleanupTable[];
extern VoidFn globConstInitTable[];
extern VoidFn globConstCleanupTable[];
extern VoidFn lsrCleanupTable[];
extern int32 nBigClusterSize;
#endif /*LV_MAIN*/
#ifdef LV_MAIN
const uInt8 nArrTypeData[] = {
        /* Cluster */
        ClusterDataType,         0,         0,         0,         3,         0,         0,         0,         0,         0,         0,         0,                 BooleanDataType,         0,         0,         0,                 int32DataType,         0,         0,         0,                 StringDataType,         0,         0,         0,
        /* Array */
        ArrayDataType,         0,         0,         0,                 StringDataType,         0,         0,         0,         2, 0, 0, 0,
        /* Array */
        ArrayDataType,         0,         0,         0,                 int16DataType,         0,         0,         0,         1, 0, 0, 0,
        /* Array */
        ArrayDataType,         0,         0,         0,                 StringDataType,         0,         0,         0,         1, 0, 0, 0,
        /* Array */
        ArrayDataType,         0,         0,         0,                 doubleDataType,         0,         0,         0,         1, 0, 0, 0,
        /* Cluster */
        BigClusterDataType,         0,         0,         0,         5,         0,         0,         0,         1,         0,         0,         0,                 Timestamp128DataType,         0,         0,         0,                 doubleDataType,         0,         0,         0,                 ArrayDataType,         0,         4,         0,                 ClusterDataType,         0,         0,         0,                 VariantDataType,         0,         0,         0,
        /* Array */
        ArrayDataType,         0,         0,         0,                 uInt32DataType,         0,         0,         0,         1, 0, 0, 0,
        /* Array */
        ArrayDataType,         0,         0,         0,                 uCharDataType,         0,         0,         0,         2, 0, 0, 0,
        /* Cluster */
        ClusterDataType,         0,         0,         0,         2,         0,         0,         0,         2,         0,         0,         0,                 ArrayDataType,         0,         6,         0,                 ArrayDataType,         0,         7,         0,
        /* Cluster */
        BigClusterDataType,         0,         0,         0,         5,         0,         0,         0,         3,         0,         0,         0,                 Timestamp128DataType,         0,         0,         0,                 doubleDataType,         0,         0,         0,                 ClusterDataType,         0,         8,         0,                 ClusterDataType,         0,         0,         0,                 VariantDataType,         0,         0,         0,
        0
};
uInt32 nArrClusterDataSizes[] = {
0,        0,        0,        0
};
const uInt32 nArrTypeDataOffsets[] = {
        0,         24,         36,         48,         60,         72,         104,         116,         128,         148,         0
};
const uInt32 nArrTypeDataSize = 10;
#else
extern const uInt8 nArrTypeData[];
extern uInt32 nArrClusterDataSizes[];
extern const uInt32 nArrTypeDataOffsets[];
extern const uInt32 nArrTypeDataSize;
#endif
typedef struct cl_00000 {
        Boolean        el_0;
        int32        el_1;
        VoidHand        el_2;
} cl_00000;
typedef struct cl_50000 {
        int32        refcnt;
        int32        bStatic;
        Timestamp128        el_0;
        float64        el_1;
        PDAArrPtr        el_2;
        cl_00000        el_3;
        VoidHand        el_4;
} cl_50000;
typedef struct cl_80000 {
        PDAArrPtr        el_0;
        PDAArrPtr        el_1;
} cl_80000;
typedef struct cl_90000 {
        int32        refcnt;
        int32        bStatic;
        Timestamp128        el_0;
        float64        el_1;
        cl_80000        el_2;
        cl_00000        el_3;
        VoidHand        el_4;
} cl_90000;
#ifdef LV_MAIN
uInt32 gCallerID = 0;
#else
extern uInt32 gCallerID;
#endif /* LV_MAIN */


/**
* Profiling stubs
*/
#ifdef LV_MAIN
uInt32 gProfilingInfoSize = 0;
#else
extern uInt32 gProfilingInfoSize;
#endif /* LV_MAIN */

#ifdef LV_MAIN
ProfilingInfo* gProfilingInfo=NULL;
#else
extern ProfilingInfo* gProfilingInfo;
#endif /* LV_MAIN */


/**
* Call library node callback stubs
*/
#ifdef LV_MAIN
CLNInstanceData *gArrCLNInstanceData = NULL;
int32 gnArrCLNInstanceDataItems = 0;
#endif

/**
* ISR stubs
*/

#ifdef LV_MAIN
ISRInfoTableEntry gISRInfoTable[] = {{NULL, NULL}};
#else
extern ISRInfoTableEntry gISRInfoTable[];
#endif
#endif

使用特权

评论回复
10
wangjiahao88|  楼主 | 2016-8-20 11:40 | 只看该作者
在这里,大家一起探讨探讨。。。我表示很难看明白……

大家有可以研究的吗?

使用特权

评论回复
11
haokeer| | 2016-8-20 15:33 | 只看该作者
labview是图形语言,你看代码,肯定就会看的迷糊了

使用特权

评论回复
12
wangjiahao88|  楼主 | 2016-8-22 10:43 | 只看该作者
看不懂哦!

不过有需要软件著作权申请的,感觉还是很有必要的。

另外CVI 调用LABVIEW还是比较无缝抑制的吧!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

473

主题

7517

帖子

30

粉丝