這幾天,由於長春門檢系統專案的需要,涉及到了讀卡器資訊的串列埠讀取,所以在linux下串列埠資訊的讀取有了一點心得體會。
1開啟串列埠
與其他的關於裝置程式設計的方法一樣,在linux下,操作、控制串列埠也是通過操作起裝置檔案進行的。在linux下,串列埠的裝置檔案是/dev/ttys0或/dev/ttys1等。因此要讀寫串列埠,我們首先要開啟串列埠:
char *dev = "/dev/ttys0"; //串列埠1
int fd = open( dev, o_rdwr );
o_noctty | o_ndelay
if (-1 == fd)
perror("can't open serial port");
return -1;
else
return fd;
2設定串列埠速度
開啟串列埠成功後,我們就可以對其進行讀寫了。首先要設定串列埠的波特率:
int speed_arr = ;
int name_arr = ;
void set_speed(int fd, int speed)
}3設定串列埠資訊
這主要包括:資料位、停止位、奇偶校驗位這些主要的資訊。
/***@brief 設定串列埠資料位,停止位和效驗位
*@param fd 型別 int 開啟的串列埠檔案控制代碼
*@param databits 型別 int 資料位取值為 7 或者8
*@param stopbits 型別 int 停止位取值為 1 或者2
*@param parity 型別 int 效驗型別取值為n,e,o,,s
*/int set_parity(int fd,int databits,int stopbits,int parity)
&= ~csize;
&= ~(icanon | echo | echoe | isig); /*input*/
&= ~opost; /*output*/
switch (databits) /*設定資料位數*/
case 7
|= cs7;
break;
case 8:
|= cs8;
break;
default:
fprintf(stderr,"unsupported data size\n"); return (false);
}switch (parity)
/* set input parity option */
if (parity != 'n')
|= inpck;
tcflush(fd,tciflush);
= 0; /* 設定超時0 seconds*/
= 13; /* define the minimum bytes data to be readed*/
if (tcsetattr(fd,tcsanow,&options) != 0)
return (true);
}在上述**中,有兩句話特別重要:
= 0; /* 設定超時0 seconds*/
關閉Linux串列埠除錯
一直以來,我們都習慣使用linux串列埠登陸linux控制台,但一般開發板一般是只有乙個串列埠的,但是我們有時候會使用串列埠進行正常的通訊,而linux控制台預設占用了該串列埠,導致不能應用程式使用該串列埠,所以我們有必要釋放串列埠。下面以ok6410為例,飛凌6410的linux原始碼存放在 li...
linux高階程式設計總結
第一章模板1 1.1 模板的概念1 1.2 模板與巨集的區別3 1.3 函式模板的定義與使用4 1.4 類模板的定義與使用5 1.5 模板的編譯原理7 第二章 c stl17 2.1 unix linux 基本結構17 2.2 輸入和輸出19 2.2.1 unix linux 檔案系統簡介19 2....
linux程式設計實驗報告
篇一 linux程式設計實驗報告 實驗報告 課程名稱 linux程式設計 學院 資訊科學與工程學院 專業 13計算機班級 姓名 學號 20xx年6月28日 山東科技大學教務處制 1 實驗報告 2 3 4 5 篇二 linux實驗報告六6 洛陽理工學院實驗報告 篇三 linux程式設計實驗報告 實驗一...