44b0x的示例代码

1 view
Skip to first unread message

Wang Yang

unread,
Dec 6, 2007, 2:28:22 AM12/6/07
to magi...@googlegroups.com
附件是44b0x的示例代码。

其中我们要用到的是播放wav文件的代码,主要有下面三个文件:
src/uda1341.c是主程序
inc/uda1341.h是头文件
inc/WindowsXP_Wav.h是转换后的wav声音文件


其他的大家也可以参考。
hf44b0_TEST.rar

张岳川

unread,
Dec 6, 2007, 3:10:34 AM12/6/07
to magi...@googlegroups.com

还有WAVE啊。。。你太有才了。。

 

张岳川

************************************************

SIM Technology Wireless Module Software Dept.

A4 Bldg.,No.700 YiShan Rd.,Shanghai,China200233

Phone:021-54278754

URL:www.sim.com

************************************************

 


发件人: magi...@googlegroups.com [mailto:magi...@googlegroups.com] 代表 Wang Yang
发送时间: 2007年12月6 15:28
收件人: magi...@googlegroups.com
主题: [MagicArm] 44b0x的示例代码

Wang Yang

unread,
Dec 6, 2007, 5:09:34 AM12/6/07
to magi...@googlegroups.com
那个助教同学出的主意,这个应该不难,就加上了。
演示那天本来还说想做联机对战的,前天查了查资料,发现我可能搞不出来 -_-!

On Dec 6, 2007 4:10 PM, 张岳川 <yuechua...@sim.com> wrote:

还有WAVE 啊。。。你太有才了。。

 

张岳川

************************************************

SIM Technology Wireless Module Software Dept.

A4 Bldg.,No.700 YiShan Rd.,Shanghai,China200233

Phone:021-54278754

URL:www.sim.com

************************************************

 

发件人: magi...@googlegroups.com [mailto:magi...@googlegroups.com] 代表 Wang Yang

发送时间: 2007 年12月6 15:28

收件人: magi...@googlegroups.com
主题: [MagicArm] 44b0x 的示例代码

张岳川

unread,
Dec 6, 2007, 5:16:20 AM12/6/07
to magi...@googlegroups.com

联机?汗。。。我现在找人机对战的现成算法都很难啊。。

 

张岳川

************************************************

SIM Technology Wireless Module Software Dept.

A4 Bldg.,No.700 YiShan Rd.,Shanghai,China200233

Phone:021-54278754

URL:www.sim.com

************************************************

 

发件人: magi...@googlegroups.com [mailto:magi...@googlegroups.com] 代表 Wang Yang

发送时间: 2007年12月6 18:10
收件人: magi...@googlegroups.com
主题: [MagicArm] Re: 答复: [MagicArm] 44b0x的示例代码

zhuzx_0910

unread,
Dec 7, 2007, 2:16:43 AM12/7/07
to magi...@googlegroups.com
我们可以先做一个简单一点的,做好了可以固定一个版本。开始编写相关的文档。如果有时间我们再慢慢加功能,如果没有时间那就算了!!我估计很多组做得相对难一点,到时候能做出来的不会很多的。助教也说了,去年也是这样的!!王扬,你们幸苦了!!
 
                                            朱治雄

张岳川

unread,
Dec 7, 2007, 2:20:07 AM12/7/07
to magi...@googlegroups.com

我和田渊青讨论的结果是,先作双人对战的版本,在这个基础上,有时间再加其他的东西

如果后面时间不够,就把这个版本交上去就可以了

 

另,明天请王杨把板子和线带来,田渊青后天有事,只能明天干了~
班长和吴纬可以准备开始写最后的报告了

 

张岳川

************************************************

SIM Technology Wireless Module Software Dept.

A4 Bldg.,No.700 YiShan Rd.,Shanghai,China200233

Phone:021-54278754

URL:www.sim.com

************************************************

 


发件人: magi...@googlegroups.com [mailto:magi...@googlegroups.com] 代表 zhuzx_0910
发送时间: 2007年12月7 15:17

收件人: magi...@googlegroups.com
主题: [MagicArm] Re: 答复: [MagicArm] 44b0x的示例代码

 

我们可以先做一个简单一点的,做好了可以固定一个版本。开始编写相关的文档。如果有时间我们再慢慢加功能,如果没有时间那就算了!!我估计很多组做得相对难一点,到时候能做出来的不会很多的。助教也说了,去年也是这样的!!王扬,你们幸苦了!!





</BLOCKQUOTE

zhuzx_0910

unread,
Dec 7, 2007, 2:32:28 AM12/7/07
to magi...@googlegroups.com
 
可以呀!!后天没时间,明天下午晚上可以上课的时候干!!
 
 
                                               朱治雄

jerald

unread,
Dec 7, 2007, 2:38:49 AM12/7/07
to magi...@googlegroups.com

就这么办了。

我抓紧整合代码。。。

 

B.R

Jerald Tian





</BLOCKQUOTE

jerald

unread,
Dec 7, 2007, 4:27:29 AM12/7/07
to magi...@googlegroups.com

把王杨的code都消化了,整合ing,大家祈祷,呵呵

 

B.R

Jerald Tian


Wang Yang

unread,
Dec 18, 2007, 9:18:45 PM12/18/07
to magi...@googlegroups.com
这个是声音部分用到的文件,WindowsXP_Wav.h就是音乐
hf44b0_TEST.rar

jerald

unread,
Dec 18, 2007, 10:09:38 PM12/18/07
to magi...@googlegroups.com

Wave文件其实就是二进制的,可以直接读取的。

 

Google了一把,贴上两篇文章。

 

wav文件格式+二进制文件(读+写)

WAVE(特指PCM编码格式)文件头一般是44字节,可用UltraEdit查看wav文件:

 

偏移地址

字节数

数据类型

   

 

文件头

00H

4

char

"RIFF"标志

04H

4

long int

文件长度

08H

4

char

"WAVE"标志

0CH

4

char

"fmt"标志

10H

4

 

过渡字节(不定) 通常为16。不为16则文件头长度要比44字节大。

14H

2

short int

格式类别(01HPCM形式的声音数据)

16H

2

short int

通道数,单声道为1,双声道为2

18H

4

int

采样率,22.05KHz/...

1CH

4

long int

波形音频数据传送速率,其值为通道数×每秒数据位数×每样本的数据位数/8。播放软件利用此值可以估计缓冲区的大小。

20H

2

short int

数据块的调整数(按字节算的),其值为通道数×每样本的数据位值/8。播放软件需要一次处理多个该值大小的字节数据,以便将其值用于缓冲区的调整。

22H

2

short int

量化位数,8/16..

24H

4

char

数据标记符"data

28H

4

long int

语音数据的长度

文件由文件头和数据段组成,设文件总长度为fileSize字节,头大小为headSize,数据段长度为dataSize,则fileSize=headSize+dataSize;

04H处那个文件长度指fileSize-828H处的即为dataSize

wav文件是二进制文件,对其读写只能用read()write()函数。

write:

比如将一个short int value写入二进制文件,则要定义

char tmp[3];tmp[0]=value;tmp[1]=value>>8;tmp[2]='\0';

file.write(tmp,2);

而不能用别的函数,如file<<value;<<这些函数都是先将value转换为文本,再写入文件的。比如value=0x1234=4660;则写入文件的不是两个字节的0x1234,而是四个字节的4 6 6 0这四个字符。

//××××××××对于二进制文件的读

可以不用读char,而直接读short int (只能用fwrite(),fstreamwrite不行)。下面是例程:

#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
void main()
{
//write
fstream outfile("d:\\test.bin",ios::out|ios::binary);
char data[4];
short int nTemp=0x1234;//4660
data[0]=nTemp;
data[1]=nTemp>>8;
data[2]=98;
data[3]='\0';

for(int i=0;i<4;i++)
    cout<<(int)data[i]<<endl;
outfile.write(data,3);
outfile.close();

//read
FILE *file;
file=fopen("d:\\test.bin","rb");
short int buf[1];
fread(buf,2,1,file);
for(int j=0;j<1;j++)
    cout<<buf[j]<<endl;//
正是4660
fclose(file);
}

//*********************

fread(),fwrite()不一定就读、写的都是charbyte)的。可以是别的类型

 

C语言输出wav文件

#include "stdio.h"
void WriteHead(FILE *fp,long size)
{
long temp;
long i;
int n;
fputs("RIFF",fp);

temp=size-8;fwrite(&temp,4,1,fp);
fputs("WAVEfmt ",fp);
temp=18;fwrite(&temp,4,1,fp);/*undefine 0x00000012(=18L) 4bytes */
temp=1;fwrite(&temp,2,1,fp);/*wavefile type0x0001 2bytes*/
temp=2;fwrite(&temp,2,1,fp);/*channels:stereo or mono 0x0001 0x0010 2bytes*/
temp=22050;fwrite(&temp,4,1,fp);/*samples per second 4bytes*/
temp=44100;fwrite(&temp,4,1,fp);/*bytes per second 4bytes*/
temp=2; fwrite(&temp,2,1,fp);/*bytes per sample 2bytes*/
temp=16;fwrite(&temp,2,1,fp);/*bits of wavefile 2bytes*/
temp=0;fwrite(&temp,2,1,fp);/*unknow at now*/
fputs("fact",fp);
temp=4;fwrite(&temp,4,1,fp);/*the flag of wavefile */
temp=0;fwrite(&temp,4,1,fp);/*unknow at now*/
fputs("data",fp);
temp=size-58;fwrite(&temp,4,1,fp);/*size of data(wavfile'size-58)*/

for(i=0;i<temp;i++)fputc(128,fp);


}

long fsize(long size)
{
size-=8;
return size;
}


main()
{
FILE *fwav;
fwav=fopen("test.wav","wb+");
/*fputs("this is a wave file",fwav);*/
WriteHead(fwav,229298);
}

 

 

B.R

Jerald Tian


Reply all
Reply to author
Forward
0 new messages