用的原子的例程,TCP接收及发送程序段如下
while(1)
{
taskcun=0;
while ((err=netconn_recv(conn, &recvbuf))==ERR_OK) //½óêÕμ½êy¾Y
{
if(1) //¿éòÔ·¢Ëíêy¾Y
{
send_data_len=modbus_tcp(recvbuf,tcp_server_sendbuf); //μ÷óÃmodbus_tcp()oˉêy£¬Ëã3öòa»Øμı¨ÎÄòÔ¼°
err=netconn_write(conn,tcp_server_sendbuf,send_data_len+9,NETCONN_COPY); //·¢Ëítcp_server_sendbufÖDμÄêy¾Y
netbuf_delete(recvbuf); //êí·Årecvbuf
if(err != ERR_OK) //·¢Ëítcp_server_sendbuf꧰ü
{ //Ö′DDÏàó|μĶˉ×÷
}
}
// OSTimeDlyHMSM(0,0,0,(50-(prio-8)*5)); //Ñóê±50ms
}
netconn_close(conn); //1رոÃTCPᬽó
netconn_delete(conn); //é¾3y¸ÃTCPᬽó
printf("Del task prio=[%d],err=[%d]
", prio, err); //′òó¡òaé¾3yμÄÏß3ìμÄóÅÏ輶oí′íÎó′úÂë
for(t=0; t< MAX_CONN_TASK;t++)
{
if(task[t].prio!=OS_ERR_PRIO_INVALID) taskcun++;
}
if(taskcun==1&&err==ERR_TIMEOUT) //ËùóDμÄÏß3춼òѾ-±»êí·Å
{
TCP_RUN=0XFF;
printf("TCP_RUN=%d
",TCP_RUN);
}
conn_task_del(prio); //êջظÃÏß3ì
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>