arduino向串口发送数据时掉包_经过很长一段时间后,Arduino停止向串口发送数据...

本文探讨了Arduino在向串口发送数据时遇到的时钟折叠问题,导致数据丢失。通过提供修改后的代码示例,展示了如何检查和处理时钟折叠,以确保数据正确传输。同时,文章建议改进字符串比较和处理方法,以减少资源消耗。
摘要由CSDN通过智能技术生成

时钟可能会折叠。

previousclock = millis()可能会在折叠前陷入高值。您可以扩展测试以包括(currentmilis< previousmillis)加/减一些软糖因子的情况。

BTW它使用了ignas的源代码(OP源代码在没有注册的情况下无法读取,我不想注册)

编辑:我从wakkerbot复制了下面的片段,并对其进行了一些编辑。它只是为了

演示了如何使你的last_action时间戳停留在int间隔的顶部(如果bump值不是int_max的除数)

您可以稍微简化上面/下面的逻辑,因为您只对内部/外部间隔测试感兴趣。 Stamp的typedef当然应该适应millis()(unsigned long?)的类型,并删除fakemillis(),并用millis()替换它的引用。

#include

#define STAMP_INSIDE 0

#define STAMP_BELOW -1

#define STAMP_ABOVE 1

#define STAMP_BEYONDO -1

/* Intentionally very small, for fast wraparound

** Intentionally signed to stress test the logig.

*/

typedef signed char Stamp;

/* fake clock, returns incrementing value, but folds around

*/

Stamp fakemillis(void)

{

static Stamp ticker =0;

return ticker

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值