Linux串列埠程式設計

2021-06-28 23:05:58 字數 2131 閱讀 8213

.串列埠概述

常見資料通訊方式:並行通訊,序列通訊

uart的主要操作:

>資料傳送及接受

>產生中斷

>產生波特率

>loopback模式

>紅外模式

>自動流控模式

串列埠引數的配置主要包括:波特率、資料位、停止位、流控協議。

linux中的串列埠裝置檔案放於/de/目錄下,串列埠一,串列埠二分別為"/dev/ttys0","/dev/ttys1".在linux下操作串列埠與操作檔案相同.

.串列埠詳細配置

包括:波特率、資料位、校驗位、停止位等。串列埠設定由下面的結構體實現:

struct termios

; 該結構體中c_cflag最為重要,可設定波特率、資料位、校驗位、停止位。在設定波特率時需要在數字前加上'b',

如b9600,b15200.使用其需通過「與」「或」操作方式:

輸入模式c_iflag成員控制埠接收端的字元輸入處理:

.串列埠控制函式

tcgetattr 取屬性(termios結構)

tcsetattr 設定屬性(termios結構)

cfgetispeed 得到輸入速度

cfgetospeed 得到輸出速度

cfsetispeed 設定輸入速度

cfsetospeed 設定輸出速度

tcdrain  等待所有輸出都被傳輸

tcflow  掛起傳輸或接收

tcflush  刷清未決輸入和/或輸出

tcsendbreak 送break字元

tcgetpgrp 得到前台程序組id

tcsetpgrp 設定前台程序組id

#include #include #include #include #include #include #include #include #include int set_opt(int fd,int nspeed, int nbits, char nevent, int nstop)

bzero( &newtio, sizeof( newtio ) );

newtio.c_cflag |= clocal | cread;

newtio.c_cflag &= ~csize;

switch( nbits )

switch( nevent )

switch( nspeed )

if( nstop == 1 )

else if ( nstop == 2 )

newtio.c_cc[vtime] = 0;

newtio.c_cc[vmin] = 0;

tcflush(fd,tciflush);

if((tcsetattr(fd,tcsanow,&newtio))!=0)

printf("set done!\n");

return 0;

}int open_port(int fd,int comport)

; long vdisable;

if (comport==1)

else

}else if(comport==2)

else

}else if (comport==3)

else

}if(fcntl(fd, f_setfl, 0)<0)

else

if(isatty(stdin_fileno)==0)

else

printf("fd-open=%d\n",fd);

return fd;

}int main(void)

if((i=set_opt(fd,115200,8,'n',1))<0)

printf("fd=%d\n",fd);

nread=read(fd,buff,8);

printf("nread=%d,%s\n",nread,buff);

close(fd);

return;

}

linux串列埠程式設計

include 標準輸入輸出定義 include 標準函式庫定義 include unix標準函式定義 include include include 檔案控制定義 include ppsix終端控制定義 include 錯誤號定義 brief 設定串列埠通訊速率 param fd 型別 int 開...

Linux串列埠程式設計

串列埠概述 常見資料通訊方式 並行通訊,序列通訊 uart的主要操作 資料傳送及接受 產生中斷 產生波特率 loopback模式 紅外模式 自動流控模式 串列埠引數的配置主要包括 波特率 資料位 停止位 流控協議。linux中的串列埠裝置檔案放於 de 目錄下,串列埠一,串列埠二分別為 dev tt...

Linux串列埠程式設計

串列埠概述 常見資料通訊方式 並行通訊,序列通訊 uart的主要操作 資料傳送及接受 產生中斷 產生波特率 loopback模式 紅外模式 自動流控模式 串列埠引數的配置主要包括 波特率 資料位 停止位 流控協議。linux中的串列埠裝置檔案放於 de 目錄下,串列埠一,串列埠二分別為 dev tt...