linux下串列埠程式設計的個人心得

2021-04-02 05:37:22 字數 2338 閱讀 5370

我剛剛完成了乙個串列埠的專案,有一點收穫,就說說著段時間的體會吧!

後來發現,其實串列埠程式設計的實質就是多串列埠屬性的設定。

而屬性也就下面這麼幾個:

c_cflag control options

c_lflag line options

c_iflag input options

c_oflag output options

c_cc control characters

c_ispeed input baud (new inte***ce)

c_ospeed output baud (new inte***ce)

關鍵是理解有那些屬性引數可以設定以及是什麼意思。

當把這篇文章看完之後,基本可以解決串列埠的設定問題了。不過這是乙個英文的版本,本人打算在暑假裡把他翻譯為中文版本。

關於具體的例子:

http://.comptechdoc./os/linux/programming/c/linux_pgcserial.html不錯,很詳細,不過比較複雜。

中文的《linux serial howto 中譯版》上面就有不少,也很值得參考。

下面的是我的程式,乙個串列埠讀取,往mysql資料庫寫資料的程式:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include "mysql.h"

#define baudrate b9600

#define device "/dev/ttys0"

#define _posix_source 1

#define false 0

#define true 1

int insertdb(int d1, int d2, int d3, int d4) else

mysql_close(&connect);

} else

return exit_success;

}int main(void)

tcgetattr(fd, &oldtio);

bzero(&newtio,sizeof(struct termios));

newtio.c_cflag|= (clocal | cread);

newtio.c_cflag|=baudrate;

newtio.c_cflag&=~cstopb;

newtio.c_cflag&=~parenb;

newtio.c_cflag&=~csize;

newtio.c_cflag|=cs8;

newtio.c_cflag&=~crtscts;

newtio.c_lflag=0;

newtio.c_oflag=0;

newtio.c_cc[vmin]=4;

newtio.c_cc[vtime]=0;

newtio.c_iflag&=~(ixon|ixoff|ixany);

cfsetispeed(&newtio, baudrate);

cfsetospeed(&newtio, baudrate);

tcsetattr(fd, tcsanow, &newtio);

tcflush(fd, tciflush);

cbuf[0] = 0x00; 

//  cbuf[1] = 0x00;

j = 0;

for(k = 0; k < 4; k++)

res_w = write(fd, cbuf, 2);

/* debug here 

printf("cbuf : %x %x /n", cbuf[0], cbuf[1]);

printf("buf : %x : %x : %x : %x /n", inbuf[0], inbuf[1], inbuf[2], inbuf[3]);

*/res_r = read(fd, &inbuf, 255);

if(res_r != -1)

printf("/n");

if(insertdb(buf[0], buf[1], buf[2], buf[3]))

printf("insert into db success!");

}else // if end here

}// for end here 

tcsetattr(fd, tcsanow, &oldtio);

close(fd);

exit(0);

} // main end here

linux下串列埠程式設計的個人心得

後來發現,其實串列埠程式設計的實質就是多串列埠屬性的設定。而屬性也就下面這麼幾個 c cflag control options c lflag line options c iflag input options c oflag output options c cc control charac...

centos下安裝odbc驅動個人心得

centos下安裝odbc驅動個人心得 環境依賴和安裝包版本 我是在centos虛擬機上安裝的,虛擬機器是centos linux release 7.6.1810 core odbc的驅動版本 unixodbc 2.3.4 oracle instantclient12.2 basic 12.2.0...

react專案成型的個人心得

此文是我在react專案搭建後對整個流程的一些環節進行整理和梳理,如有錯誤還請指正。一般目錄結構搭建好後,我們會首先在src中開始工作,因為大多數 都是在src中完成的。這裡要說乙個react專案的構建思想 1 準備工作比較全面的目錄結構如下 關於入口檔案以下是基礎和全面版 2 建立主元件3拆分元件...