Hi ALL,
现象描述:
我在使用3200创建 TCP Client socket链路时(模块作为Station,已正常连接了路由器),如果没有连接服务器,就等待5秒执行重连,在执行重连6~8后,SimpleLinkGeneralEventHandler函数开始报错: [GENERAL EVENT] – ID=[3] Sender=[0];
此时,调用simplelink的相关API,调用sl_WlanProfileGet 获取路由器的 RSSID,加密类型等信息返回-100,调用sl_NetCfgGet 获取连接IP DNS等信息,也是返回-100,感觉整个simplelink框架下的东西即NWP已经卡死了一样
上面的出现的现象是因为我使用了2个线程,一个线程在跑TCP,另一个线程在跑udp,当我将UDP的线程禁用了之后,这个问题即:TCP Client 在执行重连,无论执行多少次,SimpleLinkGeneralEventHandler未报错,调用simplelink相关API,能够正常获取NWP的相关参数;
我的问题:
1. SimpleLinkGeneralEventHandler函数报错: [GENERAL EVENT] – ID=[3] Sender=[0];
触发这个函数的原因是哪种或者有哪些可能呢?(我看过同类型的帖子,只是解答了报错的类型,希望工程师们给出一个比较详细的报错原因);
2. 单独一个线程跑,就可以避免此现象,存不存在线程之间在访问simplelink API时,需要注意互斥的一些原因呢?
3.我如果想使用多个Socket 同时工作,为避免此问题,该注意哪些东西的,希望工程师们给出一个比较合理的建议。
期待回复,感谢~
Viki Shi:
1、具体的报错原因可能要通过NWP log才能判断,根据描述,怀疑是内存分配问题
2、照理说UDP TCP是可以一起使用的,根据手册,最大支持 8 个socket同时工作 。请确保:
监听的端口有效
使用最新的SDK且版本与及service pack互相匹配