#include "tof10120.h" u8 state = STATE_NONE; u8 index_dat = 0; int distance = 0; u8 flag_getdis = 0; void stateMachine_tof(u8 dat){ switch(state){ case STATE_NONE: if(dat == 'm'){ state = STATE_READY; } break; case STATE_READY: if(dat == 0x0a){ state = STATE_GET_DAT; } break; case STATE_GET_DAT: if(dat == 'm'){ state = STATE_GET_END; flag_getdis = 1; index_dat = 0; } else if(dat>0x2f || dat<0x3a){ if(index_dat == 0){ distance = 0; } index_dat++; distance = distance*10 + dat - 0x30; } else{ state = STATE_NONE; } break; case STATE_GET_END: if(dat == 'm'){ state = STATE_READY; } else{ state = STATE_NONE; } break; } }
时间: 2024-01-07 14:02:32 浏览: 219
tof.rar_ TOF_TOF pdf_depth estimation_tof_tof camera
这段代码是用来控制 TOF10120 模块的状态机。模块会发送一串数据,其中包含距离信息。代码中的变量 state 表示当前状态,index_dat 表示当前处理到的数据位数,distance 表示解析出的距离值,flag_getdis 表示是否成功解析出距离值。当收到字符 'm' 时,表示开始接收数据,进入 STATE_READY 状态。接下来通过判断收到的字符,进入不同的状态进行数据处理。当成功解析出距离值时,flag_getdis 被置为 1,并将 index_dat 和 distance 重置。最后,当收到字符 'm' 时,表示一次数据接收结束,进入 STATE_READY 状态,等待下一次数据接收。
阅读全文