|
串口驱动中定义了以下结构,实现串口接收数据的读取。
typedef struct __RX_BUFFER_INFO {
ULONG Read; /* @field Current Read index. */
ULONG Write; /* @field Current Write index. */
ULONG Length; /* @field Length of buffer */
BOOL DataAvail; /* @field BOOL reflecting existence of data. */
PUCHAR RxCharBuffer; /* @field Start of buffer */
CRITICAL_SECTION CS; /* @field Critical section */
} RX_BUFFER_INFO
其中Read表示从驱动读取到应用层。Write表示从硬件读取数据到驱动。驱动中有一个软FIFO,长度为LENGTH,指针RxCharBuffer。也就是说从硬件读到的数据存入FIFO;而上层应用数据的时候从FIFO中读出。(以上为个人的理解,不知道正确否?)
RxRead(pSerialHead) =
(RxRead(pSerialHead)+ Len
RxWrite(pSerialHead) =
(RxWrite(pSerialHead)+RoomLeft
两句指令应该就是计算读和写的入口的。但是这个入口的这两句问号表达式该怎么理解呢,不知道怎么和FIFO的先进先出关联起来的,看来好长一段时间没能想明白,请高手们指点。
|
|