linux串列埠程式設計

2023-01-27 12:54:03 字數 1550 閱讀 5928

這幾天,由於長春門檢系統專案的需要,涉及到了讀卡器資訊的串列埠讀取,所以在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程式設計實驗報告 實驗一...