|
F4-015b_TCP客户端例程(DM9161+LwIP上传数据).rar
(4.83 MB, 下载次数: 298)
操作步骤:
- /*
- *********************************************************************************************************
- *
- * 模块名称 : 主程序模块。
- * 文件名称 : main.c
- * 版 本 : V1.0
- * 说 明 : 本实验主要是实现实现TCP客户端的功能。
- * 实验目的:
- * 1. 本期例子主要实现TCP客户端的功能。
- * 实验内容:
- * 1. 初始化以太网驱动和LWIP, TCP发送数据包大小是1400字节,并在
- * 主函数轮询lwip_pro程序。
- * 2. 在TCP轮询的回调函数tcp_poll里面执行LED1闪烁,方便观察现象。
- * 2. 按键K1按下,V5板子向TCP服务器发送256字节数据。
- * 3. 按键K2按下,V5板子向TCP服务器发送628字节数据。
- * 4. 按键K3按下,V5板子向TCP服务器发送1400字节数据
- * 5. 摇杆向上按下,V5板子向TCP服务器发送20MB字节数据
- * 实验步骤:
- * 1. 设置PC机的IP地址为192.168.1.10,掩码和网关可不用设置。以保证
- * 开发板和PC机在同一个网段。
- * 2. 找一根网线连接开发板和PC机,并在网址http://www.armbbs.cn/forum.php?mod=viewthread&tid=1568
- * 下载TCP UDP调试工具。
- * 3. 先讲开发板上电,下载本程序到板子上面,然后打开调试软件设置为服务器模式,软件
- * 会自动的识别刚才设置的IP为TCP服务器IP。
- * 4. 然后复位开发板,串口1会打印相应的信息:
- * PHY_BSR = 786D, Phy Link Ok
- * Phy Address = 1, Read ID = 0181, DM9161 Detected Ok!
- * > Ethernet Init Success 表示初始化成功
- * 5. 然后通过按键向TCP发送数据即可,通过TCP软件可以看数据上传的大小,比较下是否
- * 是指定的大小,按键按下后串口1会打印这次需要发送数据包的次数和一次小于1400字
- * 节的数据包。
- * 按键K1按下 s_ulTraNum = 0, s_usTraRemainder = 256 发送256字节
- * 按键K1按下 s_ulTraNum = 0, s_usTraRemainder = 628 发送628字节
- * 按键K1按下 s_ulTraNum = 1, s_usTraRemainder = 0 发送1400字节
- * 按键K1按下 s_ulTraNum = 14979, s_usTraRemainder = 920 发送20MB字节
- * 6. 将开发板的网线拔掉后会打印信息:Network Cable is unplugged, 重新插上后可以继续工作。
- *
- * 修改记录 :
- * 版本号 日期 作者 说明
- * v1.0 2013-12-24 armfly 首发
- *
- * Copyright (C), 2013-2014, 安富莱电子 www.armfly.com
- *
- *************************************
复制代码
更加需要修改目标端的IP地址和本地的IP地址,网关等,全部都在文件main_lwip.h
- /*
- *********************************************************************************************************
- *
- * 模块名称 : LWIP头文件
- * 文件名称 : main_lwip.h
- * 版 本 : V1.0
- * 说 明 : 用设置本地IP,网关,掩码等
- *
- * Copyright (C), 2013-2014, 安富莱电子 www.armfly.com
- *
- *********************************************************************************************************
- */
- #ifndef __MAIN_LWIP_H
- #define __MAIN_LWIP_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* 头文件 ------------------------------------------------------------------*/
- #include "stm32f4xx.h"
- #include "bsp_eth.h"
- #include "stm32f4x7_eth.h"
-
- #include <stdio.h>
- #include "stdlib.h"
- #include "string.h"
- #include "lwip/mem.h"
- #include "lwip/memp.h"
- #include "lwip/tcp.h"
- #include "lwip/udp.h"
- #include "lwip/dns.h"
- #include "lwip/api.h"
- #include "lwip/dns.h"
- #include "lwip/dhcp.h"
- #include "lwip/debug.h"
- #include "lwip/stats.h"
- #include "netif/etharp.h"
- #include "ethernetif.h"
- #include "netconf.h"
- //#define USE_DHCP /* 使能 DHCP */
- #define SERIAL_DEBUG /* 用于使能串口调试 */
- /* TCP客户端要访问的目标IP */
- #define DEST_IP_ADDR0 192
- #define DEST_IP_ADDR1 168
- #define DEST_IP_ADDR2 1
- #define DEST_IP_ADDR3 10
- /* 目标端口号 */
- #define DEST_PORT 1001
-
- /* MAC 地址: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */
- #define MAC_ADDR0 2
- #define MAC_ADDR1 0
- #define MAC_ADDR2 0
- #define MAC_ADDR3 0
- #define MAC_ADDR4 0
- #define MAC_ADDR5 0
-
- /*静态IP地址: IP_ADDR0.IP_ADDR1.IP_ADDR2.IP_ADDR3 */
- #define IP_ADDR0 192
- #define IP_ADDR1 168
- #define IP_ADDR2 1
- #define IP_ADDR3 240
-
- /* 子网掩码 */
- #define NETMASK_ADDR0 255
- #define NETMASK_ADDR1 255
- #define NETMASK_ADDR2 255
- #define NETMASK_ADDR3 0
- /* 默认网关 */
- #define GW_ADDR0 192
- #define GW_ADDR1 168
- #define GW_ADDR2 1
- #define GW_ADDR3 1
- /* 在main.c文件有定义 */
- extern uint8_t g_ucTCPCMD;
- extern uint32_t g_ulTCPTraTolSize;
- /* TCP发送数据缓存 在文件tcp_echoclient.h */
- extern uint8_t data[1400];
- #ifdef __cplusplus
- }
- #endif
- #endif /* __MAIN_LWIP_H */
- /***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/
复制代码
|
|