#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include <stdio.h>
#include<linux/soundcard.h>
#define length 1
#define rate 0x5622
#define size 16
#define channels 1
unsigned char buf[length*rate*size*channels/8];
int main(){
int fd ,fr;
int status;
int arg;
fd=open("/dev/dsp",O_RDWR);
fr=open("china.wav",O_RDWR);
if(fd<0){
perror("open of /dev/dsp failed");
exit(1);
}
printf("1\n");
arg=size;//璁剧疆姣忕鐨勬瘮鐗规暟
status=ioctl( fd,SOUND_PCM_WRITE_BITS,&arg);
if(status==-1){
perror("sound_pcm_write_btts ioctl failed");
close(fd);
close(fr);
exit(1);
}
printf("2\n");
if(arg!=size){
perror("unable to set sample size");
exit(1);
}
arg=channels;//璁剧疆棰戦亾
printf("3\n");
status=ioctl((int)fd,SOUND_PCM_WRITE_CHANNELS,&arg);
if(status==-1){
perror("sound_pcm_write_channels ioctl failed");
exit(1);
}
if(arg!=channels){
perror("unable to set number of channels");
exit(1);
}
arg=rate;//璁剧疆閲囨牱鐜�
status=ioctl((int)fd,SOUND_PCM_WRITE_RATE,&arg);
if(status==-1){
perror("sound_pcm_write_rate failed");
exit(1);
}
printf("4\n");
FILE * fdr=fdopen(fr,"r");//io鍙ユ焺鍒癷o娴佺殑杞崲
FILE* fdw=fdopen(fd,"w");//
printf("5\n");
int tag=fread(buf,sizeof(buf),1,fdr);
while(!feof(fdr)){
printf("6\n");
status=fread(buf,sizeof(buf),1,fdr);
if(status <0){
printf("staus error");
goto tt;
}
status= fwrite(buf,sizeof(buf),1,fdw);
// ioctl(fd,I_FLUSH,FLUSHR);
}
tt:
fclose(fdr);
fclose(fdw);
close(fd);
close(fr);
}
分享到:
相关推荐
学习Windows和Linux驱动编程,不仅需要掌握C/C++编程语言,还需要理解操作系统原理,熟悉硬件工作模式,具备一定的调试技能。这些知识对于开发高效、稳定的系统级软件至关重要,尤其是在嵌入式系统、服务器和高性能...
linux驱动编程包括模块、字符设备、互斥与同步处理、I/O内存处理、中断处理、混杂设备、块设备等。含源码,每个驱动代码都有详细注释说明
【深入浅出Linux设备驱动编程】是一本针对Linux操作系统中设备驱动程序开发的教程,旨在帮助读者理解并掌握Linux驱动的编写技术。作者宋宝华强调了Linux软件工程师的两个层次,即应用软件工程师和固件工程师,其中...
《Linux设备驱动编程》第三版是一本深入浅出的教程,它旨在帮助读者快速掌握设备驱动的编写技巧。这本书通过丰富的示例程序,让你能够在实践中学习和理解Linux设备驱动开发的精髓。 首先,我们来了解一下Linux设备...
### 深入浅出Linux设备驱动编程入门 #### 一、引言 随着Linux操作系统在各个领域的广泛应用,Linux设备驱动编程成为了一项至关重要的技能。对于Linux软件工程师来说,通常分为两大类:一类是专注于应用程序开发的...
【Linux 系统编程与内核驱动开发笔记】 在深入探讨Linux系统编程和内核驱动开发之前,我们首先要理解Linux操作系统的基本概念。Linux是一种自由、开放源码的类Unix操作系统,广泛应用于服务器、桌面环境以及各种...
【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.0 【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.0 【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.0 【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.0 【正点...
### LINUX内核与驱动编程详解 #### 一、引言 在嵌入式开发领域,LINUX内核和驱动编程是至关重要的技能之一。通过掌握这些技术,开发者能够有效地利用硬件资源,实现高效的系统功能。本文将深入探讨LINUX内核模块与...
"Linux环境C语言编程入门"这本书籍旨在引导初学者掌握在Linux系统中编写、编译和调试C程序的基本技巧。 首先,C语言是一种强大的编程语言,它简洁、高效,且提供了对底层硬件的直接访问,因此在系统级编程中广泛...
在Linux系统中,C语言是进行底层编程和系统级开发的主要工具。...通过系统的学习和实践,可以掌握在Linux环境中高效编写C程序的能力,为系统编程、设备驱动开发或网络服务开发等高级主题打下坚实基础。
第15章 Linux的I2C核心、总线与设备驱动 333 第16章 Linux网络设备驱动 363 第17章 Linux音频设备驱动 388 第18章 LCD设备驱动 440 第19章 Flash设备驱动 479 第20章 USB主机与设备驱动 507 第21...
一般而言,固件工程师的要求要高于应用软件工程师的层次,而其中的Linux设备驱动编程又是Linux程序设计中比较复杂的部分,究其原因,主要包括如下几个方面: (1)设备驱动属于Linux内核的部分,编写Linux设备...
在Linux环境下进行C编程...以上这些知识点都是"Linux下C编程完全手册"可能会涉及的内容,通过学习和实践,你可以成为Linux系统下的C语言编程专家。记住,实践是最好的老师,理论结合实际编程经验将使你的技能更加扎实。
Linux C 语言编程规范适用于所有使用 C 语言进行开发的项目,包括操作系统、应用程序、驱动程序等。 1.3 读者范围 Linux C 语言编程规范的读者范围包括所有使用 C 语言进行开发的编程人员,无论是初级开发人员还是...
在IT行业中,Linux和C语言是两个至关重要的技术领域,它们的结合为系统级编程、设备驱动开发以及高性能计算提供了强大的工具。《Linux C语言编程实战》这本书旨在帮助读者深入理解这两种技术,并通过实践来提升技能...