主题:NETBOX-II时钟是不是有问题 共有25426人关注过本帖 |
---|
kmajian |
1楼 |
![]() |
NETBOX-II时钟是不是有问题 ![]()
我在NETBOX-II上面做延时, 我的延迟时间是120秒, 开始运行的时候都还很准的, 但过一段时间(大概半天,10来个小时以后)就不行了, 时间会缩短, 本来延迟120秒的,可是还没有30秒就超时了, 我深入研究过自己的代码, 找不到错误(就60来行代码不可能有大问题的). 但是不管我用clock取时间还是用time都是这样,不知道会是哪里的问题?
|
单帖管理 | 引用 | 回复 ![]() |
x10 |
2楼 |
![]() |
![]()
若有测试代码,可以发给我们看看,谢谢!
|
单帖管理 | 引用 | 回复 ![]() |
kmajian |
3楼 |
![]() |
![]()
代码如下, 只是把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!" ); } |
单帖管理 | 引用 | 回复 ![]() |