初级会员

- 积分
- 57
- 金钱
- 57
- 注册时间
- 2016-8-3
- 在线时间
- 29 小时
|

楼主 |
发表于 2017-1-16 11:10:51
|
显示全部楼层
试过了,也不行。
if((recv_err = netconn_recv(newconn,&recvbuf)) == ERR_OK)
{
OS_ENTER_CRITICAL(); //¹ØÖжÏ
memset(tcp_server_recvbuf,0,TCP_SERVER_RX_BUFSIZE);
for(q=recvbuf->p;q!=NULL;q=q->next)
{
if(q->len > (TCP_SERVER_RX_BUFSIZE-data_len)) memcpy(tcp_server_recvbuf+data_len,q->payload,(TCP_SERVER_RX_BUFSIZE-data_len));
else memcpy(tcp_server_recvbuf+data_len,q->payload,q->len);
data_len += q->len;
if(data_len > TCP_SERVER_RX_BUFSIZE) break;
}
OS_EXIT_CRITICAL();
data_len=0;
OS_ENTER_CRITICAL();
decodeReceiveData(tcp_server_recvbuf);
OS_EXIT_CRITICAL();
netbuf_delete(recvbuf);
}else if(recv_err == ERR_CLSD) //¹Ø±ÕÁ¬½Ó
{
netconn_close(newconn);
netconn_delete(newconn);
break;
}
}
}
void decodeReceiveData(char *buf)
{
u32 len = 0;
char *IPBuf = NULL;
u32 size = 0;
u8 remot_addr[4];
ip_addr_t ipaddr;
OS_CPU_SR cpu_sr;
IPBuf = (char *)mymalloc(SRAMIN, SIZE);
memset(IPBuf, 0, SIZE);
len = strlen(buf);
// readFlashData();
if(strstr(buf, "SERVERIP"))
{
memcpy(connectInfo.localIP, buf+strlen("SERVERIP")+1, len-strlen("SERVERIP")-1);
printf("%s\r\n", connectInfo.localIP);
size = sizeof(connectInfo.localIP)/4 + ((sizeof(connectInfo.localIP)%4)?1:0);
printf("strlen len = %d, sizeof len =%d, flash size = %d\r\n", strlen(connectInfo.localIP), sizeof(connectInfo.localIP), size);
//OS_ENTER_CRITICAL();
STMFLASH_Write(FLASH_IP_INFO_ADDR, (u32*)connectInfo.localIP, size);
// OS_EXIT_CRITICAL();
ipaddr.addr = iptoint(connectInfo.localIP);
remot_addr[3] = (uint8_t)(ipaddr.addr >> 24);
remot_addr[2] = (uint8_t)(ipaddr.addr >> 16);
remot_addr[1] = (uint8_t)(ipaddr.addr >> 8);
remot_addr[0] = (uint8_t)(ipaddr.addr);
printf("decodeReceiveData ú%d.%d.%d.%d ipaddr = %u\r\n",remot_addr[0], remot_addr[1],remot_addr[2],remot_addr[3], ipaddr.addr);
}
printf("Write to flash down\r\n");
// OS_ENTER_CRITICAL();
readFlashData();
// OS_EXIT_CRITICAL();
if(IPBuf != NULL)
myfree(SRAMIN, IPBuf);
} |
|