易截截图软件、单文件、免安装、纯绿色、仅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虚拟机下如何共享ADSL拨号上网


 
 
 
【转】Linux虚拟机下如何共享ADSL拨号上网
2010-01-20 11:55
今天在vmware上装了一个Red Hat Enterprise Linux 5,装好之后,我想在虚拟机上共享我的adsl拨号上网,设置过程如下:
  1. 先在adsl连接属性上允许共享Internet连接:
  2.这样做后会弹出一个对话框,告诉你会把本地连接的ip地 ......

linux ps 命令 STAT域

STAT(该行程的状态)
D: 不可用信号中断的睡眠状态
R: 正在执行或处于执行队列中
S: 可以用信号中断的睡眠状态
T: 暂停执行 
Z: 僵死状态
------------------------------------
W: 没有足够的记忆体分页可分配 
<: 高优先序的行程 
N: 低优先序的行程&nbs ......

Linux设备模型

看LDD3中设备模型一章,觉得思维有些混乱。这里从整体的角度来理理思路。
本文从四个方面来总结一些内容:
1.底层数据结构:kobject,kset.
2.linux设备模型层次关系:bus_type,device,device_driver.
3.集成:PCI设备驱动模型实例及设备,设备驱动注册源码的简单分析.
4.面向对象的思想在linux设备模型中的应用分析.
......

在Linux下看电视

在Linux下看电视
时间:2009-12-09 13:37:00  来源:网络  作者:小卢
  长期以来,在Linux操作系统下使用电视卡是一件比较麻烦的事,这是因为各家电视卡生产厂商都没有提供官方的Linux驱动,只有Windows下的WDM驱动。
  Linux下的电视卡驱动,一直由linux.bytesex.org的Linux爱好者负责开发。该驱动有两 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号