Linux声音备编程.docVIP

  • 16
  • 0
  • 约1.13万字
  • 约 5页
  • 2016-10-06 发布于贵州
  • 举报
Linux声音备编程

6.4 Linux声音设备编程 (实验估计时间:120分钟) 实验目的 通过对机器内部扬声器的编程: 1) 了解和学习Linux内部设备的控制和管理方法。 2) 熟悉Linux环境的程序设计和调试方法。 3) 进一步了解操作系统输入/输出处理技术。 实验内容与步骤 步骤1:登录进入Rad Hat Linux。 步骤2: 单击红帽子,在“GNOME帮助”菜单中单击“附件”-“文本编辑器”命令,在文本编辑中键入清单6-4程序并保存为6-4.c。 清单6-4 让扬声器按指定的长度和音频发声 # 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 int length; // 发声长度,以微秒为单位 int reps; // 重复的次数 int delay; // 两次发声间隔,以微秒为单位 } beep_parms_t; ? // 打印帮助信息并退出 void usage_bail(const char *executable_name) { printf(Usage: \n \t%s [-f frequency] [-l length] [-r reps] [-d delay] \n ,executable_name) ; exit(1) ; } ? // 分析运行参数,各项意义如下: // -f 以Hz为单位的频率值 // -l 以毫秒为单位的发声时长 // -r 重复次数 // -d 以毫秒为单位的间歇时长 ? void parse_command_line(char **argv, beep_parms_t *result) { char *arg0 = *(argv++) ; while (*argv) { if (!strcmp(*argv, -f ) ) { // 频率 int freq = atoi(*( ++argv) ) ; if ( (freq = 0) || (freq 10000) ) { fprintf(stderr, Bad parameter: frequency must be from l..10000\n ) ; exit(1) ; } else { result - freq = freq; argv++; } } else if (!strcmp(*argv, -l) ) { // 发声的时间长度 int length = atoi( *(++argv) ) ; if (length 0) { fprintf(stderr, Bad parameter: length must be = 0\n ) ; exit

文档评论(0)

1亿VIP精品文档

相关文档