中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 文件I/O編程之: 嵌入式Linux串口應(yīng)用編程

        文件I/O編程之: 嵌入式Linux串口應(yīng)用編程

        作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò) 收藏

        本文引用地址:http://www.antipu.com.cn/article/257136.htm

        在本實(shí)例中使用tcflush()函數(shù),對(duì)于在緩沖區(qū)中的尚未傳輸?shù)臄?shù)據(jù),或者收到的但是尚未讀取的數(shù)據(jù),其處理方法取決于queue_selector的值,它可能的取值有以下幾種。

        n TCIFLUSH:對(duì)接收到而未被讀取的數(shù)據(jù)進(jìn)行清空處理。

        n TCOFLUSH:對(duì)尚未傳送成功的輸出數(shù)據(jù)進(jìn)行清空處理。

        n TCIOFLUSH:包括前兩種功能,即對(duì)尚未處理的輸入輸出數(shù)據(jù)進(jìn)行清空處理。

        如在本例中所采用的是第一種方法:

        tcflush(fd,TCIFLUSH);

        9.激活配置

        在完成全部配置之后,要激活剛才的配置并使配置生效。這里用到的函數(shù)是tcsetattr(),它的函數(shù)原型是:

        tcsetattr(intfd,intoptional_actions,conststructtermios*termios_p);

        其中參數(shù)termios_p是termios類型的新配置變量。

        參數(shù)optional_actions可能的取值有以下3種:

        n TCSANOW:配置的修改立即生效。

        n TCSADRAIN:配置的修改在所有寫入fd的輸出都傳輸完畢之后生效。

        n TCSAFLUSH:所有已接受但未讀入的輸入都將在修改生效之前被丟棄。

        該函數(shù)若調(diào)用成功則返回0,若失敗則返回-1,代碼如下所示:

        if((tcsetattr(fd,TCSANOW,new_cfg))!=0)

        {

        perror(tcsetattr);

        return-1;

        }

        下面給出了配置的完整函數(shù)。通常,為了函數(shù)的通用性,通常將常用的選項(xiàng)都在函數(shù)中列出,這樣可以大大方便以后用戶的調(diào)試使用。該設(shè)置函數(shù)如下所示:

        intset_com_config(intfd,intbaud_rate,

        intdata_bits,charparity,intstop_bits)

        {

        structtermiosnew_cfg,old_cfg;

        intspeed;

        /*保存并測(cè)試現(xiàn)有參數(shù)設(shè)置,在這里如果串口號(hào)等出錯(cuò),會(huì)有相關(guān)的出錯(cuò)信息*/

        if(tcgetattr(fd,old_cfg)!=0)

        {

        perror(tcgetattr);

        return-1;

        }

        /*設(shè)置字符大小*/

        new_cfg=old_cfg;

        cfmakeraw(new_cfg);/*配置為原始模式*/

        new_cfg.c_cflag=~CSIZE;

        /*設(shè)置波特率*/

        switch(baud_rate)

        {

        case2400:

        {

        speed=B2400;

        }

        break;

        case4800:

        {

        speed=B4800;

        }

        break;

        case9600:

        {

        speed=B9600;

        }

        break;

        case19200:

        {

        speed=B19200;

        }

        break;

        case38400:

        {

        speed=B38400;

        }

        break;

        default:

        case115200:

        {

        speed=B115200;

        }

        break;

        }

        cfsetispeed(new_cfg,speed);

        cfsetospeed(new_cfg,speed);

        /*設(shè)置停止位*/

        switch(data_bits)

        {

        case7:

        {

        new_cfg.c_cflag|=CS7;

        }

        break;

        default:

        case8:

        {

        new_cfg.c_cflag|=CS8;

        }

        break;

        }

        /*設(shè)置奇偶校驗(yàn)位*/

        switch(parity)

        {

        default:

        case'n':

        case'N':

        {

        new_cfg.c_cflag=~PARENB;

        new_cfg.c_iflag=~INPCK;

        }

        break;

        case'o':

        case'O':

        {

        new_cfg.c_cflag|=(PARODD|PARENB);

        new_cfg.c_iflag|=INPCK;

        }

        break;

        case'e':

        case'E':

        {

        new_cfg.c_cflag|=PARENB;

        new_cfg.c_cflag=~PARODD;

        new_cfg.c_iflag|=INPCK;

        }

        break;

        case's':/*asnoparity*/

        case'S':

        {

        new_cfg.c_cflag=~PARENB;

        new_cfg.c_cflag=~CSTOPB;

        }

        break;

        }

        /*設(shè)置停止位*/

        switch(stop_bits)

        {

        default:

        case1:

        {

        new_cfg.c_cflag=~CSTOPB;

        }

        break;

        case2:

        {

        new_cfg.c_cflag|=CSTOPB;

        }

        }

        /*設(shè)置等待時(shí)間和最小接收字符*/

        new_cfg.c_cc[VTIME]=0;

        new_cfg.c_cc[VMIN]=1;

        /*處理未接收字符*/

        tcflush(fd,TCIFLUSH);

        /*激活新配置*/

        if((tcsetattr(fd,TCSANOW,new_cfg))!=0)

        {

        perror(tcsetattr);

        return-1;

        }

        return0;

        }

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        linux相關(guān)文章:linux教程




        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉