如何在外部中断时,串口收到的数据包不丢失

2016-10-031.5万
AI 快速预览详细 收起
本文讨论了在使用Arduino Uno和Processing进行串口通信时,如何防止外部中断导致的数据包丢失问题。通过在中断处理函数中保存当前状态并在中断恢复后继续读取数据,可以有效避免数据包丢失。具体来说,当外部中断触发时,保存当前状态并在中断恢复后继续读取串口缓冲区中的数据。这种方法提高了系统的稳定性和可靠性。


环境:uno,processing案例:
1.processing每1秒serial循环发送1个字节的字母[A~Z],模拟数据包
2.
void loop()
{
    while (Serial.available())
    {
        Serial.readBytes(mBufferIn, Serial.available());
        //模拟收到数据包,压入环形缓冲
        //取出整包,解析,调用函数
        //检查时间事件触发break
    }
    //处理事件
}
3.attachInterrupt触发中断
4.收到中断10秒后恢复,Serial缓冲内读取出的数据只有中断前和中断恢复后的数据包
举例:
1)中断前print B
2)中断...
3)中断恢复后print C,D,O,P,Q...(C和D应该是中断函数被触发前已经写入serial缓冲还没被read的数据,OPQ...是恢复后写入)
求助:
怎么才能在中断时,保留D和O中间缺失的数据

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
dsweiliang
dsweiliang
等大神帮你
- 没有更多了 -