📄 csdn技术中心 linux声音设备编程实例.mht
字号:
C=A3=A8=B1=EA=D7=BCC=A3=A9=B5=C4fopen=A1=A2fclose=B5=C8=C0=B4=B2=D9=D7=F7=
=CE=C4=BC=FE=A3=AC=B6=F8=D3=A6=B8=C3=CA=B9=D3=C3=CF=B5=CD=B3=CE=C4=BC=FEI=
/O=B4=A6=C0=ED=BA=AF=CA=FD=A3=A8open=A1=A2read=A1=A2write=A1=A2lseek=BA=CD=
close=A3=A9=C0=B4=B4=A6=C0=ED=D5=E2=D0=A9=C9=E8=B1=B8=CE=C4=BC=FE=A1=A3io=
ctl=A3=A8=A3=A9=BB=F2=D0=ED=CA=C7Linux=CF=C2=D7=EE=C5=D3=D4=D3=B5=C4=BA=AF=
=CA=FD=A3=AC=CB=FC=BF=C9=D2=D4=BF=D8=D6=C6=B8=F7=D6=D6=CE=C4=BC=FE=B5=C4=CA=
=F4=D0=D4=A3=AC=D4=DALinux=C9=F9=D2=F4=C9=E8=B1=B8=B1=E0=B3=CC=D6=D0=A3=AC=
=D7=EE=D6=D8=D2=AA=B5=C4=BE=CD=CA=C7=CA=B9=D3=C3=B4=CB=BA=AF=CA=FD=D5=FD=C8=
=B7=C9=E8=D6=C3=B1=D8=D2=AA=B5=C4=B2=CE=CA=FD=A1=A3<BR>=A1=A1=A1=A1=CF=C2=
=C3=E6=CE=D2=C3=C7=BE=D9=C1=BD=B8=F6=CA=B5=BC=CA=B5=C4=C0=FD=D7=D3=C0=B4=CB=
=B5=C3=F7=C8=E7=BA=CE=CA=B5=CF=D6Linux=CF=C2=B5=C4=C9=F9=D2=F4=B1=E0=B3=CC=
=A1=A3=D3=C9=D3=DA=B4=CB=C0=E0=B1=E0=B3=CC=C9=E6=BC=B0=B5=BD=CF=B5=CD=B3=C9=
=E8=B1=B8=B5=C4=B6=C1=D0=B4=A3=AC=CB=F9=D2=D4=A3=AC=BA=DC=B6=E0=CA=B1=BA=F2=
=D0=E8=D2=AA=C4=E3=D3=D0root=C8=A8=CF=DE=A3=AC=C8=E7=B9=FB=C4=E3=BD=AB=CF=
=C2=C3=E6=B5=C4=C0=FD=D7=D3=B1=E0=D2=EB=BA=F3=B2=BB=C4=DC=D5=FD=C8=B7=D6=B4=
=D0=D0=A3=AC=C4=C7=C3=B4=A3=AC=CA=D7=CF=C8=C7=EB=C4=E3=BC=EC=B2=E9=CA=C7=B7=
=F1=CA=C7=D2=F2=CE=AA=C3=BB=D3=D0=B2=D9=D7=DD=C4=B3=B8=F6=C9=E8=B1=B8=B5=C4=
=C8=A8=CF=DE=A1=A3</P>
<P>1.=20
=
=B6=D4=C4=DA=B2=BF=D1=EF=C9=F9=C6=F7=B1=E0=B3=CC<BR>=A1=A1=A1=A1=C4=DA=B2=
=BF=D1=EF=C9=F9=C6=F7=CA=C7=BF=D8=D6=C6=CC=A8=B5=C4=D2=BB=B2=BF=B7=D6=A3=AC=
=CB=F9=D2=D4=CB=FC=B6=D4=D3=A6=B5=C4=C9=E8=B1=B8=CE=C4=BC=FE=CE=AA/dev/co=
nsole=A1=A3=B1=E4=C1=BFKIOCSOUND=D4=DA=CD=B7=CE=C4=BC=FE=20
/usr /include /linux=20
=
/kd.h=D6=D0=C9=F9=C3=F7=A3=ACioctl=BA=AF=CA=FD=CA=B9=D3=C3=CB=FC=BF=C9=D2=
=D4=C0=B4=BF=D8=D6=C6=D1=EF=C9=F9=C6=F7=B5=C4=B7=A2=C9=F9=A3=AC=CA=B9=D3=C3=
=B9=E6=D4=F2=CE=AA=A3=BA<BR>=A1=A1=A1=A1ioctl ( fd, KIOCSOUND,=20
(int) =
tone);<BR>=A1=A1=A1=A1fd=CE=AA=CE=C4=BC=FE=C9=E8=B1=B8=BA=C5=A3=ACtone=20
=
=CA=C7=D2=F4=C6=B5=D6=B5=A1=A3=B5=B1tone=CE=AA0=CA=B1=A3=AC=D6=D5=D6=B9=B7=
=A2=C9=F9=A1=A3=B1=D8=D0=EB=D2=BB=CC=E1=B5=C4=CA=C7=CB=FC=CB=F9=C0=ED=BD=E2=
=B5=C4=D2=F4=C6=B5=BA=CD=CE=D2=C3=C7=C6=BD=B3=A3=D2=D4=CE=AA=B5=C4=D2=F4=C6=
=B5=CA=C7=B2=BB=CD=AC=B5=C4=A3=AC=D3=C9=D3=DA=BC=C6=CB=E3=BB=FA=D6=F7=B0=E5=
=B6=A8=CA=B1=C6=F7=B5=C4=CA=B1=D6=D3=C6=B5=C2=CA=CE=AA1.19MHZ=A3=AC=CB=F9=
=D2=D4=D2=AA=BD=F8=D0=D0=D5=FD=C8=B7=B5=C4=B7=A2=C9=F9=A3=AC=B1=D8=D0=EB=BD=
=F8=D0=D0=C8=E7=CF=C2=B5=C4=D7=AA=BB=BB=A3=BA<BR>=A1=A1=A1=A1=D1=EF=C9=F9=
=C6=F7=D2=F4=C6=B5=D6=B5=3D1190000/=CE=D2=C3=C7=C6=DA=CD=FB=B5=C4=D2=F4=C6=
=B5=D6=B5=A1=A3<BR>=A1=A1=A1=A1=D1=EF=C9=F9=C6=F7=B7=A2=C9=F9=CA=B1=BC=E4=
=B5=C4=B3=A4=B6=CC=CE=D2=C3=C7=CD=A8=B9=FD=BA=AF=CA=FDusleep=A3=A8unsigne=
d=20
long =
usec=A3=A9=C0=B4=BF=D8=D6=C6=A1=A3=CB=FC=CA=C7=D4=DA=CD=B7=CE=C4=BC=FE/us=
r /include=20
=
/unistd.h=D6=D0=B6=A8=D2=E5=B5=C4=A3=AC=C8=C3=B3=CC=D0=F2=CB=AF=C3=DFusec=
=CE=A2=C3=EB=A1=A3=CF=C2=C3=E6=BC=B4=CA=C7=C8=C3=D1=EF=C9=F9=C6=F7=B0=B4=D6=
=B8=B6=A8=B5=C4=B3=A4=B6=C8=BA=CD=D2=F4=C6=B5=B7=A2=C9=F9=B5=C4=B3=CC=D0=F2=
=B5=C4=CD=EA=D5=FB=C7=E5=B5=A5=A3=BA </P>
<P>#include < fcntl.h ><BR>#include < stdio.h=20
><BR>#include < stdlib.h ><BR>#include < =
string.h=20
><BR>#include < unistd.h ><BR>#include < =
sys/ioctl.h=20
><BR>#include < sys/types.h ><BR>#include < =
linux/kd.h=20
></P>
<P>/* =C9=E8=B6=A8=C4=AC=C8=CF=D6=B5 */<BR>#define =
DEFAULT_FREQ 440 /* =
=C9=E8=B6=A8=D2=BB=B8=F6=BA=CF=CA=CA=B5=C4=C6=B5=C2=CA=20
*/<BR>#define DEFAULT_LENGTH 200 /* 200=20
=
=CE=A2=C3=EB=A3=AC=B7=A2=C9=F9=B5=C4=B3=A4=B6=C8=CA=C7=D2=D4=CE=A2=C3=EB=CE=
=AA=B5=A5=CE=BB=B5=C4*/<BR>#define DEFAULT_REPS 1 /* =
=C4=AC=C8=CF=B2=BB=D6=D8=B8=B4=B7=A2=C9=F9=20
*/<BR>#define DEFAULT_DELAY 100 /* =
=CD=AC=D1=F9=D2=D4=CE=A2=C3=EB=CE=AA=B5=A5=CE=BB*/</P>
<P>/* =
=B6=A8=D2=E5=D2=BB=B8=F6=BD=E1=B9=B9=A3=AC=B4=E6=B4=A2=CB=F9=D0=E8=B5=C4=CA=
=FD=BE=DD*/<BR>typedef struct {<BR>int freq; /*=20
=
=CE=D2=C3=C7=C6=DA=CD=FB=CA=E4=B3=F6=B5=C4=C6=B5=C2=CA=A3=AC=B5=A5=CE=BB=CE=
=AAHz */<BR>int length; /* =
=B7=A2=C9=F9=B3=A4=B6=C8=A3=AC=D2=D4=CE=A2=C3=EB=CE=AA=B5=A5=CE=BB*/<BR>i=
nt reps; /*=20
=D6=D8=B8=B4=B5=C4=B4=CE=CA=FD*/<BR>int delay; /* =
=C1=BD=B4=CE=B7=A2=C9=F9=BC=E4=B8=F4=A3=AC=D2=D4=CE=A2=C3=EB=CE=AA=B5=A5=CE=
=BB*/<BR>} beep_parms_t;</P>
<P><BR>/* =
=B4=F2=D3=A1=B0=EF=D6=FA=D0=C5=CF=A2=B2=A2=CD=CB=B3=F6*/<BR>void =
usage_bail ( const char=20
*executable_name ) {<BR>printf ( "Usage: \n \t%s [-f =
frequency] [-l=20
length] [-r reps] [-d delay] \n ",<BR>executable_name=20
);<BR>exit(1);<BR>}</P>
<P>/ * =
=B7=D6=CE=F6=D4=CB=D0=D0=B2=CE=CA=FD=A3=AC=B8=F7=CF=EE=D2=E2=D2=E5=C8=E7=CF=
=C2=A3=BA<BR>* "-f =
<=D2=D4HZ=CE=AA=B5=A5=CE=BB=B5=C4=C6=B5=C2=CA=D6=B5 >"<BR>* "-l=20
=
<=D2=D4=BA=C1=C3=EB=CE=AA=B5=A5=CE=BB=B5=C4=B7=A2=C9=F9=CA=B1=B3=A4 =
>"<BR>* "-r <=D6=D8=B8=B4=B4=CE=CA=FD >"<BR>* "-d=20
=
<=D2=D4=BA=C1=C3=EB=CE=AA=B5=A5=CE=BB=B5=C4=BC=E4=D0=AA=CA=B1=B3=A4 =
>"<BR>*/<BR>void parse_command_line(char **argv,=20
beep_parms_t *result) {<BR>char *arg0 =3D =
*(argv++);<BR>while ( *argv=20
) {<BR>if ( !strcmp( *argv,"-f" )) { /*=C6=B5=C2=CA*/<BR>int =
freq =3D atoi ( *(=20
++argv ) ); <BR>if ( ( freq <=3D 0 ) | | ( freq > =
10000 ) )=20
{<BR>fprintf ( stderr, "Bad parameter: frequency must be =
from=20
1..10000\n" );<BR>exit (1) ;<BR>} else {<BR>result->freq =
=3D=20
freq;<BR>argv++; <BR>}<BR>} else if ( ! strcmp ( *argv, "-l" =
) ) {=20
/*=CA=B1=B3=A4*/<BR>int length =3D atoi ( *(++argv ) =
);<BR>if (length < 0)=20
{<BR>fprintf(stderr, "Bad parameter: length must be >=3D=20
0\n");<BR>exit(1);<BR>} else {<BR>result->length =3D=20
length;<BR>argv++;<BR>} <BR>} else if (!strcmp(*argv, "-r")) =
{=20
/*=D6=D8=B8=B4=B4=CE=CA=FD*/<BR>int reps =3D =
atoi(*(++argv));<BR>if (reps < 0)=20
{<BR>fprintf(stderr, "Bad parameter: reps must be >=3D=20
0\n");<BR>exit(1);<BR>} else {<BR>result->reps =3D=20
reps;<BR>argv++;<BR>} <BR>} else if (!strcmp(*argv, "-d")) { =
/* =D1=D3=CA=B1=20
*/<BR>int delay =3D atoi(*(++argv));<BR>if (delay < 0)=20
{<BR>fprintf(stderr, "Bad parameter: delay must be >=3D=20
0\n");<BR>exit(1);<BR>} else {<BR>result->delay =3D=20
delay;<BR>argv++;<BR>} <BR>} else {<BR>fprintf(stderr, "Bad=20
parameter: %s\n", =
*argv);<BR>usage_bail(arg0);<BR>}<BR>}<BR>} </P>
<P>int main(int argc, char **argv) {<BR>int =
console_fd;<BR>int i; /*=20
=D1=AD=BB=B7=BC=C6=CA=FD=C6=F7 */<BR>/* =
=C9=E8=B7=A2=C9=F9=B2=CE=CA=FD=CE=AA=C4=AC=C8=CF=D6=B5*/<BR>beep_parms_t =
parms =3D {DEFAULT_FREQ,=20
DEFAULT_LENGTH, DEFAULT_REPS, <BR>DEFAULT_DELAY};<BR>/*=20
=
=B7=D6=CE=F6=B2=CE=CA=FD=A3=AC=BF=C9=C4=DC=B5=C4=BB=B0=B8=FC=D0=C2=B7=A2=C9=
=F9=B2=CE=CA=FD*/<BR>parse_command_line(argv, &parms);</P>
<P>/* =
=B4=F2=BF=AA=BF=D8=D6=C6=CC=A8=A3=AC=CA=A7=B0=DC=D4=F2=BD=E1=CA=F8=B3=CC=D0=
=F2*/<BR>if ( ( console_fd =3D open ( "/dev/console",=20
O_WRONLY ) ) =3D=3D -1 ) {<BR>fprintf(stderr, "Failed to =
open=20
console.\n");<BR>perror("open");<BR>exit(1);<BR>}</P>
<P>/* =
=D5=E6=D5=FD=BF=AA=CA=BC=C8=C3=D1=EF=C9=F9=C6=F7=B7=A2=C9=F9*/<BR>for (i =
=3D 0; i < parms.reps; i++) {<BR>/*=20
=
=CA=FD=D7=D61190000=B4=D3=BA=CE=B6=F8=C0=B4=A3=AC=B2=BB=B5=C3=B6=F8=D6=AA=
*/<BR>int magical_fairy_number =3D=20
1190000/parms.freq;</P>
<P>ioctl(console_fd, KIOCSOUND, magical_fairy_number); /* =
=BF=AA=CA=BC=B7=A2=C9=F9=20
*/<BR>usleep(1000*parms.length); /*=B5=C8=B4=FD... =
*/<BR>ioctl(console_fd,=20
KIOCSOUND, 0); /* =
=CD=A3=D6=B9=B7=A2=C9=F9*/<BR>usleep(1000*parms.delay); /* =
=B5=C8=B4=FD...=20
*/<BR>} /* =D6=D8=B8=B4=B2=A5=B7=C5*/<BR>return=20
=
EXIT_SUCCESS;<BR>}<BR>=A1=A1=A1=A1=BD=AB=C9=CF=C3=E6=B5=C4=C0=FD=D7=D3=C9=
=D4=D7=F7=C0=A9=D5=B9=A3=AC=D3=C3=BB=A7=BC=B4=BF=C9=D2=D4=C8=C3=D1=EF=C9=F9=
=C6=F7=B3=AA=B8=E8=A1=A3=D6=BB=D2=AA=D5=D2=B5=BD=CE=E5=CF=DF=C6=D7=BB=F2=BC=
=F2=C6=D7=B5=C4=D2=F4=BD=D7=A1=A2=D2=F4=B3=A4=A1=A2=BD=DA=C5=C4=BA=CD=C6=B5=
=C2=CA=A1=A2=B7=A2=C9=F9=CA=B1=B3=A4=A1=A2=BC=E4=B8=F4=B5=C4=B6=D4=D3=A6=B9=
=D8=CF=B5=BE=CD=BF=C9=D2=D4=C1=CB=A1=A3=CE=D2=CF=D6=D4=DA=BB=B9=BC=C7=B5=C3=
=D2=D4=C7=B0=D4=DADOS=CF=C2=B1=E0=D0=B4=B3=F6=A1=B6=CA=C0=C9=CF=D6=BB=D3=D0=
=C2=E8=C2=E8=BA=C3=A1=B7=CA=B1=B5=C4=D0=CB=B7=DC=A1=A3=D7=EE=BA=F3=A3=AC=CB=
=B5=D2=BB=D0=A9=CC=E1=CD=E2=BB=B0=A3=AC=D5=E2=C6=E4=CA=B5=CA=C7=D2=BB=B8=F6=
=BA=DC=BC=F2=B5=A5=B5=C4=B3=CC=D0=F2=A3=AC=B5=AB=CA=C7=CE=D2=C3=C7=C8=B4=D3=
=C3=C1=CB=BA=DC=B3=A4=B5=C4=C6=AA=B7=F9=A3=AC=CF=A3=CD=FB=B6=C1=D5=DF=B4=D3=
=D2=D4=C9=CF=B5=C4=B4=FA=C2=EB=C0=EF=C4=DC=CC=E5=BB=E1=B5=BD=D0=B4=BA=C3=B5=
=C4=B3=CC=D0=F2=B5=C4=D2=BB=D0=A9=B7=BD=B7=A8=A3=AC=BB=F2=D0=ED=D7=EE=D6=D8=
=D2=AA=B5=C4=CA=C7=CC=ED=BC=D3=D7=A2=CA=CD=B0=C9=A1=A3=D2=BB=B8=F6=B3=CC=D0=
=F2=B5=C4=D7=A2=CA=CD=D3=C0=D4=B6=B2=BB=BB=E1=CF=D3=B6=E0=A3=AC=BC=B4=B1=E3=
=C4=E3=D0=B4=B5=C4=CA=B1=BA=F2=BE=F5=B5=C3=CB=FC=B8=F9=B1=BE=CA=C7=B6=E0=D3=
=E0=A3=AC=B5=AB=CF=E0=D0=C5=CE=D2=A3=AC=CF=E0=D0=C5=D4=F8=D5=E2=D1=F9=B8=E6=
=CB=DF=CE=D2=C3=C7=B5=C4=D0=ED=B6=E0=D3=C5=D0=E3=B5=C4=B3=CC=D0=F2=D4=B1=A3=
=BA=D1=F8=B3=C9=D0=B4=BA=DC=B6=E0=D7=A2=CA=CD=B5=C4=CF=B0=B9=DF=A1=A3</P>=
<P>2.=20
=
=B6=D4=C9=F9=BF=A8=B1=E0=B3=CC<BR>=A1=A1=A1=A1=D6=BB=D2=AA=CE=D2=C3=C7=B2=
=BB=CA=C7=BD=F8=D0=D0=D6=EE=C8=E7=C7=FD=B6=AF=C9=E8=B1=B8=BF=AA=B7=A2=D6=AE=
=C0=E0=B5=C4=B9=A4=D7=F7=A3=AC=B6=D4=C9=F9=BF=A8=B5=C4=B1=E0=B3=CC=BA=CD=C9=
=CF=C3=E6=B6=D4=D1=EF=C9=F9=C6=F7=B5=C4=B1=E0=B3=CC=C3=BB=D3=D0=CA=B2=C3=B4=
=B1=BE=D6=CA=B5=C4=C7=F8=B1=F0=A1=A3=B5=B1=C4=E3=CA=D4=CD=BC=C0=B4=B1=E0=D0=
=B4=D6=EE=C8=E7CD=B2=A5=B7=C5=C6=F7=A1=A2MP3=B2=A5=B7=C5=C6=F7=D6=AE=C0=E0=
=B5=C4=B8=B4=D4=D3=B5=C4=B3=CC=D0=F2=CA=B1=A3=AC=C4=E3=B5=C4=B9=A4=D7=F7=CA=
=C7=C8=A1=BB=F1=B5=C3=D3=EBCDROM=BF=D8=D6=C6=A1=A2MP3=BD=E2=C2=EB=D6=AE=C0=
=E0=B5=C4=D0=C5=CF=A2=A3=AC=B6=F8=B6=C1=D0=B4=CF=B5=CD=B3=C9=E8=B1=B8=B5=C4=
=D5=E2=D2=BB=B2=BD=D4=DALinux=CF=C2=B3=AC=BB=A5=CF=EB=CF=F3=B5=C4=BC=F2=B5=
=A5=A1=A3=C0=FD=C8=E7=A3=ACLinux=CF=C2=D7=EE=BC=F2=B5=A5=B5=C4=B2=A5=B7=C5=
wav=B5=C4=B3=CC=D0=F2=D6=BB=D3=D0=D2=BB=D0=D0=A3=BAcp=20
$< =
>/dev/audio=A1=A3=BD=AB=CB=FC=D0=B4=B3=C9=D2=BB=B8=F6shell=CE=C4=BC=FE=
=A3=AC=CD=AC=D1=F9=CA=C7=D2=BB=B8=F6=B3=CC=D0=F2=A3=A8shell=20
=
=B1=E0=B3=CC=A3=A9=A1=A3<BR>=A1=A1=A1=A1=CE=D2=C3=C7=CA=D7=CF=C8=D0=E8=D2=
=AA=D6=AA=B5=C0=D2=BB=CC=A8=BB=FA=C6=F7=C9=CF=CA=C7=B7=F1=D3=D0=C9=F9=BF=A8=
=A3=AC=D2=BB=B8=F6=BC=EC=B2=E9=B5=C4=B0=EC=B7=A8=CA=C7=BC=EC=B2=E9=CE=C4=BC=
=FE/dev/sndstat=CE=C4=BC=FE=A3=AC=C8=E7=B9=FB=B4=F2=BF=AA=B4=CB=CE=C4=BC=FE=
=B4=ED=CE=F3=A3=AC=B2=A2=C7=D2=B4=ED=CE=F3=BA=C5=CA=C7ENODEV=A3=AC=D4=F2=CB=
=B5=C3=F7=B4=CB=BB=FA=C6=F7=C3=BB=D3=D0=B0=B2=D7=B0=C9=F9=BF=A8=A1=A3=B3=FD=
=B4=CB=D6=AE=CD=E2=A3=AC=CA=D4=D7=C5=C8=A5=B4=F2=BF=AA=CE=C4=BC=FE/dev/ds=
p=D2=B2=BF=C9=D2=D4=C0=B4=BC=EC=B2=E9=CA=C7=B7=F1=B0=B2=D7=B0=C1=CB=C9=F9=
=BF=A8=A1=A3<BR>=A1=A1=A1=A1Linux=CF=C2=BA=CD=C9=F9=BF=A8=CF=E0=B9=D8=B5=C4=
=CE=C4=BC=FE=D3=D0=D0=ED=B6=E0=A3=AC=C8=E7=B2=C9=BC=AF=CA=FD=D7=D6=D1=F9=B1=
=BE=B5=C4/dev/dsp=CE=C4=BC=FE=A3=AC=D5=EB=B6=D4=BB=EC=D2=F4=C6=F7=B5=C4/d=
ev/mixer=CE=C4=BC=FE=D2=D4=BC=B0=D3=C3=D3=DA=D2=F4=D0=F2=C6=F7=B5=C4/dev/=
sequencer=B5=C8=A1=A3=CE=C4=BC=FE/dev/audio=CA=C7=D2=BB=B8=F6=BB=F9=D3=DA=
=BC=E6=C8=DD=D0=D4=BF=BC=C2=C7=B5=C4=C9=F9=D2=F4=C9=E8=B1=B8=CE=C4=BC=FE=A3=
=AC=CB=FC=CA=B5=BC=CA=CA=C7=B5=BD=C9=CF=CA=F6=CA=FD=D7=D6=C9=E8=B1=B8=B5=C4=
=D2=BB=B8=F6=D3=B3=C9=E4=A3=AC=CB=FC=D7=EE=B4=F3=B5=C4=CC=D8=C9=AB=BB=F2=D0=
=ED=CA=C7=B6=D4=D6=EE=C8=E7wav=D5=E2=C0=E0=CE=C4=BC=FE=B8=F1=CA=BD=B5=C4=D6=
=B1=BD=D3=D6=A7=B3=D6=A1=A3=CE=D2=C3=C7=CF=C2=C3=E6=B5=C4=C0=FD=D7=D3=BC=B4=
=CA=B9=D3=C3=C1=CB=B4=CB=C9=E8=B1=B8=CE=C4=BC=FE=CA=B5=CF=D6=C1=CB=D2=BB=B8=
=F6=BC=F2=B5=A5=B5=C4=C2=BC=D2=F4=BB=FA=A3=BA=CE=D2=C3=C7=B4=D3=C9=F9=BF=A8=
=C9=E8=B1=B8=A3=A8=B5=B1=C8=BB=D2=AA=D3=C3=C2=F3=BF=CB=B7=E7=A3=A9=B6=C1=C8=
=A1=D2=F4=C6=B5=CA=FD=BE=DD=A3=AC=B2=A2=BD=AB=CB=FC=B4=E6=B7=C5=B5=BD=CE=C4=
=BC=FEtest.wav=D6=D0=C8=A5=A1=A3=D2=AA=B2=A5=B7=C5=D5=E2=B8=F6wav=CE=C4=BC=
=FE=A3=AC=D6=BB=D2=AA=C8=E7=C7=B0=C3=E6=CB=F9=CA=F6=A3=AC=CA=B9=D3=C3=C3=FC=
=C1=EEcp=20
test.wav=20
=
>/dev/audio=BC=B4=BF=C9=A3=AC=B5=B1=C8=BB=C4=E3=D2=B2=BF=C9=D2=D4=D3=C3=
Linux=CF=C2=C6=E4=CB=FB=B5=C4=B6=E0=C3=BD=CC=E5=C8=ED=BC=FE=C0=B4=B2=A5=B7=
=C5=D5=E2=B8=F6=CE=C4=BC=FE=A1=A3<BR>=CF=C2=C3=E6=BC=B4=CA=C7=CD=EA=D5=FB=
=B5=C4=B3=CC=D0=F2=C7=E5=B5=A5=A3=BA</P>
<P>/* =
=B4=CB=CE=C4=BC=FE=D6=D0=B6=A8=D2=E5=C1=CB=CF=C2=C3=E6=CB=F9=D3=D0=D0=CE=C8=
=E7SND_=B5=C4=B1=E4=C1=BF*/<BR>#include <BR>#include <BR>#include=20
<BR>#include <BR>#include </P>
<P>main()<BR>{<BR>/* =
id=A3=BA=B6=C1=C8=A1=D2=F4=C6=B5=CE=C4=BC=FE=C3=E8=CA=F6=B7=FB=A3=BBfd=A3=
=BA=D0=B4=C8=EB=B5=C4=CE=C4=BC=FE=C3=E8=CA=F6=B7=FB=A1=A3i=A3=ACj=CE=AA=C1=
=D9=CA=B1=B1=E4=C1=BF*/<BR>int=20
id,fd,i,j;<BR>/* =
=B4=E6=B4=A2=D2=F4=C6=B5=CA=FD=BE=DD=B5=C4=BB=BA=B3=E5=C7=F8=A3=AC=BF=C9=D2=
=D4=B5=F7=D5=FB*/<BR>char testbuf[4096];<BR>/*=20
=
=B4=F2=BF=AA=C9=F9=BF=A8=C9=E8=B1=B8=A3=AC=CA=A7=B0=DC=D4=F2=CD=CB=B3=F6*=
/<BR>if ( ( id =3D open ( "/dev/audio", O_RDWR ) ) < 0=20
) {<BR>fprintf (stderr, " Can't open sound =
device!\n");<BR>exit ( -1=20
) ;<BR>}<BR>/* =
=B4=F2=BF=AA=CA=E4=B3=F6=CE=C4=BC=FE=A3=AC=CA=A7=B0=DC=D4=F2=CD=CB=B3=F6*=
/<BR>if ( ( fd =3D open=20
("test.wav",O_RDWR))<0){<BR>fprintf ( stderr, " Can't =
open output=20
file!\n");<BR>exit (-1 );<BR>}<BR>/* =
=C9=E8=D6=C3=CA=CA=B5=B1=B5=C4=B2=CE=CA=FD=A3=AC=CA=B9=B5=C3=C9=F9=D2=F4=C9=
=E8=B1=B8=B9=A4=D7=F7=D5=FD=B3=A3*/<BR>/*=20
=
=CF=EA=CF=B8=C7=E9=BF=F6=C7=EB=B2=CE=BF=BCLinux=B9=D8=D3=DA=C9=F9=BF=A8=B1=
=E0=B3=CC=B5=C4=CE=C4=B5=B5*/<BR>i=3D0;<BR>ioctl =
(id,SNDCTL_DSP_RESET,(char=20
*)&i) ;<BR>ioctl (id,SNDCTL_DSP_SYNC,(char=20
*)&i);<BR>i=3D1;<BR>ioctl (id,SNDCTL_DSP_NONBLOCK,(char=20
*)&i);<BR>i=3D8000;<BR>ioctl (id,SNDCTL_DSP_SPEED,(char=20
*)&i);<BR>i=3D1;<BR>ioctl (id,SNDCTL_DSP_CHANNELS,(char=20
*)&i);<BR>i=3D8;<BR>ioctl (id,SNDCTL_DSP_SETFMT,(char=20
*)&i);<BR>i=3D3;<BR>ioctl =
(id,SNDCTL_DSP_SETTRIGGER,(char=20
*)&i);<BR>i=3D3;<BR>ioctl =
(id,SNDCTL_DSP_SETFRAGMENT,(char=20
*)&i);<BR>i=3D1;<BR>ioctl (id,SNDCTL_DSP_PROFILE,(char=20
*)&i);<BR>/* =
=B6=C1=C8=A1=D2=BB=B6=A8=CA=FD=C1=BF=B5=C4=D2=F4=C6=B5=CA=FD=BE=DD=A3=AC=B2=
=A2=BD=AB=D6=AE=D0=B4=B5=BD=CA=E4=B3=F6=CE=C4=BC=FE=D6=D0=C8=A5*/<BR>for =
( j=3D0;=20
=
j<10;){<BR>i=3Dread(id,testbuf,4096);<BR>if(i>0){<BR>write(fd,fileb=
uf,i);<BR>j++;<BR>}<BR>}<BR>/*=20
=
=B9=D8=B1=D5=CA=E4=C8=EB=A1=A2=CA=E4=B3=F6=CE=C4=BC=FE*/<BR>close(fd);<BR=
>close(id);<BR>}</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -