原创 Labwindows/cvi8.5 使用ArrayToFile,fileToArray读写数据文件

2010-6-12 13:58 7266 11 15 分类: 软件与OS

//*********************************************************
// Labwindows/cvi8.5 使用ArrayToFile,fileToArray读写数据文件
// 改写自 Labwindows 自带的例程
// szlihongtao
// 2010-06-12
//*********************************************************
/*---------------------------------------------------------------------------*/
/*                                                                           */
/* FILE:    arrayfile.c                                                      */
/*                                                                           */
/* PURPOSE: This example illustrates how to use the Formatting and IO        */
/*          functions ArrayToFile and fileToArray to write/read a data file. */
/*                                                                           */
/*---------------------------------------------------------------------------*/
//******************************************************************************
#include <cvirte.h>
#include <userint.h>
#include <formatio.h>
#include <utility.h>
#include <stdlib.h>
#include "arrayfile.h"
#include "myMacro.h"
#include <analysis.h>
//******************************************************************************
#define COUNT 100      // 波形的点数
        
static int handle;
static int wave[COUNT];
static char file_name[MAX_PATHNAME_LEN];
//******************************************************************************
/* This is the application's entry-point.                                    */
//******************************************************************************
int main (int argc, char *argv[])
{
    if (InitCVIRTE (0, argv, 0) == 0)
        return -1;
    handle = LoadPanel (0, "arrayfile.uir", Examp1); 
    SetPanelAttribute(handle, ATTR_TITLE, "Example - Write to Ascii File");   /* 更改面板最上面的文字提示 */
            /* 这句话没有什么用处 */


    DisplayPanel (handle);
    RunUserInterface ();
    DiscardPanel (handle);
    CloseCVIRTE ();
    return 0;        
}
//******************************************************************************
/* Plot some data to the Graph control.                                      */
//******************************************************************************
int CVICALLBACK Plot (int panel, int control, int event, void *callbackData,
                      int eventData1, int eventData2)
{
    int i;


    if (event == EVENT_COMMIT)
 {
        for (i=0;i<COUNT;i++)   /* 产生100个随机数据 */
           wave = rand();
           
        DeleteGraphPlot (handle, Examp1_Graph, -1, 1);  /* 先删除显示 */
        PlotY (handle, Examp1_Graph, wave, COUNT, VAL_INTEGER, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);    /* 画图 */


        SetCtrlAttribute (handle, Examp1_Save, ATTR_DIMMED, 0); /* 0---允许使用保存按钮 */
  }
    return 0;
}
//******************************************************************************
/* This function brings up a File Selection dialog and allows you to enter a */
/* file name with a .dat extension.  After the file name is entered or       */
/* selected, that file is opened and assigned a file handle.                 */
/* This file handle is used anytime action is performed on the file.  The    */
/* file is written using the ArrayToFile function, then closed.              */
//******************************************************************************
int CVICALLBACK Save (int panel, int control, int event, void *callbackData,
                      int eventData1, int eventData2)
{


    int i;
    int fileType;


    if (event == EVENT_COMMIT)
  {
        if (FileSelectPopup ("", "*.dat", "*.dat;*.bin", "保存文件", VAL_OK_BUTTON, 0, 0, 1, 0, file_name) > 0)    /* file_name为选择的文件名称 */
          /*
     0-----VAL_NO_FILE_SELECTED       没有选择文件
     1-----VAL_EXISTING_FILE_SELECTED 选择硬盘上已经有的文件
     2-----VAL_NEW_FILE_SELECTED      创个新的文件
          */    
        {
            GetCtrlVal (handle, Examp1_OutputType, &fileType);   /* 选择文件类型 */


            ArrayToFile (file_name, wave, VAL_INTEGER, COUNT, 8, VAL_GROUPS_TOGETHER, VAL_GROUPS_AS_COLUMNS, VAL_SEP_BY_COMMA, 18,
       fileType, VAL_TRUNCATE); /* 将指针放在文件的开头,删除以前的文件内容 */


            SetCtrlAttribute (handle, Examp1_Save, ATTR_DIMMED, 1); /* 不能在选择 保存 按钮了,因为已经保持了一次 */
            SetCtrlAttribute (handle, Examp1_Read, ATTR_DIMMED, 0);  /* 0---允许使用读出按钮 */
        }
    }
    return 0;
}
//******************************************************************************
/* Read data from the file into our array, then plot it.                     */
//******************************************************************************
int CVICALLBACK Read (int panel, int control, int event, void *callbackData,
                      int eventData1, int eventData2)
{
    int i,status,fileType;


    if (event == EVENT_COMMIT)
    {
        if (FileSelectPopup ("", "*.dat", "*.dat", "Name of File to Read",
              VAL_OK_BUTTON, 0, 1, 1, 0, file_name) > 0)
       {
            GetCtrlVal (handle, Examp1_InputType, &fileType);
        
         for (i=0;i<COUNT;i++)   /* 数组清0 */  
            wave = 0;
           
   FileToArray (file_name, wave, VAL_INTEGER, COUNT, 8, VAL_GROUPS_TOGETHER, VAL_GROUPS_AS_COLUMNS, fileType);


            DeleteGraphPlot (handle, Examp1_Graph2, -1, 1);
            PlotY (handle, Examp1_Graph2, wave, COUNT, VAL_INTEGER,
                    VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1,VAL_RED);
    }
    }
    return 0;
}
//******************************************************************************
/* Quit the application                                                      */
//******************************************************************************
int CVICALLBACK Quit (int panel, int control, int event, void *callbackData,
                      int eventData1, int eventData2)
{
    if (event == EVENT_COMMIT)
        QuitUserInterface (0);
    return 0;
}
//******************************************************************************
//******************************************************************************
//******************************************************************************



 

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

用户377235 2016-3-11 13:19

用时间任务队列方式更好些吧

用户443155 2016-3-4 08:22

定时器,中断!学单片机的时候,老师延时也习惯用delay,然后说到企业里会更多的用定时中断来。结果,工作几年,发现周边的同事还是喜欢delay,轮询扫描,各种定时器中断、IO中断都不喜欢用,让我很鄙视。

用户402594 2015-12-28 08:59

这不就是时分法多任务处理吗,也就状态机,STM32可以用systick做延迟

用户1851539 2015-11-4 23:03

用定时期那,有中断,将报警信号作为中断可以吗、、、、。

用户1694422 2015-8-21 17:01

题主已经点明,嫌定时查询过于浪费时间,所以长时间延时放中断处理程序里,程序会跑飞的。现有的机制是比较事宜的。

用户455798 2015-7-16 16:57

好像用定时器中断就可以解决,延时不占用CPU时间。

hzddyx_297768481 2015-5-5 17:00

赞一个!

自做自受 2015-5-5 11:06

支持!不浪费!从点滴做起。

用户1835224 2015-4-17 10:16

5

用户1834559 2015-4-10 18:04

thanks
相关推荐阅读
sz_lihongtao 2011-04-20 21:32
32bit无符号数快速开平方根
//*******************************************************************************// 32bit无符号数开平方根// ...
sz_lihongtao 2011-04-20 12:12
STM32学习日志(24)----使用dsp库的FFT函数测相位
attachment download/**  ****************************************************************************...
sz_lihongtao 2011-04-19 14:57
STM32学习日志(23)----使用dsp库的FFT函数.rar
attachment download/**  ****************************************************************************...
sz_lihongtao 2011-04-19 10:39
stm32 dsp lib V2.0
attachment downloadattachment download...
sz_lihongtao 2011-04-19 10:37
STM32学习日志(22)----使用DMA功能自动更新PWM的输出
attachment download/*******************************************************************************编...
sz_lihongtao 2010-09-08 21:59
Labwindows/cvi8.5学习日志(56)----任意波形发生器
//******************************************************************************// Labwindows/cvi8.5...
EE直播间
更多
我要评论
4
11
关闭 站长推荐上一条 /3 下一条