12
返回列表 发新帖
楼主: LuoR

[其他] 帮助理解一下代码

[复制链接]

该用户从未签到

57

主题

531

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1356
最后登录
2016-12-5
 楼主| 发表于 2016-3-3 13:30:55 | 显示全部楼层

给我留个QQ吧,我加你好友传给你
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2023-6-2 13:32
  • 签到天数: 272 天

    连续签到: 1 天

    [LV.8]以坛为家I

    44

    主题

    995

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    4417
    最后登录
    2023-6-2
    发表于 2016-3-4 09:23:32 | 显示全部楼层
    LuoR 发表于 2016-3-3 13:30
    给我留个QQ吧,我加你好友传给你

    还是贴出来让论坛的朋友一起解决吧.
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-3-4 10:37:58 | 显示全部楼层
    g_recv_size这个是你自己定义的吧,程序就可以理解了:
    0 !=g_recv_size——数据不为空,至少有1位数据在g_recv_size
    0xFFFFFFFF != g_recv_size——两边不等,表示数据小于64位
    上两表达式=数据在1~64位之间!
    两者相与 结果为正确[为1]执行,负责跳出
    纠正,此判断是不能执行超过64位的传输的!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    57

    主题

    531

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1356
    最后登录
    2016-12-5
     楼主| 发表于 2016-3-4 13:37:17 | 显示全部楼层
    zhjb1 发表于 2016-3-4 10:37
    g_recv_size这个是你自己定义的吧,程序就可以理解了:
    0 !=g_recv_size——数据不为空,至少有1位数据在g ...

    多谢,这个解释的太到位了,对我的理解帮助很大,谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    57

    主题

    531

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1356
    最后登录
    2016-12-5
     楼主| 发表于 2016-3-5 13:32:37 | 显示全部楼层
    zhjb1 发表于 2016-3-4 10:37
    g_recv_size这个是你自己定义的吧,程序就可以理解了:
    0 !=g_recv_size——数据不为空,至少有1位数据在g ...

    0xFFFFFFFF 为什么表示64位,而不是  -1,  还有两边都是 !=   , 中间是&&   为什么就判断是在2者之间?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    57

    主题

    531

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1356
    最后登录
    2016-12-5
     楼主| 发表于 2016-3-5 13:33:20 | 显示全部楼层
    zhjb1 发表于 2016-3-4 10:37
    g_recv_size这个是你自己定义的吧,程序就可以理解了:
    0 !=g_recv_size——数据不为空,至少有1位数据在g ...

    没有  1<     >64  这样的符号  
    为什么表示在2者之间呢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    57

    主题

    531

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1356
    最后登录
    2016-12-5
     楼主| 发表于 2016-3-7 08:46:52 | 显示全部楼层
    zhjb1 发表于 2016-3-4 10:37
    g_recv_size这个是你自己定义的吧,程序就可以理解了:
    0 !=g_recv_size——数据不为空,至少有1位数据在g ...

    所以说的BUFF最大64字节是不对的,而是64位?这么理解对吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-3-7 08:55:25 | 显示全部楼层
    LuoR 发表于 2016-3-7 08:46
    所以说的BUFF最大64字节是不对的,而是64位?这么理解对吗

    这个你需要看看手册,64 是描述的字节还是字,如是字就是64个32位的words,如是字节,则是8位的64 个Byte。如果是描述的串行数据,就可能是64 bits。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    57

    主题

    531

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1356
    最后登录
    2016-12-5
     楼主| 发表于 2016-3-7 09:01:34 | 显示全部楼层
    andrewz 发表于 2016-3-4 09:23
    还是贴出来让论坛的朋友一起解决吧.

    下边的逻辑关系能帮我具体解释一下吗?

    if ((0 != g_recv_size) && (0xFFFFFFFF != g_recv_size))                //接收BUFF最大64字节     不能执行超过64位的传输
        {
            int32_t i;

                    int32_t UartRecLen;

                    if(g_curr_recv_buf[0]==0XAA)
                            {
                                    switch(g_curr_recv_buf[1])
                                            {
                                                    case        0x01:                //读参数0XAA 0X01
                                                            if(g_recv_size!=2)
                                                                    {
                                                                            g_recv_size = 0;
                                                                            g_send_size=0;
                                                                            memset(g_curr_send_buf,0,sizeof(g_curr_send_buf));       
                                                                            memset(g_curr_recv_buf,0,sizeof(g_curr_recv_buf));               //重置串口
                                                                            return;
                                                                    }                                                               
                                                    //返回数据13字节,0XAA 0X01 波特率(1字节),模式(1字节),滤波方式(1字节),验收码(4字节),屏蔽码(4字节)
                                                                    g_send_size=0;
                                                    memset(g_curr_send_buf,0,sizeof(g_curr_send_buf));                           //填写发送缓冲区,打包
                                                                    g_curr_send_buf[0]=g_curr_recv_buf[0];
                                                                    g_curr_send_buf[1]=g_curr_recv_buf[1];
                                                                    g_curr_send_buf[2]=CAN_CONFIG1.m_BaudRate;
                                                                    g_curr_send_buf[3]=CAN_CONFIG1.m_WorkMode;
                                                                    g_curr_send_buf[4]=CAN_CONFIG1.m_FileterRate;
                                                                    g_curr_send_buf[5]=CAN_CONFIG1.m_AccCode[0];
                                                                    g_curr_send_buf[6]=CAN_CONFIG1.m_AccCode[1];
                                                                    g_curr_send_buf[7]=CAN_CONFIG1.m_AccCode[2];
                                                                    g_curr_send_buf[8]=CAN_CONFIG1.m_AccCode[3];
                                                                    g_curr_send_buf[9]=CAN_CONFIG1.m_AccMask[0];
                                                                    g_curr_send_buf[10]=CAN_CONFIG1.m_AccMask[1];
                                                                    g_curr_send_buf[11]=CAN_CONFIG1.m_AccMask[2];
                                                                    g_curr_send_buf[12]=CAN_CONFIG1.m_AccMask[3];
                                                                    g_send_size=13;
                                                                   
                                                                    g_recv_size = 0;
                                                                    memset(g_curr_recv_buf,0,sizeof(g_curr_recv_buf));

                                                                   

                                                    break;
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-5-29 08:54
  • 签到天数: 2992 天

    连续签到: 8 天

    [LV.Master]伴坛终老

    45

    主题

    5548

    帖子

    22

    金牌会员

    Rank: 6Rank: 6

    积分
    12035
    最后登录
    2025-5-29
    发表于 2016-3-7 09:08:35 | 显示全部楼层
    帮顶一下。
    签到签到
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-23 13:33 , Processed in 0.101431 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表