打印
[DSP]

eZdsp5535

[复制链接]
731|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
GoooodLike|  楼主 | 2020-6-18 22:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


/**
* main.c
*/
#include <stdio.h>
#include <stdlib.h>
#include "tistdtypes.h"

Uint8 waveHeader[44] = {
    0x52, 0x49, 0x46, 0x46, 0x00, 0x00, 0x00, 0x00,
    0x57, 0x41, 0x56, 0x45, 0x66, 0x6D, 0x74, 0x20,
    0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
    0x40, 0x1F, 0x00, 0x00, 0x80, 0x3E, 0x00, 0x00,
    0x02, 0x00, 0x10, 0x00, 0x64, 0x61, 0x74, 0x61,
    0x00, 0x00, 0x00, 0x00
};

#define SIZE 1024
Uint8 ch[SIZE];

int main(void)
{
    FILE *fp1, *fp2;
    Uint32 i;
    printf("Exp. 1.2 --- file IO\n");
    fp1 = fopen("..\\data\\C55DSPUSBStickAudioTest.pcm", "rb");   
        if (fp1 == NULL) {
        printf("Failed to open output file 'C55DSPUSBStickAudioTest.pcm'\n");
        exit(0);
    }

    fp2 = fopen("..\\data\\C55DSPUSBStickAudioTest.wav", "wb");


    fseek(fp2, 44, 0);
    i = 0;
    size_t a = fread(ch, sizeof(Uint8), SIZE, fp1);
    Uint8 b = sizeof(Uint8);
//    while(fread(ch, sizeof(Uint8), SIZE, fp1) == SIZE)
    while(a == SIZE)
    {
        fwrite(ch, sizeof(Uint8), SIZE, fp2);
        i += SIZE;
        printf("%ld bytes processed\n", i);
    }

    waveHeader[40] = (Uint8)(i&0xff);
    waveHeader[41] = (Uint8)(i >> 8) & 0xff;
    waveHeader[42] = (Uint8)(i >> 16) & 0xff;
    waveHeader[43] = (Uint8)(i >> 24) & 0xff;
    waveHeader[4] = waveHeader[40];
    waveHeader[5] = waveHeader[41];
    waveHeader[6] = waveHeader[42];
    waveHeader[7] = waveHeader[43];

    rewind(fp2);
    fwrite(waveHeader, sizeof(Uint8), 44, fp2);
    fclose(fp1);
    fclose(fp2);

    printf("\nExp. completed\n");
        return 0;
}


使用仿真器调试,fread总是返回0。文件路径没有问题。实在是不解,请大神指教。

使用特权

评论回复

相关帖子

沙发
GoooodLike|  楼主 | 2020-6-18 22:09 | 只看该作者
自己顶

使用特权

评论回复
板凳
zhangmangui| | 2020-6-30 22:29 | 只看该作者
都改成char型读取,取其低8位做拼接。例如:
#define FRAME_SZ 256
typedef short Word16;
typedef char Word8;
Word16 signal[FRAME_SZ];
原始代码是fread(signal, sizeof(Word16), FRAME_SZ, fp); // 不能工作修改后代码Word8 tmp[2*FRAME_SZ];
// 缓存区fread(tmp, sizeof(Word8), 2*FRAME_SZ, fp);// 字节拼接
for (i=0; i<FRAME_SZ;i++) signal[i] = (tmp[2*i+1]<<8) | tmp[2*i];希望有所帮助。

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝