unsigned short dnetlen = ((unsigned short*)pBuf)[6]; //取得pbuf【12】 while (i <(dnetlen*2+18))//i是字节数,18是报头+报尾 { int si = recv( s, (void **)&pdbuf, 3072*sizeof(char), 0 ); memcpy( pBuf+i, pdbuf, si ); i = i+ si; } bufAck[2]=pBuf[2]; SysPara_Init((Uint16 *)(pBuf+464+14));//意思是这里只要7个数据 Temper_sensor_Init(); unsigned int LEN1=236; unsigned int a=0,b=0; //pass the data to DATA[800] ,DATA[800] is sync data. while(LEN1>0) // pbuf high 8 bit is 0, low 8bit is data. { DATA[a]=pBuf[14+b];//DDS PARAMETER b=b+2; a++; LEN1--; } upp(); CS_INIT(); send(s,bufAck,18*sizeof(char),0); break;
时间: 2024-04-27 16:20:14 浏览: 148
单片机I/O口详细的结构与原理(个人认为很经典)
这段代码看起来是接收网络数据包并进行处理的代码,其中包括以下步骤:
1. 从接收缓冲区中获取数据包长度(dnetlen)。
2. 通过循环将接收到的数据包全部读取到缓冲区(pBuf)中。
3. 对缓冲区中的数据进行解析,并将其中的一部分数据传递给一个函数(SysPara_Init和Temper_sensor_Init)进行处理。
4. 对剩下的数据进行处理,将其中的一部分数据(pBuf[14+b])存储到一个数组中(DATA[a])。
5. 调用一些其他函数(upp和CS_INIT)进行处理。
6. 发送一个响应数据包(bufAck)给远程主机。
具体来说,这段代码大致的流程是接收数据包并进行处理。其中,数据包的结构和内容需要根据实际情况进行分析。同时,这段代码也涉及到一些函数的调用,这些函数的作用也需要根据实际情况进行分析。
阅读全文