转自: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

linux串口缓冲区的大小,linux-----------串口设置缓冲器的大小相关推荐

  1. android设置应用字体大小,在Android应用程序改变的TextView的字体大小从原始设置更改字体大小(Font size...

    我想在我的应用程序指定我自己的文字大小,但我有这样一个问题. 当我在设备设置中更改字体大小,我的应用程序的字体大小TextView也会改变. Answer 1: 其实,设置字体大小只影响大小sp . ...

  2. HTML 如何让图片自动改变大小,CSS如何设置图片的大小

    原标题:CSS如何设置图片的大小 图片是的基本构成元素,通过img元素的属性值可以调整图片在浏览器中的显示效果,如图片的边框.大小以及为图片设置透明效果等各种样式. 通过img元素的属性值可以调整图片 ...

  3. pdfpcell 怎么设置单元格大小_word怎么设置单元格大小

    word中的单元格是可以改变的,以适应不同的数据长度.但是新手不会,怎么办?有简单易懂的方法吗?下面让学习啦小编为你带来excel设置单元格大小的方法吧,希望看完本教程的朋友都能学会并运用起来. wo ...

  4. html span字数限制,css span字体大小 span标签设置font-size字体大小

    css span字体大小文字尺寸大小设置图文教程篇,几种情况下使用span对其设置字体大小font-size技巧,span标签设置font-size字体大小. DIV CSS SPAN字体大小 css ...

  5. div怎么在css中设置字体大小,css如何设置div字体大小

    css设置div字体大小的方法是,给div字体添加font-size属性,并且设置合适的字体大小即可,例如[div {font-size:200%;}]. 本文操作环境:windows10系统.css ...

  6. linux 循环缓冲区 源码,Linux中的循环缓冲区

    在学习到 并发和竞态 时,其中的提到了缓冲区,用于实现免锁算法,这里转载的是大神有关循环缓冲区做的一些操作. 其中源代码在最下面的附件中,有关作者的讲解感觉很清晰,很好,不过这里说一下自己的见解: 点 ...

  7. linux内核缓冲区的管理,Linux内核Slab内存缓冲区管理器

    Linux内核Slab内存缓冲区管理器 维普讯资ht p:t//ww.cwqipvc.o m 3第卷第2期 24 03 ._2l · 计 机算 工 程 020 6年 1 月 De2e br 20 c ...

  8. linux 文件缓冲区,如何查看 Linux 当前缓存了哪些大文件?

    Linux 用户可能经常遇到的一个问题是,机器有 16GB 内存之多,运行的进程也不多,但是剩下的 free 内存并不多,大部分都被 buff 和 cache 占用了(比如下面我的 PC). $ fr ...

  9. qpushbutton 设置字体大小_怎样设置Qpushbutton 的大小

    匿名用户 1级 2012-10-01 回答 首先要定义一个QPushButton对象 QPushButton button = new QPushButton(): 设置button的字体类型.字体大 ...

最新文章

  1. Hibernate的简单应用
  2. 分布式项目启动时报错:Duplicate spring bean id XXX
  3. rac的crs进程是做什么的_Oracle rac进程详解
  4. 字符设备驱动基础篇2——用开发板来调试驱动模块的步骤
  5. asp连oracle测试,ASP连接Oracle
  6. 项目运行报错java.sql.SQLSyntaxErrorException: Table ‘sell.hibernate_sequence‘ doesn‘t exist
  7. mysql_real_connect段错误,mysql的多线程安全问题:在mysql_real_connect时出现段错误。...
  8. FileZilla:425 Can't open data connection for transfer of解决办法
  9. Xshel和Xftp免费版
  10. Android APK 反编译工具 JADX
  11. EVE-NG镜像导入(Dynamipshe和IOL)
  12. java课程设计 考试系统,java课程设计考试系统.
  13. 前端优化首屏加载速度
  14. BS EN 438-4装饰用薄板材压实层压制件的分类和规范
  15. (附源码)计算机毕业设计SSM教师教学质量评价系统
  16. 国外客户搜索引擎对比,Snovio为代表的外贸助手功能一览
  17. 游戏玩家的计算机配置,游戏玩家的PC都爱用什么配置?Steam十一月硬件调查数据告诉你...
  18. ASUS WIN7 DRIVER
  19. openmv扫码控制步进电机,模拟一种无接触式电梯
  20. Docker(一) 安装vim

热门文章

  1. Alibaba Sentinel规则持久化-拉模式-手把手教程【基于文件】
  2. ORACLE 添加和查看注释
  3. flowable DMN规则引擎几种类型解释_04
  4. Jenikns新建节点、配置节点、新建任务、配置任务、脚本验证
  5. git下载安装、验证、企业实战单机、多人协作
  6. 小程序开发(10)-之热力图解决方案、手绘图
  7. JavaScript-操作DOM对象-创建和插入dom节点
  8. java多参方法_Java中多参数方法进阶
  9. java将字体输出成图片格式_JAVA IO流中,能否将一个字符串以图片的格式输出出来呢,即字符串显示在图片上...
  10. java监听焦点事件_【Java Swing公开课|Java Swing焦点事件监听器怎么用,看完这篇文章你一定就会了】- 环球网校...