2013-05-02 86 views
0

我對編碼非常陌生,並且由於Google無法修復的問題而倍受困擾(今天第二次)。我在Windows上使用Code Composer 4編寫代碼。我的代碼沒有錯誤,但fopen(「coffic.cof」,「w」)根本不會改變文件中的數據(如果文件被刪除,不會創建文件),也不能明白爲什麼。有任何想法嗎?將數據寫入.cof文件

#include "dsk6713_aic23.h"  //codec-DSK support file 
Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //set sampling rate 
# include <stdio.h> 
# include <math.h> 
# include <stdlib.h> 
#define pi 3.1415927 
#include "coffic.cof" 

void main() 
{ 
    double hpf, fs, fco, atn, fat, tp, k, ad, m, n, o, da, db, dc; 
    FILE *fp; 
    int c, d, e, f, g, h, i, q, r, s, t, u, v; 
    hpf = 0;   //for a high-pass filter input 1, for a low-pass filter input 0 
    fs = 8000;   //input samping frequency here 
    fco = 2400;   //input cut-off frequency here 
    atn = 17;   //input attenuation (dB) here 
    fat = 3500;   //input the frequency of attenuation here 
    tp = 1/fs; 
    k = tan(pi*fco*tp); 
    ad = tan(pi*fat*tp); 
    m = (log10((pow(10,(atn/10)))-1))/(2*(log10(ad/k))); 
    o = abs(m); 
    n = ceil(o); 

    da = 1.414; 
    c = (pow(2,15)*k*k/(1+da*k+k*k)); 
    d = (pow(2,15)*2*k*k/(1+da*k+k*k)); 
    e = (pow(2,15)*k*k/(1+da*k+k*k)); 
    q = (pow(2,15)*(2-2*k*k)/(1+da*k+k*k)); 
    r = (pow(2,15)*(-1+k-k*k)/(1+da*k+k*k)); 

    fp = fopen("U:\DSK6713\Ivo\CSP\coffic.cof", "w"); 
    if (fp == NULL) 
    { 
     printf("Error. Unable to open coffic.cof"); 
     exit(0); 
    } 

    fprintf(fp, "int a[3]={%d, d%, %d};\n", c, d, e); 
    fprintf(fp, "int b[3]={1, d%, %d};\n", q ,r); 
    fprintf(fp, "int x[3]={0,0,0};\nint y[3]={0,0,0};\n"); 

    fflush(fp); 

    fclose(fp); 

    comm_intr();     //init DSK, codec, McBSP 
    while(1);      //infinite loop 
} 

interrupt void c_int11()   //interrupt service routine 
{ 
    short input; 
    FILE *fp; 
    fp = fopen("U:\DSK6713\Ivo\CSP\coffic.cof", "r"); 
    if (fp == NULL) 
    { 
     printf("Error. Unable to open coffic.cof"); 
     exit(0); 
    } 

    fclose(fp); 

    x[2]=x[1]; 
    x[1]=x[0]; 
    y[2]=y[1]; 
    y[1]=y[0]; 

    input=input_sample(); 
    x[0]=input; 

    y[0]=a[0]*x[0]+a[1]*x[1]+a[2]*x[2]+b[1]*y[1]+b[2]*x[2];  

    y[0]=y[0]>>15;      
    input=(short)y[0]; 
    output_sample(input); //output data 
    return; 
} 
+0

'fp = fopen(「U:\ DSK6713 \ Ivo \ CSP \ coffic.cof」,「w」);'反斜槓標記轉義序列。 '\ D','\ I','\ C'和'\ c'都不是我聽說過的轉義序列。不是編譯器barf嗎? (應該是「U:\\ DSK6713 \\ Ivo \\ CSP \\ coffic.cof」。) – 2013-05-02 21:17:51

回答

0
fp = fopen("U:\DSK6713\Ivo\CSP\coffic.cof", "w"); 

不創建一個文件,它假定你已經有一個名爲您的計算機上coffic.cof文件。我通常使用fopen的寫函數時遇到問題,所以我通常使用append函數。 試試這個

fp = fopen("U:\DSK6713\Ivo\CSP\coffic.cof", "a"); 

我的新節目太多,但這個很適合我,當「W」也沒有。