打印
[CAN-bus/DeviceNet]

有关ZLG的CAN232中的环形缓冲区的问题

[复制链接]
2275|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
VIPWEIWEI|  楼主 | 2007-7-24 16:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
xwj| | 2007-7-24 16:13 | 只看该作者

这都不能理解?

想想环形跑道上赛跑,最快的追上最慢的了,那么意味着什么?

使用特权

评论回复
板凳
VIPWEIWEI|  楼主 | 2007-7-24 16:23 | 只看该作者

明白了!

挺有道理的。那如果写的慢,而读的快,是不是会读到旧的数据呀,CAN232程序是如果考虑的?

使用特权

评论回复
地板
VIPWEIWEI|  楼主 | 2007-7-24 16:55 | 只看该作者

if语句里的两个条件分别是什么意思?

        case    CAN1:
            if((0 != CANRcvBufApp.FullFlag1) || (CANRcvBufApp.ReadPoint1 != CANRcvBufApp.WritePoint1))
            {
                *Buf=CANRcvBufApp.RcvBuf[CAN1][CANRcvBufApp.ReadPoint1];
                if(++CANRcvBufApp.ReadPoint1 >= USE_CAN_RCV_BUF_SIZE)
                {
                    CANRcvBufApp.ReadPoint1 =0;
                }
                CANRcvBufApp.FullFlag1=0;
            }


还请解释解释!

使用特权

评论回复
5
平常人| | 2007-7-24 17:07 | 只看该作者

F1里这叫套圈,“写”可以套“读”的圈,反之不行

使用特权

评论回复
6
VIPWEIWEI|  楼主 | 2007-7-25 10:00 | 只看该作者

自己的理解

条件1:0 != CANRcvBufApp.FullFlag1使得在写指针追上读指针时,仍然可以读数据。
条件2:CANRcvBufApp.ReadPoint1 != CANRcvBufApp.WritePoint1使得读指针总是要在写指针的后面,保证有正确的数据可读。
  
不知理解对不对,大家评评嘛!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

43

帖子

1

粉丝