主题:NETBOX-II时钟是不是有问题

  共有21562人关注过本帖    
kmajian
1楼


NETBOX-II时钟是不是有问题  发帖心情 Post By:2007-7-5 15:13:00   [只看该作者]

我在NETBOX-II上面做延时, 我的延迟时间是120秒, 开始运行的时候都还很准的, 但过一段时间(大概半天,10来个小时以后)就不行了, 时间会缩短, 本来延迟120秒的,可是还没有30秒就超时了, 我深入研究过自己的代码, 找不到错误(就60来行代码不可能有大问题的). 但是不管我用clock取时间还是用time都是这样,不知道会是哪里的问题?

  单帖管理 | 引用 | 回复 回到顶部
x10
2楼


  发帖心情 Post By:2007-7-5 22:09:00   [只看该作者]

若有测试代码,可以发给我们看看,谢谢!

  单帖管理 | 引用 | 回复 回到顶部
kmajian
3楼


  发帖心情 Post By:2007-7-6 12:58:00   [只看该作者]

代码如下, 只是把time取时换成了clock取时.

#include "config.h"

static time_t hbstart;                           // 网络开始时的clock时间
static time_t hbtime;                            // 心跳周期
static uint8 connFlg;                            // 网络连接标志
static struct g_CSysTiPara *pSysTiPara;

// 心跳处理初始化
void HeartbeatInit( struct g_CSysTiPara *CSysTiPara )
{
    pSysTiPara = CSysTiPara;
    hbtime = HB_LAND_DLY;
    connFlg = 0;
}

// 登陆成功后,心跳时间改变
void HeartbeatChange( void )
{
    hbtime = pSysTiPara->htCyc + HB_NET_DLY;
}

// 网络已经连接上,心跳开始跳动
void HearbeatStart( void )
{
    connFlg = 1;
    hbstart = time( NULL );
}

// 网络异常,心跳停止
void HearbeatEnd( void )
{
    connFlg = 0;
}

// 心跳跳动是否超时
int16 HeartbeatOverTime( void )
{
    time_t nowclk;
    int16 ret;
    
    ret = 0;
    if( connFlg > 0 )
    {
        nowclk = time( NULL );
        if( ( nowclk - hbstart ) > hbtime )
        {
            connFlg = 0;
            ret = 1;
        }
    }
    
    return ret;
}

// 心跳跳动
void Heartbeat( void )
{
    hbstart = time( NULL );
#if DEBUG_EN > 0
    struct time t;
    gettime( &t );
    printf( "%02d:%02d:%02d\n", t.ti_hour, t.ti_min, t.ti_sec );
#endif
    PDEBUGS( "A heartbeat!" );
}

  单帖管理 | 引用 | 回复 回到顶部

返回首页

NETBOX-II时钟是不是有问题

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: