`
kulinglei
  • 浏览: 101368 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

linux c 驱动编程

阅读更多


#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);


}
分享到:
评论

相关推荐

    window和Linux驱动编程

    学习Windows和Linux驱动编程,不仅需要掌握C/C++编程语言,还需要理解操作系统原理,熟悉硬件工作模式,具备一定的调试技能。这些知识对于开发高效、稳定的系统级软件至关重要,尤其是在嵌入式系统、服务器和高性能...

    Linux驱动编程(含源码)

    linux驱动编程包括模块、字符设备、互斥与同步处理、I/O内存处理、中断处理、混杂设备、块设备等。含源码,每个驱动代码都有详细注释说明

    深入浅出Linux设备驱动编程

    【深入浅出Linux设备驱动编程】是一本针对Linux操作系统中设备驱动程序开发的教程,旨在帮助读者理解并掌握Linux驱动的编写技术。作者宋宝华强调了Linux软件工程师的两个层次,即应用软件工程师和固件工程师,其中...

    Linux 设备驱动 编程

    《Linux设备驱动编程》第三版是一本深入浅出的教程,它旨在帮助读者快速掌握设备驱动的编写技巧。这本书通过丰富的示例程序,让你能够在实践中学习和理解Linux设备驱动开发的精髓。 首先,我们来了解一下Linux设备...

    深入浅出Linux设备驱动编程入门

    ### 深入浅出Linux设备驱动编程入门 #### 一、引言 随着Linux操作系统在各个领域的广泛应用,Linux设备驱动编程成为了一项至关重要的技能。对于Linux软件工程师来说,通常分为两大类:一类是专注于应用程序开发的...

    linux 系统编程 尚观 linux内核驱动开发 笔记

    【Linux 系统编程与内核驱动开发笔记】 在深入探讨Linux系统编程和内核驱动开发之前,我们首先要理解Linux操作系统的基本概念。Linux是一种自由、开放源码的类Unix操作系统,广泛应用于服务器、桌面环境以及各种...

    【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.0.pdf

    【正点原子】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内核模块与...

    linux环境C语言编程入门

    "Linux环境C语言编程入门"这本书籍旨在引导初学者掌握在Linux系统中编写、编译和调试C程序的基本技巧。 首先,C语言是一种强大的编程语言,它简洁、高效,且提供了对底层硬件的直接访问,因此在系统级编程中广泛...

    Linux下C语言应用编程(作者-杨铸)配套教学ppt

    在Linux系统中,C语言是进行底层编程和系统级开发的主要工具。...通过系统的学习和实践,可以掌握在Linux环境中高效编写C程序的能力,为系统编程、设备驱动开发或网络服务开发等高级主题打下坚实基础。

    Linux设备驱动详解第二版

    第15章 Linux的I2C核心、总线与设备驱动 333 第16章 Linux网络设备驱动 363 第17章 Linux音频设备驱动 388 第18章 LCD设备驱动 440 第19章 Flash设备驱动 479 第20章 USB主机与设备驱动 507 第21...

    深入浅出Linux驱动编程

     一般而言,固件工程师的要求要高于应用软件工程师的层次,而其中的Linux设备驱动编程又是Linux程序设计中比较复杂的部分,究其原因,主要包括如下几个方面:  (1)设备驱动属于Linux内核的部分,编写Linux设备...

    linux下C编程完全手册

    在Linux环境下进行C编程...以上这些知识点都是"Linux下C编程完全手册"可能会涉及的内容,通过学习和实践,你可以成为Linux系统下的C语言编程专家。记住,实践是最好的老师,理论结合实际编程经验将使你的技能更加扎实。

    linuxC语言编程规范[参考].pdf

    Linux C 语言编程规范适用于所有使用 C 语言进行开发的项目,包括操作系统、应用程序、驱动程序等。 1.3 读者范围 Linux C 语言编程规范的读者范围包括所有使用 C 语言进行开发的编程人员,无论是初级开发人员还是...

    Linux C语言编程实战 书附源代码

    在IT行业中,Linux和C语言是两个至关重要的技术领域,它们的结合为系统级编程、设备驱动开发以及高性能计算提供了强大的工具。《Linux C语言编程实战》这本书旨在帮助读者深入理解这两种技术,并通过实践来提升技能...

Global site tag (gtag.js) - Google Analytics