📄 6-4.htm
字号:
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>通过对机器内部扬声器的编程:</span> </span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>1) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>了解和学习</span><span lang=EN-US>Linux</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>内部设备的控制和管理方法。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>2) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>熟悉</span><span lang=EN-US>Linux</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>环境的程序设计和调试方法。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>3) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>进一步了解操作系统输入</span><span lang=EN-US>/</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>输出处理技术。</span></span><a
href="#_top"><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='text-decoration:none;text-underline:none'><!--[if gte vml 1]><v:shape
id="_x0000_i1026" type="#_x0000_t75" style='width:45pt;height:17.25pt'>
<v:imagedata src="./6-4.files/image003.gif" o:title="02"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=60 height=23
src="./6-4.files/image003.gif" v:shapes="_x0000_i1026"><![endif]></span></span><span
style='mso-bookmark:_Toc16587483'></span></a><span style='mso-bookmark:_Toc16587483'></span></p>
<h3><span style='mso-bookmark:_Toc16587483'><a name="_Toc41901946"></a><a
name="_工具/准备工作"></a><span style='mso-bookmark:_Toc41901946'><span
style='mso-bidi-font-family:宋体'>工具<span lang=EN-US>/准备工作</span></span></span></span><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US style='mso-bidi-font-family:
宋体'><o:p></o:p></span></span></h3>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>在开始本实验之前,请回顾教科书的相关内容。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>需要准备一台运行</span><span lang=EN-US>Linux</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>操作系统的计算机。</span></span><a
href="#_top"><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='text-decoration:none;text-underline:none'><!--[if gte vml 1]><v:shape
id="_x0000_i1027" type="#_x0000_t75" style='width:45pt;height:17.25pt'>
<v:imagedata src="./6-4.files/image003.gif" o:title="02"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=60 height=23
src="./6-4.files/image003.gif" v:shapes="_x0000_i1027"><![endif]></span></span><span
style='mso-bookmark:_Toc16587483'></span></a><span style='mso-bookmark:_Toc16587483'></span></p>
<h3><span style='mso-bookmark:_Toc16587483'><a name="_Toc41901947"></a><a
name="_实验内容与步骤"></a><span style='mso-bookmark:_Toc41901947'><span
style='mso-bidi-font-family:宋体'>实验内容与步骤</span></span></span><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US style='mso-bidi-font-family:
宋体'><o:p></o:p></span></span></h3>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><b
style='mso-bidi-font-weight:normal'><span style='font-family:楷体_GB2312;
mso-ascii-font-family:"Times New Roman"'>步骤</span></b></span><span
style='mso-bookmark:_Toc16587483'><b style='mso-bidi-font-weight:normal'><span
lang=EN-US style='mso-fareast-font-family:楷体_GB2312'>1</span></b></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>:登录进入</span><span
lang=EN-US>Rad Hat Linux</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><b
style='mso-bidi-font-weight:normal'><span style='font-family:楷体_GB2312;
mso-ascii-font-family:"Times New Roman"'>步骤</span></b></span><span
style='mso-bookmark:_Toc16587483'><b style='mso-bidi-font-weight:normal'><span
lang=EN-US style='mso-fareast-font-family:楷体_GB2312'>2</span></b></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>:</span><span
lang=EN-US><span style='mso-tab-count:1'> </span></span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>单击红帽子,在“</span><span
lang=EN-US>GNOME</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>帮助”菜单中单击“附件”</span><span lang=EN-US>-</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>“文本编辑器”命令,在文本编辑中键入清单</span><span
lang=EN-US>6-4</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>程序并保存为</span><span lang=EN-US>6-4.c</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>。</span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt;font-family:黑体'><span style='mso-tab-count:1'> </span><span
style="mso-spacerun: yes"> </span>清单6-4<span style="mso-spacerun:
yes"> </span>让扬声器按指定的长度和音频发声<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span># include <fcntl.h><o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span># include <stdio.h><o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span># include <stdlib.h><o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span># include <string.h><o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span># include <unistd.h><o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span># include <sys/ioctl.h><o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span># include <sys/types.h><o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span># include <linux/kd.h><o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'> <o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span>// </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-size:9.0pt;font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>设定默认值</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-size:9.0pt'> <span
lang=EN-US><o:p></o:p></span></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span># define DEFAULT_FREQ 440<span
style='mso-tab-count:3'> </span>//
</span></span><span style='mso-bookmark:_Toc16587483'><span style='font-size:
9.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>设定一个合适的频率</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-size:9.0pt'> <span lang=EN-US><o:p></o:p></span></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span># define DEFAULT_LENGTH 200<span
style='mso-tab-count:2'> </span>//
200</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-size:9.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>微秒,发声的长度以微秒为单位</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-size:9.0pt'> <span
lang=EN-US><o:p></o:p></span></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span># define DEFAULT_REPS 1<span
style='mso-tab-count:3'> </span>//
</span></span><span style='mso-bookmark:_Toc16587483'><span style='font-size:
9.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>默认不重复发声</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-size:9.0pt'> <span lang=EN-US><o:p></o:p></span></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span># define DEFAULT_DELAY 100<span
style='mso-tab-count:2'> </span>//
</span></span><span style='mso-bookmark:_Toc16587483'><span style='font-size:
9.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>同样以微秒为单位</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-size:9.0pt'> <span lang=EN-US><o:p></o:p></span></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'> <o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span>// </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-size:9.0pt;font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>定义一个结构,存储所需的数据</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-size:9.0pt'> <span
lang=EN-US><o:p></o:p></span></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span>typedef struct<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span>{<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun:
yes"> </span>int freq;<span
style='mso-tab-count:6'> </span>//
</span></span><span style='mso-bookmark:_Toc16587483'><span style='font-size:
9.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>期望输出的频率,单位为</span></span><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US style='font-size:9.0pt'>Hz <o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun: yes">
</span><span style='mso-tab-count:2'> </span><span
style="mso-spacerun: yes"> </span>int length;<span style='mso-tab-count:
6'> </span>//
</span></span><span style='mso-bookmark:_Toc16587483'><span style='font-size:
9.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>发声长度,以微秒为单位</span></span><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US style='font-size:9.0pt'><o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun: yes">
</span><span style='mso-tab-count:2'> </span><span
style="mso-spacerun: yes"> </span>int reps;<span style='mso-tab-count:
3'> </span><span
style="mso-spacerun: yes"> </span><span
style='mso-tab-count:2'> </span>//
</span></span><span style='mso-bookmark:_Toc16587483'><span style='font-size:
9.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>重复的次数</span></span><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US style='font-size:9.0pt'><o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style="mso-spacerun: yes">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -