硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3638|回复: 8
收起左侧

[有问必答] 请教下接收 150个id号每个id号 保存时间为 8s之后清0重新再次接收?

[复制链接]

610

主题

3063

回帖

4913

积分

至尊会员

积分
4913
发表于 2018-6-29 15:11:11 | 显示全部楼层 |阅读模式
请教下,接收 150个 id号,每个id号 保存时间为 8s,之后清0重新再次接收,我目前的做法是给每个id号都附一个对应的值,这个值在 定时器里面每 10ms 减一次,直至此值

为0,如果接收到的 具体相关代码如下:

_Tag_RxControl.Tag_ID_RxSaveCnt 接收到的 id 次数 ++,初始化时赋值为 1,当接收到 151 个时,重新赋值为1

_Tag_RxControl.Tag_Number_ID_bak 当前接收到的 id 号

_Tag_RxControl.Tag_ID_RxSave  之前保存接收到的 id 号

_Tag_RxControl.Tag_ID_RxOutTime 与id号对应的超时时间,在 10ms 定时器里面做 --

                                for(_cnt=0; _cnt<_Tag_RxControl.Tag_ID_RxSaveCnt ; _cnt++)   //吧接收到的id 重新统统的查询一遍
                                {
                                        if(_Tag_RxControl.Tag_ID_RxSave[_cnt] == _Tag_RxControl.Tag_Number_ID_bak)      //说明之前接收到了,不需要重复接收
                                        {
                                                dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR);      // Clear RX error events in the DW1000 status register.
                                                dwt_rxreset();       
                                               
                                                if(_Tag_RxControl.Tag_ID_RxOutTime[_cnt] == 0)   //查看 id 对应的超时时间是否超时,如果超时id清0,重新接收
                                                {
                                                        _Tag_RxControl.Tag_ID_RxSave[_cnt] = 0;
                                                }
                                                return ;   // 退出整个程序,重新开始接收
                                        }                                       
                                       
                                        if((_Tag_RxControl.Tag_ID_RxSave[_cnt] != _Tag_RxControl.Tag_Number_ID_bak) &&
                                                 (_Tag_RxControl.Tag_ID_RxOutTime[_cnt] == 0))                                                        //说明此处可以保存id
                                        {
                                                _Tag_RxControl.Tag_ID_RxSave[_cnt]  = _Tag_RxControl.Tag_Number_ID_bak;
                                                _Tag_RxControl.Tag_ID_RxOutTime[_cnt] = 1000*8/10;                                      // 对应的id号赋超时时间值(超时时间设定位 8s),每10ms -- 一次
                                                _cnt = 0xfe;
                                                break;                   // 程序退出for 循环,进入下面的程序运行
                                        }
                                }

                                .... ........


接收截图如下:

out.png


从上图可以看出,貌似有些 接收的时间间隔不是 8s,有些比 8s 大,有些比 8s 小, 这个问题有什么方法可以解决一下啊 ????????????????????????

tag 发送端是每 8s 发送一次,同时检测是否有基站返回应答,如果有则继续发送, tag 如果在 8s 内没有基站应答则进入 睡眠模式,睡眠时间 5s,起来后再重新这个过程

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2018-6-30 10:19:47 | 显示全部楼层
先别做150个,先做1个,然后2个试试。估计是程序逻辑关系有问题。
回复

使用道具 举报

610

主题

3063

回帖

4913

积分

至尊会员

积分
4913
 楼主| 发表于 2018-6-30 19:15:29 | 显示全部楼层
eric2013 发表于 2018-6-30 10:19
先别做150个,先做1个,然后2个试试。估计是程序逻辑关系有问题。

貌似1、2个可以啊,但是多了,问题就来了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2018-7-2 00:47:31 | 显示全部楼层
hpdell 发表于 2018-6-30 19:15
貌似1、2个可以啊,但是多了,问题就来了

在增加几个,然后就容易找到问题了。
回复

使用道具 举报

610

主题

3063

回帖

4913

积分

至尊会员

积分
4913
 楼主| 发表于 2018-7-2 10:12:15 | 显示全部楼层
本帖最后由 hpdell 于 2018-7-2 10:14 编辑
eric2013 发表于 2018-7-2 00:47
在增加几个,然后就容易找到问题了。

终于搞定了,每次都全部扫描一遍查看是否之前保存过,
再检查超时标志 就可以了


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2018-7-3 01:04:52 | 显示全部楼层
hpdell 发表于 2018-7-2 10:12
终于搞定了,每次都全部扫描一遍查看是否之前保存过,
再检查超时标志 就可以了

回复

使用道具 举报

610

主题

3063

回帖

4913

积分

至尊会员

积分
4913
 楼主| 发表于 2018-7-4 16:57:40 | 显示全部楼层

目前测试的显示效果,
在设定的时间范围内,同一个id号只接收一次

id.png

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2018-7-5 01:06:23 | 显示全部楼层
hpdell 发表于 2018-7-4 16:57
目前测试的显示效果,
在设定的时间范围内,同一个id号只接收一次

回复

使用道具 举报

610

主题

3063

回帖

4913

积分

至尊会员

积分
4913
 楼主| 发表于 2018-7-5 06:57:46 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 01:45 , Processed in 0.186645 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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