1. 程式人生 > >linux下串列埠非標準波特率的實現

linux下串列埠非標準波特率的實現

最近要在linux下使用電腦的串列埠,而使用的波特率不是諸如9600,19200之類的標準波特率,從網上查詢非標準波特率的設定方法,都是說對termios結構體進行設定。按照網上的程式碼進行設定卻不成功。費了很大力氣終於找到了原因:原來我的linux版本支援一部分非標準的波特率。下面詳細說明

作業系統版本:ubuntu 12.04 LTS 64bit

檢視/usr/include/x86_64-linux-gnu/bits/termios.h就有一些非標準的波特率,部分程式碼如下:

/*一下紅色為標準波特率部分,B後面的數字就是波特率*/
#define  B50    0000001
#define  B75    0000002
#define  B110    0000003
#define  B134    0000004
#define  B150    0000005
#define  B200    0000006
#define  B300    0000007
#define  B600    0000010
#define  B1200    0000011
#define  B1800    0000012
#define  B2400    0000013
#define  B4800    0000014
#define  B9600    0000015
#define  B19200    0000016
#define  B38400    0000017


#ifdef __USE_MISC
# define EXTA B19200
# define EXTB B38400
#endif
#define CSIZE    0000060
#define   CS5    0000000
#define   CS6    0000020
#define   CS7    0000040
#define   CS8    0000060
#define CSTOPB    0000100
#define CREAD    0000200
#define PARENB    0000400
#define PARODD    0001000
#define HUPCL    0002000
#define CLOCAL    0004000
#ifdef __USE_MISC
# define CBAUDEX 0010000
#endif

/*下面這些就是非標準波特率嘍~,B後面的數字就是波特率*/
#define  B57600   0010001
#define  B115200  0010002
#define  B230400  0010003
#define  B460800  0010004
#define  B500000  0010005
#define  B576000  0010006
#define  B921600  0010007
#define  B1000000 0010010
#define  B1152000 0010011
#define  B1500000 0010012
#define  B2000000 0010013
#define  B2500000 0010014
#define  B3000000 0010015
#define  B3500000 0010016
#define  B4000000 0010017

使用方法:

原始碼中像設定標準波特率那樣進行設定即可,只不過是把原來標準波特率的位置替換成上面存在的非標準波特率之一,如:

cfsetispeed(&term,B2000000);
cfsetospeed(&term,B2000000);

(注意:上面程式碼不完整,請網上搜索設定串列埠標準波特率的方法)

本方法對上述linux版本有效,其他版本請自行試驗之~。

相關推薦

linux串列標準波特率實現

最近要在linux下使用電腦的串列埠,而使用的波特率不是諸如9600,19200之類的標準波特率,從網上查詢非標準波特率的設定方法,都是說對termios結構體進行設定。按照網上的程式碼進行設定卻不成功。費了很大力氣終於找到了原因:原來我的linux版本支援一部分非標準的

解決Linux串列資料接收不全的異常問題

1、引言     最近在Linux下除錯串列埠程式,遇到了串列埠資料接收不全的異常問題,經過將近一上午的努力終於找到問題根源,特此分享給大家,此次除錯過程中用到了主要用到了minicom工具,至於minicom的使用大家可以自行查詢相關資料。 2、正文  

記一次linux串列資料丟包解決過程

專案中兩個晶片之間用串列埠進行通訊,由於傳輸格式中有校驗位,在資料量很大的時候總是校驗失敗。於是花了很長的時間最終解決了這個問題。 首先串列埠丟資料有兩種情況(明顯排除傳送端傳送的資料不對),第一種是通道也就是串列埠線或者連線口不行,無法承受很高的波特率(我使用的波特率是9

linux 串列工具minicom的使用

為了在ubuntu 12.04下能夠看到正常串列埠輸出,使用Minicom. 1、安裝   sudo apt-get install minicom 2、配置 (1)首先在命令列下執行sudo minicom啟動程式 (2)進入主介面後按 Ctrl+A 然後再按Z 進入配

linux串列除錯工具/串列終端推薦: picocom

對於picocom, kermit, minicom, picocom 最簡單易用,也完全符合我的使用需求。 安裝(mint / ubuntu):$ sudo apt-get install picocom使用:$ picocom -b 115200 /dev/ttyUSB

嵌入式Linux串列除錯

By Toradex秦海 1). 簡介 UART串列埠是嵌入式裝置最為常用的除錯和通訊介面之一,無論是RS232還是RS422/485都有著非常廣泛的應用,因此本文就基於嵌入式Linux演示在User Space進行串列埠除錯。 本文所演示的平臺來自於Toradex Co

linux裝置驅動,tty串列程式設計 如何檢視linux串列是否可用?串列名稱等

如何檢視linux下串列埠是否可用?串列埠名稱等? 檢視串列埠是否可用,可以對串列埠傳送資料比如對com1口,echo lyjie126 > /dev/ttyS0 檢視串列埠名稱使用 ls -l /dev/ttyS* 一般情況下串列埠的名稱全部在dev下面,如果你沒

Cutecom--Linux串列除錯工具

Cutecom是一款在Linux環境下,非常好用的串列埠除錯工具,使用方法幾乎跟Windows下的串列埠除錯工具一樣,非常方便。 Cutecom的安裝:直接在終端輸入:sudo apt-get install cutecom。 安裝完後,使用命令:sudo cutecom開

Linux串列程式設計總結

1.串列埠操作需要的標頭檔案 #include <stdio.h> //標準輸入輸出定義 #include <stdlib.h> //標準函式庫定義 #include <unistd.h> //Unix標準函式定義 #include <

linux串列工具minicom使用

系統環境:ubuntu destop 11.10 我當時的需要主要是兩個,能夠看到正常串列埠輸出,並且把串列埠內容實時輸出到檔案中 那接下來工作主要是兩個:1、安裝 2、配置 相信各位也都是至少會操作一些全令行的,我們在這裡用apt-get安裝(不會的同學請google一

linux串列轉TCP網路通訊

“` include”test.h” include”modbus.h” define BUFFER_SIZE 29 int ret; modbus_t *mb; int16_t tab_reg[32]={0}; //初始化串列

linux串列控制

/*  本程式符合GPL條約  *  Beneboy 2003-5-16 */ #include <stdio.h>              // printf #include <fcntl.h>              // open #in

Linux串列通訊詳解(上)開啟串列串列初始化詳解

linux下串列埠通訊主要有下面幾個步驟 串列埠通訊流程圖 下面我會一一介紹這幾個步驟。 1.開啟串列埠 程式碼(串列埠為ttyUSB0) //開啟串列埠 int open_port(void) { int fd; fd=open("/dev/ttyUSB0

關於Linux串列通訊的一點心得

這幾天,由於長春門檢系統專案的需要,涉及到了讀卡器資訊的串列埠讀取,所以在Linux下串列埠資訊的讀取有了一點心得體會。 1.         開啟串列埠 與其他的關於裝置程式設計的方法一樣,在Linux下,操作、控制串列埠也是通過操作起裝置檔案進行的。在Linux下,串列埠的裝置檔案是/dev/ttyS0

Linux串列

1.串列埠通訊    DB9串列埠頭型                                 母頭                                                                               

Linux串列程式設計基礎

串列埠知識 序列介面 (SerialInterface) 是指資料一位一位地順序傳送,其特點是通訊線路簡單,只要一對傳輸線就可以實現雙向通訊(可以直接利用電話線作為傳輸線),從而大大降低了成本,特別適用於遠距離通訊,但傳送速度較慢。 1. 波特率

linux串列程式設計設定函式---------set_opt(fd1,115200,8,'N'1)--------------------

open /dev/ttys0, 裝置檔案之後,得到檔案描述符, 對串列埠進行設定。 /** *串列埠設定函式:例(fd1, 115200, 8, 'N', 1); *引數: *fd:串列埠裝置節點

【C語言實現串列通訊知識點整理(一)】執行緒、開啟串列、設定波特率、設定校驗位、互斥鎖等實現基本的通訊

  部分程式碼借鑑地址:https://blog.csdn.net/wangqingchuan92/article/details/73497354/ 謝謝! 1.建立執行緒線上程內進行串列埠之間的收發 void CREAT_pthread(void) { pthr

Linux作業系統串列程式設計入門教程

簡介:   Linux作業系統從一開始就對序列口提供了很好的支援,本文就Linux下的序列口通訊程式設計進行簡單的介紹。   串列埠簡介   序列口是計算機一種常用的介面,具有連線線少,通訊簡單,得到廣泛的使用。常用的串列埠是RS-232-C介面(又稱EIA RS-232-

Linux多節點SSH無密碼互聯實現

openssh color pre 都是 測試 創建 私鑰 無密碼ssh 需要 需求:有3個主機192.168.0.191、192.168.0.192、192.168.0.193,需要實現無密碼ssh互聯訪問 我使用的是root用戶進行操作的: 1、每個節點分別檢查是否安裝