- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实习报告:Linux 设备编程
学生姓名:张云龙 班级:12 软工A2 学号:20143430134
一、实习内容
1、Linux 扬声器设备编程# 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
# define DEFAULT_REPS 1
# define DEFAULT_DELAY 100
// 定义一个结构,存储所需的数据
typedef struct
{
int freq; int length; int reps; int delay;
// 设定一个合适的频率
// 200 微秒,发声的长度以微秒为单位
// 默认不重复发声
// 同样以微秒为单位
// 期望输出的频率,单位为Hz
// 发声长度,以微秒为单位
// 重复的次数
// 两次发声间隔,以微秒为单位
} 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(1) ;
} else
{
result - length = length; argv++;
}
} else
if (!strcmp(*argv, -r ) )
{ // 重复次数
int reps = atoi( * (++argv) ) ; if (reps 0)
{
fprintf(stderr, Bad parameter:reps must be = 0\n ) ; exit(1) ;
} else
{
}
} else
result - reps = reps; argv++;
if (!strcmp(*argv, -d) )
{ // 延时
int delay = atoi( * (++argv) ) ; if (delay 0)
{
fprintf(stderr, Bad parameter: delay must be = 0\n ) ;
exit(1) ;
} else
{
result - delay = delay; argv++;
}
} else
{
fprintf(stderr, Bad parameter:%s\n , *argv) ; usage_bail(arg0) ;
}
}
}
int main(int argc, char **argv)
{
int console_fd;
int i; // 循环计数器
// 设发声参数为默认值
beep_parms_t parms={DEFAULT_FREQ, DEFAULT_LENGTH, DEFAULT_REPS, DEFAULT_DELAY} ;
// 分析参数,可能的话更新发声参数
parse_command_
您可能关注的文档
最近下载
- 运动生理学完整.docx
- 北师大版(2019)高中数学必修2第二章4.1单位圆与任意角的正弦函数、余弦函数定义.pptx VIP
- 22G101与16G101钢筋平法图集对比变化汇总.docx VIP
- 运动生理学个人完整讲义.pdf
- 锅炉改造项目可行性研究报告.docx VIP
- 2024年中医药大学系统解剖学期末考试题及答案.docx
- 情绪管理塑造阳光心态课件.pptx VIP
- 2025年苏州信息职业技术学院单招职业适应性测试题库及答案一套.docx VIP
- 2024年苏州信息职业技术学院单招职业技能测试题库(名校卷).docx VIP
- 2024年苏州信息职业技术学院单招职业技能测试题库(夺分金卷).docx VIP
文档评论(0)