none
诚心请教串口驱动SerialEventHandler的问题 RRS feed

  • 问题

  • SerialEventHandler中维护的软件缓冲,小弟不明白这个RoomLeft的计算为什么是这样的?   -1又代表什么呢?
    代码可能比较长,麻烦各位能帮忙解释一下吗,小弟看了很久都没搞懂,
    另外有初学CE驱动的朋友吗,可以加我QQ:119542794,大家一起进步!

    if   (   RxRead(pSerialHead)   ==   0   )   {
                                    RoomLeft   =   RxLength(pSerialHead)   -   RxWrite(pSerialHead)   -   1;
                            }   else   {
                                    RoomLeft   =   RxLength(pSerialHead)   -   RxWrite(pSerialHead);
                            }
                            if   (   RxRead(pSerialHead)   >   RxWrite(pSerialHead)   )   {
                                    RoomLeft   =   RxRead(pSerialHead)   -   RxWrite(pSerialHead)   -   1;

    2008年2月17日 2:52

全部回复

  • 这很断代码显然是想写一个循环缓冲区,
    RxRead(pSerialHead) :表示读数据指针的位置
    RxWrite(pSerialHead) :表示谢数据指针的位置
    RxLength(pSerialHead)  :表示计算出整个缓冲区的空间长度
    -1 :表示读写的指针是不会重合
    之前做过一个CAN的开发项目使用过,在高速的驱动数据采集中经常用到。

    2009年10月20日 2:48