易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux声音设备编程实例

由于这些文件不是普通的文件,所以我们不能用
ANSI C
(标准
C
)的
fopen

fclose
等来操作文件,而应该使用系统文件
I/O
处理函数(
open

read

write

lseek

close
)来处理这些设备文件。
ioctl
()或许是
Linux
下最庞杂的函数,它可以控制各种文件的属性,在
Linux
声音设备编程中,最重要的就是使用此函数正确设置必要的参数。
  下面我们举两个实际的例子来说明如何实现
Linux
下的声音编程。由于此类编程涉及到系统设备的读写,所以,很多时候需要你有
root
权限,如果你将下面的例子编译后不能正确执行,那么,首先请你检查是否是因为没有操纵某个设备的权限。
1.
对内部扬声器编程
  内部扬声器是控制台的一部分,所以它对应的设备文件为
/dev/console
。变量
KIOCSOUND
在头文件
/usr /include /linux /kd.h
中声明,
ioctl
函数使用它可以来控制扬声器的发声,使用规则为:
  
ioctl ( fd, KIOCSOUND, (int) tone);
  
fd
为文件设备号,
tone
是音频值。当
tone

0
时,终止发声。必须一提的是它所理解的音频和我们平常以为的音频是不同的,由于计算机主板定时器的时钟频率为
1.19MHZ
,所以要进行正确的发声,必须进行如下的转换:
  扬声器音频值
=1190000/
我们期望的音频值。
  扬声器发声时间的长短我们通过函数
usleep

unsigned long usec
)来控制。它是在头文件
/usr /include /unistd.h
中定义的,让程序睡眠
usec
微秒。下面即是让扬声器按指定的长度和音频发声的程序的完整清单:

#include
< fcntl.h >
#include
< stdio.h >
#include
< stdlib.h >
#include
< string.h >
#include
< unistd.h >
#include
< sys/ioctl.h >
#include
< sys/types.h >
#include
< linux/kd.h >
 
/*
设定默认值 */
#define
DEFAULT_FREQ 440 /*
设定一个合适的频率 */
#define
DEFAULT_LENGTH 200 /* 200
微秒,发声的长度是以微秒为单位的*/
#define
DEFAULT_REPS 1 /*
默认不重复发声 */
#define
DEFAULT_DELAY 100 /*
同样以微秒为单位*/
 
/*
定义一个结构,存储所需的数据*/
typedef
struct
{
    
int
freq; /*
我们期望输出的频率,单位为Hz */
    


相关文档:

linux下 jdk配置

1.java.sun.com/j2se/1.4.2/download.html">http://java.sun.com/j2se/1.4.2/download.html 下载一个Linux Platform的JDK,建议下载RPM自解压格式的(RPM in self-extracting file,j2sdk-1_4_2_06-linux-i586-rpm.bin); 
2. 上载到Linux服务器上,在shell下执行命令:
[root@ ......

[转]Linux: wait和僵尸进程

之前我们已经讲到用fork()来创建一个新进程,用exit()来终止一个进程。现在我们将略微深入了解exit()执行之后发生的事情。­
    事实上,exit()终止进程并没有将其彻底终结,而是将一个正常的进程变成了一个僵尸进程。该僵尸进程几乎不占用资源,没有可执行的代码,也不能被调度,仅仅只能在进程列表中 ......

在Linux下看电视

在Linux下看电视
时间:2009-12-09 13:37:00  来源:网络  作者:小卢
  长期以来,在Linux操作系统下使用电视卡是一件比较麻烦的事,这是因为各家电视卡生产厂商都没有提供官方的Linux驱动,只有Windows下的WDM驱动。
  Linux下的电视卡驱动,一直由linux.bytesex.org的Linux爱好者负责开发。该驱动有两 ......

制作可移动的linux系统(Ubuntu)

制作可移动的linux系统(Ubuntu)
1、光盘启动,安装复制到移动硬盘,将grub安装到dev/sda。
2、复制完后重启,光盘启动,安装启动界面输入rescue,进入急救模式,选择挂载分区时,选择系统所在硬盘和分区。
3、ctrl-Alt-F2,打开新窗口。
CODE:mount -tproc proc /target/proc
chroot /target
su
4、nano /etc/mkini ......

mknod利用udev、sys动态创建linux设备结点(转载)


在Linux 2.6内核中,devfs被认为是过时的方法,并最终被抛弃,udev取代了它。Devfs的一个很重要的特点就是可以动态创建设备结点。那我们现在如何通过udev和sys文件系统动态创建设备结点呢?
用udev在/dev/下动态生成设备文件,这样用户就不用手工调用mknod了。
利用的kernel API:   
  &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号