C 在linux程序中有没有控制uart rx fifo大小的方法

C 在linux程序中有没有控制uart rx fifo大小的方法,c,linux,uart,low-latency,rs485,C,Linux,Uart,Low Latency,Rs485,我正在编写软件,以便与设计糟糕的硬件进行通信。该硬件可以通过RS485线(9600 8N1)与linux pc(内核4.15)通信,并且具有很短的时间:pc在收到设备请求后,应在2ms内回复 我能够使用LOW_LATENCY标志和/sys/class/tty/ttySx/rx_trig_字节文件解决这个任务 打开端口“rx_trig_bytes”后,文件内容变为“14”,因此我需要在打开端口后向其写入“1”,以获得良好的回复延迟 有没有办法通过API调用来实现这一点,或者在系统启动/驱动程序加载

我正在编写软件,以便与设计糟糕的硬件进行通信。该硬件可以通过RS485线(9600 8N1)与linux pc(内核4.15)通信,并且具有很短的时间:pc在收到设备请求后,应在2ms内回复

我能够使用LOW_LATENCY标志和/sys/class/tty/ttySx/rx_trig_字节文件解决这个任务

打开端口“rx_trig_bytes”后,文件内容变为“14”,因此我需要在打开端口后向其写入“1”,以获得良好的回复延迟


有没有办法通过API调用来实现这一点,或者在系统启动/驱动程序加载后修复它?当前的实现看起来很难看:(

有趣的是,您发现这种方式很难看,考虑到Unix中的所有内容都是一个文件,这应该是明智的方式

我想你有权拥有自己的美感


如果您想将另一个缓冲区大小设为默认值,您可以随时在驱动程序中更改它,并按照建议重新编译内核。

当您将“1”写入代码中的文件/sys/class/tty/ttySx/rx_trig_字节时会发生什么?写入“1”后,接收和发送之间的延迟将变为亚毫秒。“1”当uart rx fifo中有一个或多个字节时,平均生成中断。所以“14”-当从uart接收到14个或多个字节并放入fifo时生成中断。那么,你是在问如何将1写入文件?否。看。我使用open(“/dev/ttyS2”),然后使用ioctl(fd,TIOCGSERIAL…),然后使用tcgetattr()/cfsetospeed()/cfsetispeed()/tcsetattr()/tcflush,然后我在/sys/打开文件并在那里写“1”。这很难看,所以我想知道是否有任何方法可以使用API控制rxfifo?或者可能是这个“1”可以在系统引导期间设置为端口的默认值吗?API是/sys.Well中的文件。我正在使用单个文件/dev/ttyS2,其所有参数都是使用其fd和ioctl/tcsetattr/etc设置的。现在我需要打开另一个文件来设置此文件。我认为这不正常:(但看起来这是最好的方法。谢谢你的回答。不客气。我认为重新编译的优点是,你不需要在用户空间中更改任何内容,而编写文件需要根目录。如果这是一台机器上的一次性操作,我想重新编译是值得的。。。