在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Linux串口上網(wǎng)的程序?qū)崿F(xiàn)方法

            Linux串口上網(wǎng)的程序?qū)崿F(xiàn)方法

            作者: 時間:2011-05-10 來源:網(wǎng)絡 收藏
            如果打包前的數(shù)據(jù)中有END這個字符,那么使用ESC_END代替,如果發(fā)現(xiàn)有ESC這個字符,那么使用ESC_ESC字符替換。在環(huán)境下,名從ttyS0開始依次是ttyS1、ttyS2等。在本中,使用ttyS0作為通信。在打開ttyS0的時候,選項O_NOCTTY 表示不能把本當成控制終端,否則用戶的鍵盤輸入信息將影響的執(zhí)行; O_NDELAY表示打開串口的時候,并不關心另一端的串口是否在使用中。在中,打開串口設備和打開普通文件一樣,使用的是open()系統(tǒng)調(diào)用。比如我么打開串口設備1也就是COM1,只需要:

            本文引用地址:http://www.biyoush.com/article/150775.htm

            fd = open(/dev/ttyS0, O_RDWR | O_NOCTTY | O_NDELAY );

            打開的串口設備有很多設置選項。本文中使用int setup_com(int fd)設置。在系統(tǒng)頭文件termios.h>中定義了終端控制結構struct termios,tcgetattr()和tcsetattr()兩個系統(tǒng)函數(shù)獲得和設置這些屬性。結構struct termios中的域描述的主要屬性包括:

            c_cflag : 控制選項

            c_lflag : 線選項

            c_iflag : 輸入選項

            c_oflag :輸出選項

            c_cc :控制字符

            c_ispeed :輸入數(shù)據(jù)波特率

            c_ospeed :輸出數(shù)據(jù)波特率

            如果要設置某個選項,那么就使用|=運算,如果關閉某個選項就使用=和~運算。本文使用的各個選項的意義定義如下:

            c_cflag: CLOCAL 本地模式,不改變端口的所有者

            CREAD 表示使能數(shù)據(jù)接收器

            PARENB 表示偶校驗

            PARODD 表示奇校驗

            CSTOPB 使用兩個停止位

            CSIZE 對數(shù)據(jù)的bit使用掩碼

            CS8 數(shù)據(jù)寬度是8bit

            c_lflag: ICANON 使能規(guī)范輸入,否則使用原始數(shù)據(jù)(本文使用)

            ECHO 回送(echo)輸入數(shù)據(jù)

            ECHOE 回送擦除字符

            ISIG 使能SIGINTR,SIGSUSP, SIGDSUSP和 SIGQUIT 信號

            c_iflag: IXON 使能輸出軟件控制

            IXOFF 使能輸入軟件控制

            IXANY 允許任何字符再次開啟數(shù)據(jù)流

            INLCR 把字符NL(0A)映射到CR(0D)

            IGNCR 忽略字符CR(0D)

            ICRNL 把CR(0D)映射成字符NR(0A)

            c_oflag: OPOST 輸出后處理,如果不設置表示原始數(shù)據(jù)(本文使用原始數(shù)據(jù))

            c_cc[VMIN]: 最少可讀數(shù)據(jù)

            c_cc[VTIME]: 等待數(shù)據(jù)時間(10秒的倍數(shù))

            根據(jù)以上設置的定義,串口端口設置函數(shù)setup_com()定義如下:

            int setup_com(int fd){

            struct termios options;

            tcgetattr(fd, options);

            /* Set the baud rates to 38400...*/

            cfsetispeed(options, B38400);

            cfsetospeed(options, B38400);

            /* Enable the receiver and set local mode...*/

            options.c_cflag |= (CLOCAL | CREAD);

            /* Set c_cflag options.*/

            options.c_cflag |= PARENB;

            options.c_cflag = ~PARODD;

            options.c_cflag = ~CSTOPB;

            options.c_cflag = ~CSIZE;

            options.c_cflag |= CS8;

            /* Set c_iflag input options */

            options.c_iflag =~(IXON | IXOFF | IXANY);

            options.c_iflag =~(INLCR | IGNCR | ICRNL);

            options.c_lflag = ~(ICANON | ECHO | ECHOE | ISIG);

            /* Set c_oflag output options */

            options.c_oflag = ~OPOST;

            /* Set the timeout options */

            options.c_cc[VMIN] = 0;

            options.c_cc[VTIME] = 10;

            tcsetattr(fd, TCSANOW, options);

            return 1;

            }

            兩個打包和拆包函數(shù)和SLIP協(xié)議定義的一樣,拆包函數(shù)和打包相反,這里不列舉了。

            小結

            本文描述的是一個非常簡單的串口程序,如果需要可靠的通信,增加吞吐量,可在用戶空間添加適當?shù)木W(wǎng)絡控制協(xié)議,也可增加數(shù)據(jù)壓縮算法。

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

            linux相關文章:linux教程



            上一頁 1 2 3 4 5 下一頁

            評論


            相關推薦

            技術專區(qū)

            關閉