推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

RTT6-RTThread_采用netcon接口进行异步读写

更新时间:2019-10-30 21:00:35 大小:369K 上传用户:xuzhen1查看TA发布的资源 标签:接口异步读写 下载积分:0分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

目的:建立一客户端,连接 192.168.1.100的服务器;连接成功后,接收服务器发来的消息后,发送至串口。

1.client.c文件说明

在下一版本的 RTT编程指南中会有。此程序来自于 RTT的官网论坛。

在LMP中netbuf,netconn是属于非常简洁的接口,代码清晰而简洁,十分适合于嵌入式应用。

但netconn有个缺点,即它的 API接口都是阻塞模式的,例如一个线程调用netconn_recv读取一个连接上的数据,在数据未达到前,线程将一直被阻塞。此时如果想发送一些数据到网络连接上,将比较困难。而且 netconn不是线程安全的(即不能在多个线程中使用 netconn APD,这也基本上杜绝了多个线程中使用netconn的可能。

客户因为使用RT-Thread&LwIP,而提出如上的问题。因为这个属于一个普遍的问题,所以把相应的例子程序附在后面,它通过 LwIP netconn中提供的callback机制,当LwIP收到网络报文时,在回调函数中发送 event给nw_thread线程,让tnw_thread继续进行接收的处理。同时 nw-thread也在监视发送事件和连接关闭事件。


部分文件列表

文件名 大小
RTT6-RTThread_采用netcon接口进行异步读写.pdf 369K

部分页面预览

(完整内容请下载后查看)
目的:建立一客户端,连接  
后,发送至串口。  
192.168.1.100 的服务器;连接成功后,接收服务器发来的消息  
1.client.c 文件说明  
在下一版本的 RTT 编程指南中会有。此程序来自于  
RTT 的官网论坛。  
LwIP netbufnetconn是属于非常简洁的接口, 代码清晰而简洁, 十分适合  
于嵌入式应用。  
netconn 有个缺点,即它的 API 接口都是阻塞模式的,例如一个线程调用  
netconn_recv读取一个连接上的数据,在数据未达到前,线程将一直被阻塞。此  
时如果想发送一些数据到网络连接上,将比较困难。而且  
netconn不是线程安全  
的(即不能在多个线程中使用 netconn API这也基本上杜绝了多个线程中使用  
netconn的可能。  
客户因为使用 RT-Thread & LwIP提出如上的问题。 因为这个属于一个普遍的  
问题,所以把相应的例子程序附在后面,它通过  
LwIP netconn中提供的 callback  
机制,当 LwIP 收到网络报文时,在回调函数中发送 event nw_thread 线程,  
nw_thread继续进行接收的处理。同时 nw_thread也在监视发送事件和连接关  
闭事件。  
#include <rtthread.h>  
#include <lwip/api.h>  
#include <finsh.h>  
static struct netconn* conn = RT_NULL;  
#define NW_RX  
0x01  
0x02  
#define NW_TX  
#define NW_CLOSED  
#define NW_MASK  
0x04  
(NW_RX | NW_TX | NW_CLOSED)  
/* tx session structure */  
struct tx_session  
{
rt_uint8_t *data;  
rt_uint32_t length;  
/* data to be transmitted */  
/* data length */  
rt_sem_t  
ack;  
/* acknowledge semaphore */  
};  
struct tx_session tx_data;  
struct rt_event nw_event;  
struct rt_semaphore nw_sem;  
void rx_callback(struct netconn *conn, enum netconn_evt evt, rt_uint16_t len)  
{
if (evt == NETCONN_EVT_RCVPLUS)  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载