This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
设置回调函数时出错、我尝试将 TCP 添加到现有 C++代码、我想将回调函数放入我的类中。
我遇到错误:
获取成员函数地址的非标准形式
"void (ModemManager:*)(void *、err_t)"类型的参数与"tcp_err_fn"类型的参数不兼容
调用 tcp_recv (newpcb、eco_recv)时;
以下是我的代码:
ERR_t ModemManager:::echo 接受(void *arg、struct tcp_pcb * newpcb、err_t err)
{
ERR_t RET_ERR;
静态结构 echo_state *es;
LWIP_unused_arg (arg);
LWIP_Unused_ARG (错误);
/*通常观察到的脊医调用 tcp_setprio(),为什么? *
tcp_setprio (newpcb、tcp_PRIO_min);
// ModemOn = true;
ES =(struct echo_state *) mem_malloc (sizeof (struct echo_state));
if (es!= NULL)
{
ES->state = ES_Accepted;
ES->PCB = newpcb;
ES->重试次数= 0;
ES->p = NULL;
/*将新分配的调用传递给我们的回调*/
tcp_arg (newpcb、es);
tcp_recv (newpcb、echo_recv); //此处出现错误
tcp_err (newpcb、echo_error); //此处出现错误
tcp_sent (newpcb、echo_sent);//此处出现错误
char modemtest[3]={'a'、'C'、'K'};
char *ptrdata = modemtest;
tcp_write (newpcb、ptrdata、3、1);
//ModemOn = true;
RET_ERR = ERR_OK;
}
其他
{
RET_ERR = ERR_MEM;
}
返回 RET_ERR;
}
Class ModemManager:公共经理
{
公共:
ModemManager();
Virtual ~ModemManager();
空进程(TransitPack::PacketType 类型,向量 data、struct tcp_pcb * tpcb);
ERR_t ECHO_ACCEPT (void *arg、struct tcp_pcb * newpcb、err_t err);
void echo_init (void);
ERR_t ECHO_recv (void *arg、struct tcp_pcb、struct pbuf *p、err_t err);
void echo_error (void *arg、err_t err);
ERR_t ECHO_SENT (void *arg、struct tcp_pcb、u16_t len);
enum ECHO_States
{
ES_NONE = 0、
ES_Accepted、
ES_Received、
ES_Closing
};
struct echo_state
{
U8_t 状态;
U8_t 重试;
struct tcp_pcb *pcb;
/*要回收的 pbuf (链)*/
struct pbuf *p;
};
};
您好、Kirushigan、
您是否看过 Resource Explorer 中用于 Launchpad 的 LWIP 示例? 这些内容可在该文件夹中找到:
https://dev.ti.com/tirex/explore/node?node=AJDS8Vpx6RDwlNjGgAiVqg__J4.hfJy__LATEST
BR、
Leo