今天用FinSH试了UDPClient,发现可以发数据出去.
但是如果放到GUI线程去执行UDPClient,则不能发数据出去.同样是无法获取到host.我怀疑是GUI和LwIP有资源方面的冲突.
测试代码如下:
#include "demo_view.h"
#include
#include
static void TCP_Client(struct rtgui_widget* widget, rtgui_event_t* event)
{
tcpclient("192.168.1.2",80);
/*tcpclient(");
tcpclient("192.168.1.2",139);*/
}
static void UDP_Client(struct rtgui_widget* widget, rtgui_event_t* event)
{
udpclient("192.168.1.2",138,2);
}
static void TCP_Server(struct rtgui_widget* widget, rtgui_event_t* event)
{
tcpserv(RT_NULL);
}
static void UDP_Server(struct rtgui_widget* widget, rtgui_event_t* event)
{
udpserv(RT_NULL);
}
rtgui_view_t *test_lwip(rtgui_workbench_t* workbench)
{
rtgui_view_t *view1;
rtgui_button_t *button;
rtgui_rect_t widget_rect;
view1 = demo_view(workbench, "test");
demo_view_get_rect(view1, &widget_rect);
widget_rect.x1 = 5;
widget_rect.x2 = widget_rect.x1 + 50;
widget_rect.y1 = 170;
widget_rect.y2 = widget_rect.y1 + 20;
button = rtgui_button_create("TCPClient");
rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect);
rtgui_container_add_child(RTGUI_CONTAINER(view1), RTGUI_WIDGET(button));
rtgui_button_set_onbutton(button, TCP_Client);
widget_rect.x1 = widget_rect.x2 + 10;
widget_rect.x2 += 50;
button = rtgui_button_create("UDPClient");
rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect);
rtgui_container_add_child(RTGUI_CONTAINER(view1), RTGUI_WIDGET(button));
rtgui_button_set_onbutton(button, UDP_Client);
widget_rect.x1 = widget_rect.x2 + 10;
widget_rect.x2 += 50;
button = rtgui_button_create("TCPServer");
rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect);
rtgui_container_add_child(RTGUI_CONTAINER(view1), RTGUI_WIDGET(button));
rtgui_button_set_onbutton(button, TCP_Server);
widget_rect.x1 = widget_rect.x2 + 10;
widget_rect.x2 += 50;
button = rtgui_button_create("UDPServer");
rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect);
rtgui_container_add_child(RTGUI_CONTAINER(view1), RTGUI_WIDGET(button));
rtgui_button_set_onbutton(button, UDP_Server);
return view1;
}
今天用FinSH试了UDPClient,发现可以发数据出去.
但是如果放到GUI线程去执行UDPClient,则不能发数据出去.同样是无法获取到host.我怀疑是GUI和LwIP有资源方面的冲突.
测试代码如下:
#include "demo_view.h"
#include
#include
static void TCP_Client(struct rtgui_widget* widget, rtgui_event_t* event)
{
tcpclient("192.168.1.2",80);
/*tcpclient(");
tcpclient("192.168.1.2",139);*/
}
static void UDP_Client(struct rtgui_widget* widget, rtgui_event_t* event)
{
udpclient("192.168.1.2",138,2);
}
static void TCP_Server(struct rtgui_widget* widget, rtgui_event_t* event)
{
tcpserv(RT_NULL);
}
static void UDP_Server(struct rtgui_widget* widget, rtgui_event_t* event)
{
udpserv(RT_NULL);
}
rtgui_view_t *test_lwip(rtgui_workbench_t* workbench)
{
rtgui_view_t *view1;
rtgui_button_t *button;
rtgui_rect_t widget_rect;
view1 = demo_view(workbench, "test");
demo_view_get_rect(view1, &widget_rect);
widget_rect.x1 = 5;
widget_rect.x2 = widget_rect.x1 + 50;
widget_rect.y1 = 170;
widget_rect.y2 = widget_rect.y1 + 20;
button = rtgui_button_create("TCPClient");
rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect);
rtgui_container_add_child(RTGUI_CONTAINER(view1), RTGUI_WIDGET(button));
rtgui_button_set_onbutton(button, TCP_Client);
widget_rect.x1 = widget_rect.x2 + 10;
widget_rect.x2 += 50;
button = rtgui_button_create("UDPClient");
rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect);
rtgui_container_add_child(RTGUI_CONTAINER(view1), RTGUI_WIDGET(button));
rtgui_button_set_onbutton(button, UDP_Client);
widget_rect.x1 = widget_rect.x2 + 10;
widget_rect.x2 += 50;
button = rtgui_button_create("TCPServer");
rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect);
rtgui_container_add_child(RTGUI_CONTAINER(view1), RTGUI_WIDGET(button));
rtgui_button_set_onbutton(button, TCP_Server);
widget_rect.x1 = widget_rect.x2 + 10;
widget_rect.x2 += 50;
button = rtgui_button_create("UDPServer");
rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect);
rtgui_container_add_child(RTGUI_CONTAINER(view1), RTGUI_WIDGET(button));
rtgui_button_set_onbutton(button, UDP_Server);
return view1;
}
举报