linux串列埠收發資料不對(由於流控等設定不對導致)
最近一個專案使用了嵌入式linxu串列埠通訊,由於通訊使用的是2進位制資料,經常出現通訊校驗失敗,資料幀大小沒問題,就是校驗出錯
c_iflag引數表
鍵 值 | 說 明 |
IGNBRK | 忽略BREAK鍵輸入 |
BRKINT | 如果設定了IGNBRK,BREAK鍵輸入將被忽略 |
IGNPAR | 忽略奇偶校驗錯誤 |
PARMRK | 標識奇偶校驗錯誤 |
INPCK | 允許輸入奇偶校驗 |
ISTRIP | 去除字元的第8個位元 |
INLCR | 將輸入的NL(換行)轉換成CR(回車) |
IGNCR | 忽略輸入的回車 |
ICRNL | 將輸入的回車轉化成換行(如果IGNCR未設定的情況下) |
IUCLC | 將輸入的大寫字元轉換成小寫字元(非POSIX) |
IXON | 允許輸出時對XON/XOFF流進行控制 |
IXANY | 輸入任何字元將重啟停止的輸出 |
IXOFF | 允許輸入時對XON/XOFF流進行控制 |
IMAXBEL | 當輸入佇列滿的時候開始響鈴 |
鍵 值 | 說 明 |
OPOST | 處理後輸出 |
OLCUC | 將輸入的小寫字元轉換成大寫字元(非POSIX) |
ONLCR | 將輸入的NL(換行)轉換成CR(回車)及NL(換行) |
OCRNL | 將輸入的CR(回車)轉換成NL(換行) |
ONOCR | 第一行不輸出回車符 |
ONLRET | 不輸出回車符 |
OFILL | 傳送填充字元以延遲終端輸出 |
OFDEL | 以ASCII碼的DEL作為填充字元,如果未設定該引數,填充字元為NUL |
NLDLY | 換行輸出延時,可以取NL0(不延遲)或NL1(延遲0.1s) |
CRDLY | 回車延遲,取值範圍為:CR0、CR1、CR2和 CR3 |
TABDLY | 水平製表符輸出延遲,取值範圍為:TAB0、TAB1、TAB2和TAB3 |
BSDLY | 空格輸出延遲,可以取BS0或BS1 |
VTDLY | 垂直製表符輸出延遲,可以取VT0或VT1 |
FFDLY | 換頁延遲,可以取FF0或FF1 |
鍵 值 | 說 明 |
CBAUD | 波特率(4+1位)(非POSIX) |
CBAUDEX | 附加波特率(1位)(非POSIX) |
CSIZE | 字元長度,取值範圍為CS5、CS6、CS7或CS8 |
CSTOPB | 設定兩個停止位 |
CREAD | 使用接收器 |
PARENB | 使用奇偶校驗 |
PARODD | 對輸入使用奇偶校驗,對輸出使用偶校驗 |
HUPCL | 關閉裝置時掛起 |
CLOCAL | 忽略調變解調器線路狀態 |
CRTSCTS | 使用RTS/CTS流控制 |
鍵 值 | 說 明 |
ISIG | 當輸入INTR、QUIT、SUSP或DSUSP時,產生相應的訊號 |
ICANON | 使用標準輸入模式 |
XCASE | 在ICANON和XCASE同時設定的情況下,終端只使用大寫。 |
ECHO | 顯示輸入字元 |
ECHOE | 如果ICANON同時設定,ERASE將刪除輸入的字元 |
ECHOK | 如果ICANON同時設定,KILL將刪除當前行 |
ECHONL | 如果ICANON同時設定,即使ECHO沒有設定依然顯示換行符 |
ECHOPRT | 如果ECHO和ICANON同時設定,將刪除打印出的字元(非POSIX) |
TOSTOP | 向後臺輸出傳送SIGTTOU訊號 |
巨集 | 說 明 | 巨集 | 說 明 |
VINTR | Interrupt字元 | VEOL | 附加的End-of-file字元 |
VQUIT | Quit字元 | VTIME | 非規範模式讀取時的超時時間 |
VERASE | Erase字元 | VSTOP | Stop字元 |
VKILL | Kill字元 | VSTART | Start字元 |
VEOF | End-of-file字元 | VSUSP | Suspend字元 |
VMIN | 非規範模式讀取時的最小字元數 |
相關推薦
linux串列埠收發資料不對(由於流控等設定不對導致)
最近一個專案使用了嵌入式linxu串列埠通訊,由於通訊使用的是2進位制資料,經常出現通訊校驗失敗,資料幀大小沒問題,就是校驗出錯 c_iflag引數表 鍵 值 說 明 IGNBRK 忽略BREAK鍵輸入 BRKINT 如果設定了IGNBRK,BREAK鍵輸入
python 實現linux串列埠收發資料
使用python實現在linux平臺收發串列埠資料,原始碼如下: uart.py #!/usr/bin/python import serial,time,thread ser=serial.Serial('/dev/ttyS1', timeout=1) print s
ZigBee(CC2530)(05) 串列埠收發資料
串列埠收發資料 目錄 一、預備知識: UART模式提供非同步序列介面。在UART模式中,介面使用雙線連線方式(含有引腳RXD、 TXD)或者四線連線方式(含有引腳RXD、 TXD、RTS和CTS),其中RTS和CTS引腳用於硬體流量
基於51 微控制器的串列埠收發資料
在進行串列埠的收發資料過程中一定要注意波特率的問題。 大多數51微控制器用的都是11m晶振而只有少部分用的是奇葩的12m(樓主的就是),在12m晶振進行串列埠通訊時切忌要將波特率設定為4800以下,應為12m晶振的波特率在9600以上誤差很大容易丟失資料,動手能力強的可以折騰一下用定時器輸出96
STM32-----採用DMA的方式實現串列埠收發資料
STM32-----採用DMA的方式實現串列埠收發資料 概述 想必看到這篇部落格的你已經知道了DMA的好處了吧,所以這兒就不過多地講述DMA對於緩解MCU壓力有多麼重要的用途,DMA在很多方面都可以使用,如IIC,SPI,USART等,這兒主要給出DMA
串列埠收發資料實驗
一、實驗目的 利用CC2530的串列埠0不停的列印資訊到電腦上,同時接收從串列埠發過來了的資料,把傳送過來的資料直接送回給電腦。 二、實驗環境 1.硬體:通用節點或任意感測器節點一個、USB模擬器、USB電纜、PC機; 2.軟體:IAR E
MTK之UART串列埠收發資料
暫存器 UARTn_RBR: Rx Buffer Register,通過讀取該暫存器接收資料。要求LCR[7]=0。 UARTn_THR: Tx Holding Register,資料先寫入該暫存器,再送至PC端。要求LCR[7]=0。 UARTn_IER
【Python】簡單的串列埠收發資料
實現效果: Python端執行的時候開啟COM3,然後準備從鍵盤獲取資料,併發送,同時接收串列埠除錯助手COM1傳送過來的資料 Python端: 串列埠除錯助手: 串列埠除錯助手使用COM1,能顯示Python端發過來的資料,當點擊發送的時候,Python端
c語言串列埠收發資料VS2013
最近師兄師姐在做GPS定姿的專案,需要把天線解算的結果從電腦串列埠傳送出去,對於VS和C語言小白的我承擔了把資料從串列埠傳送出去的任務。網上串列埠通訊的例子倒是不少,在傳送資料方面,下的功夫倒也不是很多,主要是老師還讓我把資料接收下來校驗傳送的對不對,於是開始了除錯程式碼的
Linux串列埠程式設計,實現不定長收發資料包
一、需求: 需要利用串列埠對兩臺裝置進行資料互動。 要求:資料包大小不定。能夠實現阻塞讀取每一個數據包。粘包,丟包問題在解析資料包中處理。 二、設計 為了實現不定長接收資料包,利用了 struct termios的兩個成員屬性: newtio.c_cc
Linux串列埠程式設計教程(三)——串列埠程式設計詳(原始碼)解:http://blog.csdn.net/u011192270/article/details/48174353 Linux下的串列埠程式設計(二)----(圖文並茂,講解深刻)http://blog.csdn.net/w28252
Linux串列埠程式設計教程(三)——串列埠程式設計詳(原始碼)解:http://blog.csdn.net/u011192270/article/details/48174353 Linux下的串列埠程式設計(二)----(圖文並茂,講解深刻)http://blog.csdn.ne
【C語言實現串列埠通訊知識點整理(三)】串列埠開啟、設定資料成功後進行資料讀寫
int OpenDev(char *Dev) { int fd = open(Dev,O_RDWR | O_NOCTTY | O_NONBLOCK); if(-1 == fd) { perror("Can't Open Serial Port"); return -1;
linux c poll 串列埠讀資料例程
epoll機制讀取linux串列埠資料 https://blog.csdn.net/coding__madman/article/details/51657944 com.c #include "com.h" int openSerial(char *cSerialName
[轉]串列埠收發float型資料
如果是格式化 ,用sprintf / printf; 如果傳送原始記憶體資料流, 可按下面傳送, 傳送 float a = 1.23; double b=3.2; SendByt
linux串列埠程式設計(控制流與終端)
流控制 資料在兩個串列埠之間傳輸時,常常會出現丟失資料的現象,或者兩臺計算機的處理速度不同,如桌上型電腦與微控制器之間的通訊,接收端資料緩衝區已滿,則此時繼續傳送來的資料就會丟失。流控制能解決這個問題,當接收端資料處理不過來時,就發出“不再接收”的訊號,傳送端就停止傳送,直到收到“可以繼續傳送”
linux串列埠程式設計(termios結構體說明)
termios結構體說明 轉https://www.cnblogs.com/li-hao/archive/2012/02/19/2358158.html termios結構體中,該結構體一般包括如下的成員:tcflag_t c_iflag;
Linux串列埠(serial、uart)驅動程式設計
一、核心資料結構串列埠驅動有3個核心資料結構,它們都定義在<#include linux/serial_core.h>1、uart_driveruart_driver包含了串列埠裝置名、串列埠驅動名、主次裝置號、串列埠控制檯(可選)等資訊,還封裝了tty_dri
STM32的串列埠傳送資料(字元,字串,數字.......)(重點)
#include "stm32f10x.h" #include <stdio.h> //下面strlen函式需要此標頭檔案 #include "USART.h" /**********************************************
樹莓3(Ubuntu虛擬機器編譯程式) 串列埠收發測試
*,總結: 1,配置樹莓串列埠 5.2,找到串列埠裝置,和波特率 5.3,交叉編譯程式測試(https://github.com/zacSuo/SerialPort) 嘗試流程: 1,配置樹莓串列埠 2,Windows下收發程式 2.1,使用IBM官網的串
每日一篇--linux重定向串列埠列印到telnet(方便遠端調式)
在嵌入式開發中,我們都是使用串列埠進行除錯定位問題。然而在成品除錯或者遠端除錯時,沒有串列埠,只能telnet進去,少了很多應用程序的列印,這樣就不利於我們發現問題。需要一種方法把串列埠所有輸出重定向到telnet。 /***********************