现在的位置: 首页 > 综合 > 正文

数据采集测试

2013年10月10日 ⁄ 综合 ⁄ 共 3109字 ⁄ 字号 评论关闭

//PciAdTest
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
//define
#define FILENAME    "DataInfo.txt"
#define MAXLEN  1024

//typedef
typedef struct _ReadData
{
    int *recvbuf;
    struct _ReadData *next;
} ReadData;

//Golbal
int g_fileNumber = 0;
ReadData *g_readDataHead = NULL;

ReadData * newNode(int *buf)
{
        ReadData *p;
        int i;
        p = (ReadData *) malloc(sizeof(ReadData));
        if(p == NULL)
            return NULL;
                    
        p->recvbuf = buf;
        p->next = NULL;
    
        return p;
}

ReadData *insertNode(int *buf)
{
        ReadData *p, *q;
        p = newNode(buf);
        if(p == NULL)
            return NULL;
        
        printf("Enter\n");
        if(g_readDataHead == NULL)
        {
            g_readDataHead = p;
            return g_readDataHead;
        }
        
        for(q = g_readDataHead; q->next != NULL; q = q->next );
        q->next = p;
        p->next = NULL;
        
        return g_readDataHead;
}

void  destoryList()
{
        ReadData *p, *q;
        int i;
        

        for(p = g_readDataHead; p != NULL; p = q)
        {
            q = p->next;            
            free(p->recvbuf);
            free(p);
        }
        
        g_readDataHead = NULL;
}

void StoreFile()
{
    char Filename[20];
    int fd, ret;
    ReadData *p;
    
    sprintf(Filename, "%d", g_fileNumber);
    strncat(Filename, ".txt", strlen(".txt"));
    printf("Filename = %s\n", Filename);
    
    fd =  open(Filename, O_RDWR | O_CREAT , 0755);
    if(fd < 0)
            printf("StoreFile open ERROR...\n");
            
    for(p = g_readDataHead; p != NULL; p = p->next )
    {
        ret = write(fd, p->recvbuf, MAXLEN);
        if(ret < 0)
            printf("StoreFile write ERROR..\n");    
    }
    
    close(fd);
    destoryList();
}

void InitFileInfo()
{
    int fd, ret;
    
    fd = open(FILENAME, O_RDWR );
    if(fd < 0)
    {
        printf("firsr run.....\n");
        fd =  open(FILENAME, O_RDWR | O_CREAT , 0755);
        if(fd < 0)
            printf("InitFileInfo open ERROR...\n");
        ret = write(fd, &g_fileNumber, sizeof(g_fileNumber));        
        if(ret < 0)
            printf("InitFileInfo  write ERROR..\n");
            
        close(fd);
        
        return;
    }
    else
    {
        ret = read(fd, &g_fileNumber, sizeof(g_fileNumber));
        if(ret < 0)
            printf("InitFileInfo  read ERROR..\n");
        printf("Now g_fileNumber is %d\n", g_fileNumber);
        
        close(fd);
    }        
}

void UpdateFileInfo()
{
    int fd, ret;
    
    fd = open(FILENAME, O_RDWR | O_TRUNC);
    if(fd < 0)
            printf("UpdataFileInfo open ERROR...\n");
    
    ret = write(fd, &g_fileNumber, sizeof(g_fileNumber));        
        if(ret < 0)
            printf("UpdataFileInfo  write ERROR..\n");        
    
    lseek(fd, 0, SEEK_SET);
    
    ret = read(fd, &g_fileNumber, sizeof(g_fileNumber));
    if(ret < 0)
            printf("UpdataFileInfo  read ERROR..\n");
            
    printf("Update after g_fileNumber is %d\n", g_fileNumber);
    
    return;
}

int main()
{
    int *TestBuf;
    int i, k;
    int *p;
    
    
    InitFileInfo();
    for(k = 0;  k < 10; k++)
    {
        TestBuf = (int *)malloc(sizeof(int) * MAXLEN);
        if(TestBuf == NULL)
            printf("mallov ERROR..\n");        
            
        for(i = 0; i < MAXLEN; i++)
            TestBuf[i] = i;
        
        if(insertNode(TestBuf) == NULL)
            printf("insert ERROR...\n");    
        else
            printf("OK\n");
    }
    
    g_fileNumber++;
    
    UpdateFileInfo();
    StoreFile();

    return 0;    
}

抱歉!评论已关闭.