基本信息
源码名称:基于STM32的网络通信实例
源码大小:10.55M
文件格式:.zip
开发语言:C/C++
更新时间:2021-08-04
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

该实例是运行在STM32平台上的LWIP网络通信实例

//TCP Client app
void tcp_client_app(void)
{
  struct tcp_pcb *tcppcb;  //定义一个TCP服务器控制块
struct ip_addr rmtipaddr;  //远端ip地址

u8 res=0;
u8 t=0; 
u8 connflag=0; //TCP连接标记

tcppcb=tcp_new(); //创建一个新的pcb
if(tcppcb) //创建成功
{
IP4_ADDR(&rmtipaddr,lwipdev.remoteip[0],lwipdev.remoteip[1],lwipdev.remoteip[2],lwipdev.remoteip[3]); 
tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);  //连接到目的地址的指定端口上,当连接成功后回调tcp_client_connected()函数
  }else res=1;
while(res==0)//主逻辑循环
{
while((Regist_Flag1!=1)||(Regist_Flag2!=1))
{
My_register();//等待注册
}

if(((USART_RX_STA&0x8000)==0x8000)||((BMS_RX_STA&0x8000)==0x8000))
{
if((USART_RX_STA&0x8000)==0x8000)
{
memcpy(tcp_client_recvbuf,RS485_RX_BUF,10);//拷贝数据

USART_RX_STA = 0;
memset(RS485_RX_BUF,0,sizeof(RS485_RX_BUF));
}
if((BMS_RX_STA&0x8000)==0x8000)
{
memcpy(tcp_client_recvbuf,BMS_RX_BUF,10);//拷贝数据


BMS_RX_STA = 0;
memset(BMS_RX_BUF,0,sizeof(BMS_RX_BUF));
}
tcp_client_flag|=1<<7;//标记要发送数据
}

if(tcp_client_flag&1<<6)//网口是否收到数据
{
switch(tcp_client_recvbuf[0])
{
case 0x51:
memcpy(RS485_TX_BUF,tcp_client_recvbuf,10);//拷贝从网口接收的数据
RS485_Send_Data(RS485_TX_BUF,10);//用485发送
break;

case 0xA5:
memcpy(BMS_TX_BUF,tcp_client_recvbuf,13);//拷贝从网口接收的数据
BMS_Send_Data(BMS_TX_BUF,13);//用485发送
break;
}

tcp_client_flag&=~(1<<6);//标记数据已经被处理了.
}

Motor_control();//电机转速控制

if(tcp_client_flag&1<<5)//是否连接上?
{
if(connflag==0)
{
connflag=1;//标记连接了

}else if(connflag)
{
connflag=0; //标记连接断开了


lwip_periodic_handle();//LWIP内核需要定时处理的函数
delay_ms(2);
t ;
if(t==200)
{
query();//查询电机状态

if(connflag==0&&(tcp_client_flag&1<<5)==0)//未连接上,则尝试重连

tcp_client_connection_close(tcppcb,0);//关闭连接
tcppcb=tcp_new(); //创建一个新的pcb
if(tcppcb)   //创建成功

tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);//连接到目的地址的指定端口上,当连接成功后回调tcp_client_connected()函数
}
}
t=0;
}
}
tcp_client_connection_close(tcppcb,0);//关闭TCP Client连接