Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Tinygps库中的millis()函数溢出_C++_C_Gps_Arduino - Fatal编程技术网

C++ Tinygps库中的millis()函数溢出

C++ Tinygps库中的millis()函数溢出,c++,c,gps,arduino,C++,C,Gps,Arduino,我正在制作一个GPS设备,可以在不重启的情况下运行大约一年。我正在使用TinyGPS+库。我注意到库中有millis()函数。这样它们就可以溢出。有什么办法可以避免吗?但是您需要知道节目开始后的时间还是间隔 unsigned long start = millis(); ... // Long running actions.... ... unsigned long stop = millis(); unsigned long interval = stop-start; 只要开始和结束之间

我正在制作一个GPS设备,可以在不重启的情况下运行大约一年。我正在使用
TinyGPS+
库。我注意到库中有
millis()
函数。这样它们就可以溢出。有什么办法可以避免吗?

但是您需要知道节目开始后的时间还是间隔

unsigned long start = millis();
...
// Long running actions....
...
unsigned long stop = millis();
unsigned long interval = stop-start;
只要开始和结束之间的间隔不超过49天,此项仍然有效。我怀疑您是否需要计算从程序开始到计数器溢出的时间间隔

另请参见此处:

您可以使用millis()和long int变量每天计算时间,使用另一个变量每天计算时间,然后重置计时器,但不重置arduino


有了它,你就不用担心溢出并保持正常工作。

你不能检测到它何时会缠绕并适当地处理它吗?你为什么不使用fix_age来代替它,它很长,因此不会溢出Thanx uncletall来回复。这意味着millis()函数将在近50天内溢出。1.我怀疑它是否也会影响时间间隔?2.我必须根据给定的链接更正所有的millis()函数吗?(数字较大)3.即使溢出后,工作时间间隔是否正确?1。usless时间小于溢出值,则可以使用2。对下次一定要写millis()-startTime 3。是的。是的usefull@FrancescoMM. 实际上,这种设计是这样的,如果在开始和停止之间有溢出,那么只要使用unsigned int,数字就不会是负数。它们基本上会再次从0开始。示例:start是MAX_UINT-10,stop是10,然后stop-start=20。确切地说,uncletall使用的是UNSIGNED,有关更深入的解释,请参见解决方案#2