该函数用于对UDP数据进行处理,根据传入的参数SampleNum和Procesflag来判断处理的方式。如果Procesflag的EEG_DATA_ACQ_EVT位被设置,表示AD数据采集中,需要对数据域进行封包。然后根据SampleNum来确定封包的位置,将ADS1299读取的量化值存入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/p1I5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录