UDP 数据处理函数:封包 EEG 数据
这段代码是一个函数的实现,函数的返回值是一个8位无符号整数(uint8_t)。函数的参数是两个,第一个参数是一个8位无符号整数(SampleNum),第二个参数是一个32位无符号整数(Procesflag)。
函数的主要功能是对数据进行封包处理。首先判断Procesflag中是否包含EEG_DATA_ACQ_EVT标志位,如果包含则执行数据封包的操作,否则返回ERROR。在数据封包的过程中,根据SampleNum的值从ADS1299芯片中读取采样结果,并将采样结果存储到UDP_DTx_Buff缓冲区中。同时根据样本序号和时间戳将相关信息存储到UDP_DTx_Buff中。最后返回UDP_DATA_CPL表示数据封包完成。
uint8_t UDP_DataProcess(uint8_t SampleNum ,uint32_t Procesflag)
{
/* AD数据采集中,对数据域进行封包 */
if( Procesflag & EEG_DATA_ACQ_EVT )
{
if(SampleNum!= 0xFF )
{
ADS1299_ReadResult(UDP_DTx_Buff+HEAD_SIZE+DATA_SIZE*SampleNum+7); //!< 样本每通道量化值 //!< 第1字节舍去 (被覆盖)
UDP_DTx_Buff[HEAD_SIZE+DATA_SIZE*SampleNum] = UDP_SAMPLE_FH; //!< 样本起始分隔符
UDP_DTx_Buff[HEAD_SIZE+DATA_SIZE*SampleNum+1] = SampleNum; //!< 样本序号(低八位) - 显示从0开始的序数
UDP_DTx_Buff[HEAD_SIZE+DATA_SIZE*SampleNum+2] = 0x00; //!< 样本序号(高八位)
UDP_DTx_Buff[HEAD_SIZE+DATA_SIZE*SampleNum+3]=*((uint8_t *)(pCurTimeStamp+SampleNum)); //!< 样本时间戳 - 增量型(每样本相对开始采样时点的时间增量)精度10us,注意小端对齐
UDP_DTx_Buff[HEAD_SIZE+DATA_SIZE*SampleNum+4]=*((uint8_t *)(pCurTimeStamp+SampleNum)+1);
UDP_DTx_Buff[HEAD_SIZE+DATA_SIZE*SampleNum+5]=*((uint8_t *)(pCurTimeStamp+SampleNum)+2);
UDP_DTx_Buff[HEAD_SIZE+DATA_SIZE*SampleNum+6]=*((uint8_t *)(pCurTimeStamp+SampleNum)+3);
// UDP_DTx_Buff[HEAD_SIZE+DATA_SIZE*SampleNum+7]=0x00; //!< 默认无标签事件
// UDP_DTx_Buff[HEAD_SIZE+DATA_SIZE*SampleNum+8]=0x00;
return UDP_DATA_CPL;
}
else
return ERROR;
}
;
原文地址: https://www.cveoy.top/t/topic/p1HE 著作权归作者所有。请勿转载和采集!