Linux 串列埠通訊程式設計

2021-10-08 04:04:53 字數 1709 閱讀 7978

串列埠通過直接連線在兩台裝置間的線傳送和接收資料,兩台裝置通訊最少需要三根線(傳送資料、接收資料和接地)才可以通訊。以最常見的 rs232 串列埠為例,通訊距離較近時(<12m) ,可以用電纜線直接連線標準 rs232 埠。如果傳輸距離遠,可以通過數據機(modem)傳輸。因為串列埠裝置工作頻率低且容易受到干擾,遠距離傳輸會造成資料丟失。

db9 介面的 rs232 串列埠資料線定義

linux 系統後在/dev 目錄下有若干個 ttysx(x代表從 0 開始的正整數)裝置檔案。ttys0 對應第乙個串列埠,也就是 windows 系統下的串列埠裝置 com1,以此類推。

#include /*標準輸入輸出定義*/

#include /*標準函式庫定義*/

#include /*unix 標準函式定義*/

#include

#include

#include /*檔案控制定義*/

#include /*ppsix 終端控制定義*/

#include /*錯誤號定義*/

開啟和關閉串列埠

linux 系統通常使用 termios 結構儲存串列埠引數,該結構在 termios.h標頭檔案定義如下:

struct termios

;termios 結構的各成員常用取值

termios 結構 c_cc 成員陣列下標取值及其含義

termios.h 標頭檔案為 termios 結構提供了一組設定的函式,函式定義如下:

#include

#include

int tcgetattr(int fd, struct termios *termios_p);

int tcsetattr(int fd, int optional_actions, struct termios *termios_p);

int tcsendbreak(int fd, int duration);

int tcdrain(int fd);

int tcflush(int fd, int queue_selector);

int tcflow(int fd, int action);

int cfmakeraw(struct termios *termios_p);

speed_t cfgetispeed(struct termios *termios_p);

speed_t cfgetospeed(struct termios *termios_p);

int cfsetispeed(struct termios *termios_p, speed_t speed);

int cfsetospeed(struct termios *termios_p, speed_t speed);

Linux 下串列埠通訊程式設計

int open com char device name return fd end of open com 一 串列埠程式需要的標頭檔案 include 標準輸入輸出定義 include 標準函式庫定義 include unix標準函式定義 include include include 檔案控...

Linux 串列埠通訊

011 08 03 13 04 389人閱讀收藏 舉報以前跟著做過vxworks的開發,主要通訊方式是串列埠,因為底層bsp包已經做好了,串列埠通訊非常簡單。後來接觸linux,在一塊ok6410上跑linux串列埠通訊,才發現原來天真的以為甚是簡單的串列埠變得如此的不簡單。include 1 串列...

VC串列埠通訊程式設計

win32串列埠程式設計 韓耀旭 在工業控制中,工控機 一般都基於windows平台 經常需要與智慧型儀表通過串列埠進行通訊。串列埠通訊方便易行,應用廣泛。一般情況下,工控機和各智慧型儀表通過rs485匯流排進行通訊。rs485的通訊方式是半雙工的,只能由作為主節點的工控pc機依次輪詢網路上的各智慧...