结构:LMS8962的板子跟PC连接,TCP协议,无操作系统。PC端程序是VC写的,测试都正常。
功能:板子向PC发送3个 unsigned int,PC向板子发送1个unsigned int
现象:单独写了板子向PC发送程序:板子正常发送,PC端正常接收到。
单独写了板子接收PC发送字符的程序:板子正常接收,PC端正常发送。
问题:两个程序的功能合在一起后,必须板子先启动,然后运行PC程序,板子才能接收到数据。但板子始终无法发送数据,连自定义的发送回调函数都进不去。
下面是初始化代码。各位给指点下,这么写有问题没?
#define TCP_PORT_PMSM60 4000 // TCP port : 4000
void tcpclient_init()
{
struct tcp_pcb *pcb;
UARTprintf("tcpclient_init
");
IP4_ADDR(&ipaddr, 119,78,208,24); //Server PC IP address
pcb = tcp_new();
tcp_bind(pcb, IP_ADDR_ANY, TCP_PORT_PMSM60);
pcb = tcp_listen(pcb);
tcp_accept(pcb, tcp_acceptset);
tcp_connect(pcb, &ipaddr, TCP_PORT_PMSM60, tcp_connected);
}
向看帖的筒子致敬!!!!!
此帖出自
小平头技术问答
pcb = tpc_new(); //接收pcb
pcb_send = tpc_new(); //发送pcb
tcp_bind(pcb, IP_ADDR_ANY, TCP_PORT_PMSM60);
tcp_bind(pcb_send, IP_ADDR_ANY, TCP_PORT_PMSM60);
收发使用两个pcb,与同一个端口绑定,是否可以这样设置?
PC端使用CAsyncSocket类定义了两个socket:
m_sListenSocket; //监听
m_sConnectSocket; //发送
PC程序与PC程序间收发数据都正常(这两个PC程序类似),但是PC向板子发送数据(下面这句)
m_sConnectSocket.Send(LPCTSTR(m_strSpeed), iLen)
出现错误,错误代码10038:WSAENOTSOCK
对LwIP的TCP收发流程不理解,迷糊呀!
一周热门 更多>