-
大哥,你这个tcp通信的问题解决没有啊?
我现在也是用的lm3s8962的板子,开发板做client,pc做servers,我也想实现你那样的功能,您要是解决了,可以把你的工程文件发给我嘛,我参考学习下,现在调不出来,郁闷的要死,
不胜感激!!!:)
-
我也想做tcp作为客户端发送数据,跪谢啊!
-
检查了 ip地址没有问题的 我想做的开发板lm3s8962作为客户端,pc机作为服务器。
-
#include
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_nvic.h"
#include "inc/hw_types.h"
#include "inc/hw_sysctl.h"
#include "driverlib/ethernet.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/systick.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#include "utils/lwiplib.h"
#include "utils/ustdlib.h"
#define My_Mac_ID {0X00,0x14,0x97,0x0F,0x1D,0xE3} //存储以太网控制器的物理地址,即MAC地址
#define MY_IP_ID {192,168,0,100} //以太网通信的IP地址
#define IP_MARK_ID {255,255,255,0} //255.255.255.0,子网掩码
#define MY_GATEWAY_ID {192,168,0,1} //以太网通信的网关地址
static const unsigned char pucMACAddress[]=My_Mac_ID;
static const unsigned char IPAddress[] = MY_IP_ID;
static const unsigned char NetMaskAddr[] = IP_MARK_ID;
static const unsigned char GwWayAddr[] = MY_GATEWAY_ID;
const static unsigned char TCP_TestData[]="This is LwIP TCP Client测试!\r\n";
#define SYSTICKHZ 100
#define SYSTICKMS (1000 / SYSTICKHZ)
#define SYSTICKUS (1000000 / SYSTICKHZ)
#define SYSTICKNS (1000000000 / SYSTICKHZ)
void
SysTickIntHandler(void)
{
lwIPTimer(SYSTICKMS);
}
void Delay(unsigned long ulVal) /* 利用循环产生一定的延时 */
{
while ( --ulVal != 0 );
}
typedef struct
{
unsigned long ulRetryCount;
tBoolean bCONTROLSent;
} tAPPState;
static err_t App_sent(void *arg, struct tcp_pcb *pcb, u16_t len)
{
LWIP_UNUSED_ARG(len);
tcp_write(pcb,TCP_TestData,sizeof(TCP_TestData),0);
tcp_sent(pcb, App_sent);
return ERR_OK;
}
err_t TcpCli_Connected(void *arg,struct tcp_pcb *pcb,err_t err)
{
tcp_write(pcb,TCP_TestData,sizeof(TCP_TestData),0); /* 发送数据 */
tcp_sent(pcb, App_sent);
tcp_close(pcb);
return ERR_OK;
}
void TCP_Client_Init()
{
struct tcp_pcb *Clipcb;
struct ip_addr ipaddr;
IP4_ADDR(&ipaddr,192,168,0,127);
Clipcb = tcp_new(); // 建立通信的TCP控制块(Clipcb)
tcp_bind(Clipcb,IP_ADDR_ANY,1026); // 绑定本地IP地址和端口号
tcp_connect(Clipcb,&ipaddr,1026,TcpCli_Connected);
}
void
enet_udp(void)
{
struct ip_addr ulIPAddr,ulNetMask,ulGWAddr;
if(REVISION_IS_A2)
{
SysCtlLDOSet(SYSCTL_LDO_2_75V);
}
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_8MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);
SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeEthernetLED(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3);
SysTickPeriodSet(SysCtlClockGet() / SYSTICKHZ);
SysTickEnable();
SysTickIntEnable();
IntMasterEnable();
IP4_ADDR(&ulIPAddr,IPAddress[3],IPAddress[2],IPAddress[1],IPAddress[0]);
IP4_ADDR(&ulNetMask,NetMaskAddr[3],NetMaskAddr[2],NetMaskAddr[1],NetMaskAddr[0]);
IP4_ADDR(&ulGWAddr,GwWayAddr[3],GwWayAddr[2],GwWayAddr[1],GwWayAddr[0]);
lwIPInit(pucMACAddress,ulIPAddr.addr, ulNetMask.addr, ulGWAddr.addr, IPADDR_USE_STATIC);
while(1)
{
TCP_Client_Init();
Delay(1000000UL);
Delay(1000000UL);
Delay(1000000UL);
}
}
:Cry:
-
#include
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_nvic.h"
#include "inc/hw_types.h"
#include "inc/hw_sysctl.h"
#include "driverlib/ethernet.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/systick.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#include "utils/lwiplib.h"
#include "utils/ustdlib.h"
#define My_Mac_ID {0X00,0x14,0x97,0x0F,0x1D,0xE3} //存储以太网控制器的物理地址,即MAC地址
#define MY_IP_ID {192,168,0,100} //以太网通信的IP地址
#define IP_MARK_ID {255,255,255,0} //255.255.255.0,子网掩码
#define MY_GATEWAY_ID {192,168,0,1} //以太网通信的网关地址
static const unsigned char pucMACAddress[]=My_Mac_ID;
static const unsigned char IPAddress[] = MY_IP_ID;
static const unsigned char NetMaskAddr[] = IP_MARK_ID;
static const unsigned char GwWayAddr[] = MY_GATEWAY_ID;
const static unsigned char TCP_TestData[]="This is LwIP TCP Client测试!\r\n";
#define SYSTICKHZ 100
#define SYSTICKMS (1000 / SYSTICKHZ)
#define SYSTICKUS (1000000 / SYSTICKHZ)
#define SYSTICKNS (1000000000 / SYSTICKHZ)
void
SysTickIntHandler(void)
{
lwIPTimer(SYSTICKMS);
}
void Delay(unsigned long ulVal) /* 利用循环产生一定的延时 */
{
while ( --ulVal != 0 );
}
err_t TcpCli_Connected(void *arg,struct tcp_pcb *pcb,err_t err)
{
tcp_write(pcb,TCP_TestData,sizeof(TCP_TestData),0); /* 发送数据 */
tcp_close(pcb);
return ERR_OK;
}
void TCP_Client_Init()
{
struct tcp_pcb *Clipcb;
struct ip_addr ipaddr;
IP4_ADDR(&ipaddr,192,168,0,127);
Clipcb = tcp_new(); // 建立通信的TCP控制块(Clipcb)
tcp_bind(Clipcb,IP_ADDR_ANY,1026); // 绑定本地IP地址和端口号
tcp_connect(Clipcb,&ipaddr,1026,TcpCli_Connected);
}
void
enet_udp(void)
{
struct ip_addr ulIPAddr,ulNetMask,ulGWAddr;
if(REVISION_IS_A2)
{
SysCtlLDOSet(SYSCTL_LDO_2_75V);
}
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_8MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);
SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeEthernetLED(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3);
SysTickPeriodSet(SysCtlClockGet() / SYSTICKHZ);
SysTickEnable();
SysTickIntEnable();
IntMasterEnable();
IP4_ADDR(&ulIPAddr,IPAddress[3],IPAddress[2],IPAddress[1],IPAddress[0]);
IP4_ADDR(&ulNetMask,NetMaskAddr[3],NetMaskAddr[2],NetMaskAddr[1],NetMaskAddr[0]);
IP4_ADDR(&ulGWAddr,GwWayAddr[3],GwWayAddr[2],GwWayAddr[1],GwWayAddr[0]);
lwIPInit(pucMACAddress,ulIPAddr.addr, ulNetMask.addr, ulGWAddr.addr, IPADDR_USE_STATIC);
while(1)
{
TCP_Client_Init();
Delay(1000000UL);
Delay(1000000UL);
Delay(1000000UL);
}
}
怎么没有我要的试验现象啊,我用的是keil4平台,测试工具上看不出数据的发送
-
什么意思啊?那个我程序里面不是有么? 我是菜鸟,你能说明白点么?
-
不好意思啊,我才搞这个,我学电气的,主任要我自己弄,我也不懂!摸不着边,所以,就把代码写上去了,谢谢你啊!
-
编译也通过啦
输入 control led on
接受区没有显示
指定本机端口1025选定时,创建会出现, 创建socket失败! 我是新手 不知道怎么办!
希望各位大侠帮忙解决问题,谢谢