linux 下串列埠通訊

2021-08-25 16:51:36 字數 2083 閱讀 5441

#include #include #include #include #include #include #include #include #include #define baudrate b115200 ///baud rate : 115200

#define device "/dev/ttyama0"

#define size 1024

int nfd = 0;

struct termios stnew;

struct termios stold;

//open port & set port

int serialinit()

if( (fcntl(nfd, f_setfl, 0)) < 0 )

if(tcgetattr(nfd, &stold) != 0)

stnew = stold;

cfmakeraw(&stnew);//將終端設定為原始模式,該模式下所有的輸入資料以位元組為單位被處理

//set speed

cfsetispeed(&stnew, baudrate);//115200

cfsetospeed(&stnew, baudrate);

//set databits

stnew.c_cflag |= (clocal|cread);

stnew.c_cflag &= ~csize;

stnew.c_cflag |= cs8;

//set parity

stnew.c_cflag &= ~parenb;

stnew.c_iflag &= ~inpck;

//set stopbits

stnew.c_cflag &= ~cstopb;

stnew.c_cc[vtime]=0; //指定所要讀取字元的最小數量

stnew.c_cc[vmin]=1; //指定讀取第乙個字元的等待時間,時間的單位為n*100ms

//如果設定vtime=0,則無字元輸入時read()操作無限期的阻塞

tcflush(nfd,tciflush); //清空終端未完成的輸入/輸出請求及資料。

if( tcsetattr(nfd,tcsanow,&stnew) != 0 )

return nfd;}

int main(int argc, char **argv)

bzero(buf, size);

while(1)

if(0 < nret)

}close(nfd);

return 0;

}

下面這個在//dev/ttyusb*下可用,在/devttyama*下無法接受,可能是串列埠設定的問題,暫不處理,以後有空再看看是什麼問題 

參考 

#include"unistd.h"

#include"fcntl.h"

#include"termios.h"

#include"string.h"

#include"iomanip"

void ttyconfig(int ttyid)

void setmode(std::string ttypath,int mode=1)

; unsigned char buf2[9]=;

unsigned char buf3[9]=;

unsigned char buf4[9]=;

unsigned char *buf;

if(mode==1) //自動校正關閉

buf=buf1;

else if(mode==2) //自動校正開啟

buf=buf2;

else if(mode==3) //快門校正

buf=buf3;

else if(mode==4) //背景校正

buf=buf4;

int ttyid=open(ttypath.c_str(),o_rdwr|o_noctty|o_nonblock);

if(ttyid<0)

}close(ttyid); }

int main(int argc,char **argv)

Linux下串列埠通訊

1.開啟串列埠 與其他的關於裝置程式設計的方法一樣,在linux下,操作 控制串列埠也是通過操作起裝置檔案進行的。在linux下,串列埠的裝置檔案是 dev ttys0或 dev ttys1等。因此要讀寫串列埠,我們首先要開啟串列埠 char dev dev ttys0 串列埠1 int fd op...

linux下串列埠通訊

配置串列埠 sudo stty f dev ttys1 115200 raw echo echoe echok crtscts 更改許可權 sudo chmod 777 dev ttys1 向串列埠輸出資料 sudo echo hello,world dev ttys1然後在另一主機的輸出端檢視輸出...

LINUX下串列埠通訊開發

摘要 1.開啟串列埠函式open port 中要實現的函式 1 open dev ttys0 o rdwr o noctty o ndelay 開啟串列埠0 2 fcntl fd,f setfl,0 恢復串列埠為阻塞狀態 3 isatty stdin fileno 測試是否為中斷裝置 非0即是中斷裝...