>> 俺前面说的很明白了,FIFO的TIMEOUT是FIFO才有的特性,是硬件上的。和软件系统一点关系也没有。
居然说出了 "FIFO的TIMEOUT" 这个词
FIFO是一个和内存里的队列一样的东西,只是FIFO是硬件,不需要CPU来介入就可以保存16-128个接收进来的字节
原则上FIFO是静态的,和时间无关,顶多输出 满,1/2满,1/4满...,空 的状态,绝对没有TIMEOUT这个输出
有TIMEOUT的是串口的接收器,只是接收FIFO的输入一般是接在串口的接收器的输出,但是绝不能说是FIFO的TIMEOUT
>> 驱动程序和这个没关系。串口驱动设计,最终是要将数据移进队列中,这才 是正道。几乎所有的操作系统和好的程序结构都是如此的。
>> LS走到死胡同了 >> 你不会是在接收数据的时候同时开始解析数据包吧?如果是,那么你的做法是错误的。你的观点好象都是从这个角度思考出来的。
在工业自动控制应用里,很多串口的数据都是在接收时直接处理了,尤其是内存很小或是CPU速度不是很快的单片机
还有,在自动化生产车间里,几百个传感器的串口每秒数十次数百次的数据输出,如果全部都要"将数据移进队列"不知要花多少成本
当然是接收到正常无误的数据,就丢了,有异常才"移进队列"向上回报
大概这些人,写上位机程序写多了,都不用考虑内存够不够用,也没有真正在大规模工控现场待过
才会说出"将数据移进队列中,这才是正道"的话,让我想到晋惠帝的"何不食肉糜" |