#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即是中斷裝...