linux串口緩沖區的大小,linux-----------串口設置緩沖器的大小

轉自:http://stackoverflow.com/questions/10815811/linux-serial-port-reading-can-i-change-size-of-input-buffer

You want to use the serial IOCTL?TIOCSSERIAL?which allows changing both receive buffer depth and send buffer depth (among other things). The maximums depend on your hardware, but if a 16550A is in play, the max buffer depth is 14.

You can find code that does something similar to what you want to do?here

一下轉自:http://e2e.ti.com/support/embedded/linux/f/354/t/164893.aspx

Hello,

I need to send a character (acknowledgement) after?reception?of a telegram

within no more than 2ms. Before beginning the real application, I wrote a

small test program, to measure the latency. Very strange: sometimes the

latency is about 3ms, sometimes about some �s only, but never other values,

than these 2.

For testing, I send about 3 times per second the telegram "abcdefghij" from

another system to my serial interface.

Perhaps, I need some more information about the fifos: are there tx and rx

fifos, where and how should I configure them?

Here is my test-program with some more detailed questions:

/* I tried 0, 1, 10 and 16, but it does not seem to change anything... */

#define FIFO_SIZE 1

/* This is needed, if not, we can get up to 10ms latency. */

#define TEST_LOW_LATENCY 1

/* If 1, than it seems, some transmissions get lost... */

#define TEST_OUTPUT_FLUSH 0

/* Perhaps only useful with heavy load... */

#define TEST_SCHED 1

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define _POSIX_SOURCE 1

#define DEVICE "/dev/ttyS0"

#define FRAME_SIZE 10 // "abcdefghij"

int fd;

void serial_init()

{

struct termios options;

struct serial_struct serial;

if((fd = open(DEVICE, O_RDWR | O_NOCTTY)) < 0){

perror(DEVICE);

exit(-1);

}

ioctl(fd, TIOCGSERIAL, &serial);

#if TEST_LOW_LATENCY

serial.flags |= ASYNC_LOW_LATENCY;

#else

serial.flags &= ~ASYNC_LOW_LATENCY;

#endif

serial.xmit_fifo_size = FIFO_SIZE; // what is "xmit" ??

ioctl(fd, TIOCSSERIAL, &serial);

tcgetattr(fd, &options);

cfsetispeed(&options, B19200);

cfsetospeed(&options, B19200);

options.c_cflag &= ~(CSIZE | PARODD | CSTOPB | CRTSCTS);

options.c_cflag |= CLOCAL | CREAD | CS8 | PARENB;

options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);

options.c_iflag |= INPCK | ISTRIP;

options.c_oflag &= ~OPOST;

options.c_cc[VTIME] = 1;

options.c_cc[VMIN] = FRAME_SIZE;

tcsetattr(fd, TCSANOW, &options);

}

int check_frame()

{

char buf[FRAME_SIZE + 1];

while(!read(fd, buf, FRAME_SIZE));

buf[FRAME_SIZE] = '\0';

puts(buf);

return buf[FRAME_SIZE - 1] == 'j';

}

void serial_ack()

{

write(fd, "a", 1);

#if TEST_OUTPUT_FLUSH

tcflush(fd, TCOFLUSH);

#endif

}

int main()

{

#if TEST_SCHED

struct sched_param sched;

sched_getparam(0, &sched);

sched.sched_priority = 50;

sched_setscheduler(0, SCHED_RR, &sched);

#endif

serial_init();

while(1)

if(check_frame())

serial_ack();

else

puts("Error");

return 0;

}

I would be glad about any hint!

Greetings, Peter

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532798.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532798.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532798.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FLOPs、FLOPS、Params的含義及PyTorch中的計算方法

FLOPs、FLOPS、Params的含義及PyTorch中的計算方法 含義解釋 FLOPS&#xff1a;注意全大寫&#xff0c;是floating point operations per second的縮寫&#xff08;這里的大S表示second秒&#xff09;&#xff0c;表示每秒浮點運算次數&#xff0c;理解為計算速度。是一個衡量…

設置中文linux輸入ubuntu,Linux_ubuntu怎么設置成中文?ubuntu中文設置圖文方法,  很多朋友安裝ubuntu后,發 - phpStudy...

ubuntu怎么設置成中文&#xff1f;ubuntu中文設置圖文方法很多朋友安裝ubuntu后&#xff0c;發現都是英文&#xff0c;看不懂要怎么辦?其實ubuntu是可以設置成中文的&#xff0c;下文小編就為大家帶來ubuntu中文的設置方法&#xff0c;一起去看下設置方法吧。ubuntu中文設置方…

科普 | 單精度、雙精度、多精度和混合精度計算的區別是什么?

科普 | 單精度、雙精度、多精度和混合精度計算的區別是什么? 轉自&#xff1a;https://zhuanlan.zhihu.com/p/93812784 我們提到圓周率 π 的時候&#xff0c;它有很多種表達方式&#xff0c;既可以用數學常數3.14159表示&#xff0c;也可以用一長串1和0的二進制長串表示。 …

linux 磁盤分配 簡書,linux 磁盤分區

1物理磁盤的構成&#xff1a; 盤面&#xff1a;由一圈一圈的磁道組成機械手臂&#xff1a;讀取數據主軸馬達&#xff1a;幫助機械手臂轉動2 扇區&#xff1a;磁盤上存取數據的最小單位512字節按照扇區分配大小&#xff0c;如果數據只有一字節也會占用512字節簇&#xff1a;用若…

條件控制與條件傳送詳解

條件控制與條件傳送詳解 提要 CSAPP3e中文譯本 3.6.5 用條件控制來實現條件分支 3.6.6 用條件傳送來實現條件分支 CSAPP3e第三章前面主要是介紹了機器級代碼的二進制形式和匯編形式、反匯編、x86匯編的基礎指令、條件碼及其訪問方式等。 在介紹到匯編語言的條件分支時分了兩…

聯合體(union)的使用方法及其本質

聯合體&#xff08;union&#xff09;的使用方法及其本質 轉自&#xff1a;https://blog.csdn.net/huqinwei987/article/details/23597091 有些基礎知識快淡忘了&#xff0c;所以有必要復習一遍&#xff0c;在不借助課本死知識的前提下做些推理判斷&#xff0c;溫故知新。 1…

linux設備驅動之串口移植,Linux設備驅動之UART驅動結構

一、對于串口驅動Linux系統中UART驅動屬于終端設備驅動&#xff0c;應該說是實現串口驅動和終端驅動來實現串口終端設備的驅動。要了解串口終端的驅動在Linux系統的結構就先要了解終端設備驅動在Linux系統中的結構體系&#xff0c;一方面自己了解的不夠&#xff0c;另一發面關于…

linux python復制安裝,復制一個Python全部環境到另一個環境,python另一個,導出此環境下安裝的包...

復制一個Python全部環境到另一個環境&#xff0c;python另一個,導出此環境下安裝的包導出此環境下安裝的包的版本信息清單pipfreeze>requirements.txt聯網&#xff0c;下載清單中的包到all-packet文件夾[[email protected] ~]# pip download -d ./all-packet -r requirement…

NVIDIA英偉達的Multi-GPU多卡通信框架NCCL

NVIDIA英偉達的Multi-GPU多卡通信框架NCCL 筆者注&#xff1a;NCCL 開源項目地址&#xff1a;https://github.com/NVIDIA/nccl 轉自&#xff1a;https://www.zhihu.com/question/63219175/answer/206697974 NCCL是Nvidia Collective multi-GPU Communication Library的簡稱&…

C語言n個坐標點間的最大距離,c語言已知兩點坐標,求另一點到穿過這兩點的直線最短距離。...

c語言已知兩點坐標&#xff0c;求另一點到穿過這兩點的直線最短距離。以下文字資料是由(歷史新知網www.lishixinzhi.com)小編為大家搜集整理后發布的內容&#xff0c;讓我們趕快一起來看一下吧&#xff01;c語言已知兩點坐標&#xff0c;求另一點到穿過這兩點的直線最短距離。#…

[分布式訓練] 單機多卡的正確打開方式:理論基礎

[分布式訓練] 單機多卡的正確打開方式&#xff1a;理論基礎 轉自&#xff1a;https://fyubang.com/2019/07/08/distributed-training/ 瓦礫由于最近bert-large用的比較多&#xff0c;踩了很多分布式訓練的坑&#xff0c;加上在TensorFlow和PyTorch之間更換&#xff0c;算是熟…

s3c2416開發板 linux,S3C2416移植內核Linux3.1的wm9713聲卡過程

移植內核的聲卡驅動。原因沒有聲卡驅動&#xff0c;WM9713聲卡驅動移植(原來的內核有UDA1341聲卡驅動&#xff0c;我們再次基礎上直接修改)1、直接復制內核得到三個文件:s3c2416_wm9713.c , wm9713.c , s3c2416_ac97.c.linux-3.1\sound\soc\codecs\Wm9713.c---->wm9713.c;li…

Linux查看文件內容命令:cat, tail, head, more, less

Linux查看文件內容命令&#xff1a;cat, tail, head, more, less cat 直接顯示整個文件。 cat直接顯示全部文件內容&#xff0c;沒有換頁等交互。 cat filenamemore more命令&#xff0c;功能類似 cat &#xff0c;cat命令是整個文件的內容從上到下顯示在屏幕上。 more會…

linux查看隊列 msg,linux第10天 msg消息隊列

cat /proc/sys/kernel/msgmax最大消息長度限制cat /proc/sys/kernel/msgmnb消息隊列總的字節數cat /proc/sys/kernel/msgmni消息條目數消息隊列綜合案例//server#include #include #include #include #include #include #include #include #define ERR_EXIT(m)do{perror(m);}wh…

Linux中 C++ main函數參數argc和argv含義及用法

Linux中 C main函數參數argc和argv含義及用法 簡介 argc 是 argument count的縮寫&#xff0c;表示傳入main函數的參數個數&#xff1b; argv 是 argument vector的縮寫&#xff0c;表示傳入main函數的參數序列或指針&#xff0c;并且第一個參數argv[0]一定是程序的名稱&…

c語言六位搶答器課程設計,51單片機八路搶答器課程設計

;說明&#xff1a;本人的這個設計改進后解決了前一個版本中1號搶答優先的問題&#xff0c;并增加了錦囊的設置&#xff0c;當參賽選手在回答問題時要求使用錦囊&#xff0c;則主持人按下搶答開始鍵&#xff0c;計時重新開始。;八路搶答器電路請看下圖是用ps仿真的&#xff0c;已…

ELF文件詳解—初步認識

ELF文件詳解—初步認識 轉自&#xff1a;https://blog.csdn.net/daide2012/article/details/73065204 一、 引言 在講解ELF文件格式之前&#xff0c;我們來回顧一下&#xff0c;一個用C語言編寫的高級語言程序是從編寫到打包、再到編譯執行的基本過程&#xff0c;我們知道在C…

埃及分數問題c語言,埃及分數問題(轉)

今日&#xff0c;小雨和小明來到網絡中心&#xff0c;繼續與劉老師討論“數的認識”問題。劉老師說&#xff1a;“還有一種‘埃及分數’需要認識。這是一類分裂分數的思維題&#xff0c;對思維能力的訓練很有價值。”小明說&#xff1a;“有意思&#xff0c;愿洗耳恭聽。”劉老…

linux常用命令--開發調試篇

前言 Linux常用命令中有一些命令可以在開發或調試過程中起到很好的幫助作用&#xff0c;有些可以幫助了解或優化我們的程序&#xff0c;有些可以幫我們定位疑難問題。本文將簡單介紹一下這些命令。 轉自&#xff1a;https://www.yanbinghu.com/2018/09/26/61877.html 示例程序…

簡單有趣的c語言小程序,一個有趣的小程序

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓源碼:#include #include #include #include #include HINSTANCE g_hInstance 0;LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nSh…