这段代码是一个函数的实现,函数的返回值是一个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 著作权归作者所有。请勿转载和采集!

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