LabwindowsCVI ini操作说明及事例

       ini文件是initialization file的缩写,其用于保存参数设置。一般我们会将UI配置的界面参数保存在ini文件中,在程序下次启动时,读取ini文件配置信息,这样就不用重复配置程序参数。下面将介绍ini文件格式及LabwindowsCVI对ini文件的支持:

ini文件格式:

       ini文件由键和节组成,如下所示:

键(keys):

       键是ini文件的基本元素,每一个键又由名称和值组成,如下所示:

       name = value

 

节(sections):

       节是键的群组合,节由“[]”包围,如下所示:

[section]

 

LabwindowsCVI 对ini文件的支持:

LabwindowsCVI对ini操作的api如下所示:

 

Ini_New:

       Ini_New用于创建一个IniText对象,其函数原型如下所示:

IniText Ini_New (int automaticSorting);

       其中automaticSorting为ini文件中 键是否排序,非零值代表排序。

 

Ini_ReadFromFile:

       Ini_ReadFromFile用于读取ini文件的内容,其函数原型如下所示:

       int Ini_ReadFromFile (IniText handle, const char pathname[]);

       其中handle为Ini_New返回的句柄,pathname为ini文件的路径。

 

Ini_GetInt:

       Ini_GetInt用于读取整形键值,其函数原型如下所示:

       int Ini_GetInt (IniText handle, const char sectionName[], const char tagName[], int *integerValue);

       其中handle为IniText句柄,sectionName为节的名称,tagName为键的名称,integerValue为读取的键值。

 

Ini_GetDouble:

       Ini_GetDouble用于读取双浮点型键值,其函数原型如下所示:

       int Ini_GetDouble (IniText handle, const char sectionName[], const char tagName[], double *doubleValue);

       其中handle为IniText句柄,sectionName为节的名称,tagName为键的名称,doubleValue为读取的键值。

 

Ini_GetStringIntoBuffer:

       Ini_GetStringIntoBuffer用于读取字符串类型键值,其函数原型如下所示:

int Ini_GetStringIntoBuffer (IniText handle, const char sectionName[], const char tagName[], char buffer[], size_t bufferSize);

其中handle为IniText句柄,sectionName为节的名称,tagName为键的名称,buffer 为存放读取的字符串数据内存空间,bufferSize为读取字符串数据内存空间大小。

 

Ini_PutInt:

       Ini_PutInt用于添加或修改整形键值,其函数原型如下所示:

int Ini_PutInt (IniText handle, const char sectionName[], const char tagName[], int integerValue);

       其中handle为IniText句柄,sectionName为节的名称,tagName为键的名称,integerValue为写入的键值。

 

Ini_PutDouble:

       Ini_PutDouble用于读取双浮点型键值,其函数原型如下所示:

int Ini_PutDouble (IniText handle, const char sectionName[], const char tagName[], double doubleValue);   

其中handle为IniText句柄,sectionName为节的名称,tagName为键的名称,doubleValue为写入的键值。

 

Ini_PutString:

       Ini_PutString用于读取字符串类型键值,其函数原型如下所示:

int Ini_PutString (IniText handle, const char sectionName[], const char tagName[], const char stringValue[]);

其中handle为IniText句柄,sectionName为节的名称,tagName为键的名称,stringValue为要写入的字符串键值。

 

Ini_WriteToFile:

       Ini_WriteToFile用于将键值写入ini文件中,其函数原型如下所示:

       int Ini_WriteToFile (IniText handle, const char pathname[]);

       其中handle为IniText句柄,pathname为写入的ini文件路径。

 

Ini_Dispose:

       Ini_Dispose用于清除释放Ini_New创建的资源,其函数原型如下所示:

       void Ini_Dispose (IniText handle);

       其中handle为Ini_New创建的句柄。

 

 

LabwindowsCVI ini项目实践:

       新建一个LabwindowsCVI工程,然后往工程添加ini库文件,如下图所示:

这些库文件可以在LabwindowsCVI安装路径下找到,其路径为:C:\Users\Public\Documents\National Instruments\CVI2013\samples\toolbox

 

本工程ini测试代码如下所示,主要为iniReadTest和iniWriteTest函数:

#include "inifile.h"
#include <userint.h>
#include <cvirte.h>
#include "IniTest.h" 

static int panelHandle;
IniText iniFileHandle;
int intValue = 10;
double doubleValue = 100.0;
char stringValue[256] = {0};

void iniReadTest(void)
{
    int ret = 0;
    iniFileHandle = Ini_New(1);    
    ret = Ini_ReadFromFile(iniFileHandle,"config.ini");
    if(ret == 0)//successful
    {
        Ini_GetInt(iniFileHandle,"VALUE","INT_VALUE",&intValue);
        Ini_GetDouble(iniFileHandle,"VALUE","DOUBLE_VALUE",&doubleValue);
        Ini_GetStringIntoBuffer(iniFileHandle,"VALUE","STRING_VALUE",stringValue,sizeof(stringValue));
        Ini_Dispose(iniFileHandle);
        
        SetCtrlVal(panelHandle,PANEL_NUMERIC_INT,intValue);
        SetCtrlVal(panelHandle,PANEL_NUMERIC_DOUBLE,doubleValue); 
        SetCtrlVal(panelHandle,PANEL_STRING_String,stringValue); 
    }
    else if(ret == -97)//file not found
    {
        FILE *f;
        f = fopen("config.ini","r+");
        fclose(f);
        Ini_ReadFromFile(iniFileHandle,"config.ini"); 
    }
    else
    {
        
    }
}

void iniWriteTest(void)
{
    int ret = 0;
    iniFileHandle = Ini_New(1);    
    ret = Ini_ReadFromFile(iniFileHandle,"config.ini");
    if(ret == 0)//successful
    {
    }
    else if(ret == -97)//file not found
    {
        FILE *f;
        f = fopen("config.ini","r+");
        fclose(f);
        Ini_ReadFromFile(iniFileHandle,"config.ini"); 
    }
    else
    {
    }
    
    Ini_PutInt(iniFileHandle,"VALUE","INT_VALUE",intValue);
    Ini_PutDouble(iniFileHandle,"VALUE","DOUBLE_VALUE",doubleValue);
    Ini_PutString(iniFileHandle,"VALUE","STRING_VALUE",stringValue);
    Ini_WriteToFile(iniFileHandle,"config.ini");
    Ini_Dispose(iniFileHandle);
}

int main (int argc, char *argv[])
{
    if (InitCVIRTE (0, argv, 0) == 0)
        return -1;    /* out of memory */
    if ((panelHandle = LoadPanel (0, "IniTest.uir", PANEL)) < 0)
        return -1;
    DisplayPanel (panelHandle);
    
    iniReadTest();//ini read test
    RunUserInterface ();
    GetCtrlVal(panelHandle,PANEL_NUMERIC_INT,&intValue);
    GetCtrlVal(panelHandle,PANEL_NUMERIC_DOUBLE,&doubleValue); 
    GetCtrlVal(panelHandle,PANEL_STRING_String,stringValue); 
    iniWriteTest();//ini write test
    DiscardPanel (panelHandle);
    return 0;
}

int CVICALLBACK quit (int panel, int control, int event,
                      void *callbackData, int eventData1, int eventData2)
{
    switch (event)
    {
        case EVENT_COMMIT:
            QuitUserInterface(0);
            break;
    }
    return 0;
}

测试效果:

       运行该LabwindowsCVI ini测试工程程序,往ini测试窗口中,输入整形值、浮点值、字符串值,然后单击退出,如下图示所示:

然后打开config.ini文件,可以看到UI界面配置的值已经保存下来,在程序下次运行时,其界面显示上次配置的参数。

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值