亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Linux 下控制蜂鳴器發聲的程序

2019-11-09 14:45:49
字體:
來源:轉載
供稿:網友

原文地址::http://blog.csdn.net/midion9/article/details/49862991

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173/*===========================================*《linux聲音設備編程實例》* 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 */    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 1..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 {                 result->reps = reps;                argv++;             }         else 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_line(argv, &parms);     /* 打開控制臺,失敗則結束程序*/    if ( ( console_fd = open ( "/dev/console", O_WRONLY ) ) == -1 ) {         fprintf(stderr, "Failed to open console./n");        perror("open");        exit(1);     }     /* 真正開始讓揚聲器發聲*/    for (i = 0; i < parms.reps; i++) {         /* 數字1190000從何而來,不得而知*/        int magical_fairy_number = 1190000/parms.freq;         ioctl(console_fd, KIOCSOUND, magical_fairy_number); /* 開始發聲 */        usleep(1000*parms.length);       /*等待... */        ioctl(console_fd, KIOCSOUND, 0); /* 停止發聲*/        usleep(1000*parms.delay);        /* 等待... */     /* 重復播放*/    return EXIT_SUCCESS; }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美最顶级丰满的aⅴ艳星| www.久久草.com| 亚洲aⅴ日韩av电影在线观看| 中文字幕国产精品| 69久久夜色精品国产7777| 国产精品视频xxx| 91日本在线观看| 欧亚精品在线观看| 日韩视频―中文字幕| 91av国产在线| 国产成人自拍视频在线观看| 91老司机精品视频| 日韩成人激情在线| 疯狂做受xxxx高潮欧美日本| 欧美激情xxxx| 97免费视频在线播放| 欧美激情a∨在线视频播放| 亚洲免费av电影| 国产丝袜一区二区| 久久偷看各类女兵18女厕嘘嘘| 亚洲精品一区中文| 国产亚洲人成a一在线v站| 77777少妇光屁股久久一区| 亚洲视频在线观看免费| 国产一区二区三区在线观看网站| 欧美人与性动交a欧美精品| 成人a在线观看| 中文字幕亚洲欧美一区二区三区| 色伦专区97中文字幕| 中文字幕精品av| 国产成人午夜视频网址| 91国产高清在线| 丝袜美腿精品国产二区| 亚洲日韩第一页| 欧美一级淫片aaaaaaa视频| 国产精品久久久久久久久免费看| 欧美国产日本在线| 欧美在线激情网| xxx欧美精品| 成人激情综合网| 亚洲午夜久久久影院| 亚洲精品一区二区在线| 97在线精品视频| 欧美激情精品久久久| 国产精品美女久久久久av超清| 欧美国产精品日韩| 欧美成人国产va精品日本一级| 美女视频黄免费的亚洲男人天堂| 国产精品极品美女粉嫩高清在线| 国产精品免费视频xxxx| 国产在线视频2019最新视频| 欧美精品久久一区二区| 国产精品96久久久久久| 欧美日韩国产精品一区| 国产成人精品久久二区二区| 深夜福利日韩在线看| 国产精品99久久久久久人| 亚洲白拍色综合图区| 亚洲人成电影在线观看天堂色| 欧美亚洲午夜视频在线观看| 美日韩在线视频| 91深夜福利视频| 欧洲成人免费视频| 欧美日韩福利电影| 日韩中文字幕在线视频播放| 成人免费看吃奶视频网站| 伊人久久综合97精品| 国产亚洲免费的视频看| 这里只有精品视频在线| 亚洲影影院av| 亚洲成av人影院在线观看| 国产精品视频资源| 伊人亚洲福利一区二区三区| 亚洲精品久久久久久久久久久久久| 色在人av网站天堂精品| 一区二区三区精品99久久| 欧美视频免费在线| 久久久久久久久久久久久久久久久久av| 亚洲精品中文字| 久久久久久成人| 91精品国产99久久久久久| 亚洲大胆人体视频| 亚洲最大的av网站| 91在线免费看网站| 精品久久久久久中文字幕一区奶水| 日韩欧美成人免费视频| 欧美黑人xxxx| 亚洲色图13p| 欧美另类第一页| 精品久久久久久久大神国产| 国产日韩欧美另类| 在线观看视频99| 不卡av电影在线观看| 亚洲字幕一区二区| 2019中文字幕在线| 亚洲午夜性刺激影院| 欧美日韩亚洲精品内裤| 成人av.网址在线网站| 一本大道亚洲视频| 国产这里只有精品| 成人中心免费视频| 国内精品久久影院| 亚洲色图欧美制服丝袜另类第一页| 欧美午夜精品久久久久久久| 欧美激情在线一区| 91九色国产视频| 欧美一乱一性一交一视频| 国产精品女主播| 69久久夜色精品国产69乱青草| 久久久久久久久综合| 亚洲精品免费一区二区三区| 欧美激情第一页xxx| 亚洲激情自拍图| 伊人久久综合97精品| 日韩人体视频一二区| 97人洗澡人人免费公开视频碰碰碰| 欧美亚洲视频在线看网址| 久久久久久久91| 性色av一区二区三区在线观看| 精品香蕉一区二区三区| 精品日韩美女的视频高清| 欧美一级电影免费在线观看| 欧美性xxxx18| 久久精品99无色码中文字幕| 国产日韩在线一区| 久久天天躁狠狠躁夜夜爽蜜月| 欧美在线视频免费| 欧美电影电视剧在线观看| 久久激情视频久久| 亚洲91精品在线| 日韩中文字幕亚洲| 亚洲色图偷窥自拍| 韩国三级日本三级少妇99| 国产精品一区av| 青青草原一区二区| 亚洲成人亚洲激情| 2019中文字幕免费视频| 亚洲无限乱码一二三四麻| 亚洲欧美日韩第一区| 久久久久久久久久久国产| 国产精品亚洲视频在线观看| 亚洲成色777777女色窝| 日韩中文在线中文网三级| 欧美成人小视频| 91av视频在线观看| 国产午夜精品全部视频在线播放| 狠狠操狠狠色综合网| 国产午夜精品美女视频明星a级| 亚洲第一网站男人都懂| 国产成人精品在线观看| 中文字幕欧美视频在线| 欧美电影在线免费观看网站| 26uuu国产精品视频| 国产精品久久久久久久久久久久久| 欧美激情视频在线免费观看 欧美视频免费一| 欧美国产亚洲精品久久久8v| 国产精品三级在线| 国产精品嫩草视频| 国产91色在线|免| 国产免费亚洲高清| 亚洲欧美资源在线| 精品亚洲va在线va天堂资源站| 98精品国产自产在线观看| 中文字幕一精品亚洲无线一区|