求助 :RTX5 + RL-TCPnet 无法发送数据
ETH0_THREAD_PRIORITY osPriorityAboveNormalNET_THREAD_PRIORITY osPriorityNormal
自己的任务线程(sockTask)优先级是 osPriorityNormal1;
在tcp回调中把数据放入buf,并激活任务处理线程
uint32_t tcp_cb_func (int32_t socket, netTCP_Event event,
const NET_ADDR *addr, const uint8_t *buf, uint32_t len) {
if(event == netTCP_EventData){
// 把数据放入buf
osThreadFlagsSet(sockTaskHandle,0x00000001U);
}
return (0);
}
在任务处理线程中读取数据,并回复
int32_t tcp_sock;
void iap_sock_rec_task(void* arg){
netInitialize ();
tcp_sock = netTCP_GetSocket (tcp_cb_func);
while (1)
{
uint32_t flag = osThreadFlagsWait(0x00000001U,osFlagsWaitAny,1000);
netTCP_State state =netTCP_GetState(tcp_sock);
if(state == netTCP_StateESTABLISHED) // 连接成功
{
if(flag == 0x00000001U){
if(netTCP_SendReady(tcp_sock)){
// 处理数据,并回复
netTCP_Send (tcp_sock, response, response_len);
}else{
log_debug("sock busy");
}
}
}
else if (state == netTCP_StateCLOSED){
if(g_ucEthLinkStatus == 2){
netTCP_Connect (tcp_sock, (NET_ADDR *)&addr, 0);
log_info("try connect");
}
}
}
}
测试中发现,每次netTCP_SendReady 都返回false。
如果将任务优先级设为osPriorityNormal时可以发送。
请问:调用tcp发送的线程不能高于网络线程嘛?
原始socket要获取缓冲然后发送。不能自己指定缓冲地址发送。
此贴例子可以试试:
https://www.armbbs.cn/forum.php?mod=viewthread&tid=95243 解决了没有,我也在搞和你一样的应用,有没有经验分享呀😁
页:
[1]