Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tcp 配置Wifly模块以接收UDP数据包_Tcp_Network Programming_Udp_Wifi_Microchip - Fatal编程技术网

Tcp 配置Wifly模块以接收UDP数据包

Tcp 配置Wifly模块以接收UDP数据包,tcp,network-programming,udp,wifi,microchip,Tcp,Network Programming,Udp,Wifi,Microchip,我有一个与微控制器相连的RN-171无线模块 我正在使用UDP协议与模块通信。此外,我正在使用固件的UDP自动对功能来设置主机ip。一旦模块接收到UDP数据包,它就会将主机IP地址设置为接收数据的IP地址。现在,如果不进入命令模式,则无法更改此主机ip 我希望模块按以下方式运行: 每次收到UDP数据包时,它都会将主机ip更新为该信号来自的ip地址 此外,我可以使用TCP协议,但它一次只允许一个连接。我在使用TCP协议时面临的另一个问题是,如果我尝试启动与模块的第二个TCP连接,它不仅会拒绝第二个

我有一个与微控制器相连的RN-171无线模块

我正在使用UDP协议与模块通信。此外,我正在使用固件的UDP自动对功能来设置主机ip。一旦模块接收到UDP数据包,它就会将主机IP地址设置为接收数据的IP地址。现在,如果不进入命令模式,则无法更改此主机ip

我希望模块按以下方式运行: 每次收到UDP数据包时,它都会将主机ip更新为该信号来自的ip地址

此外,我可以使用TCP协议,但它一次只允许一个连接。我在使用TCP协议时面临的另一个问题是,如果我尝试启动与模块的第二个TCP连接,它不仅会拒绝第二个连接,还会挂起第一个稳定的连接。即使第二次连接启动没有挂起模块,它只是被拒绝,我也准备好使用TCP


关于这个问题,我在网上做了很多研究,但由于这些模块没有得到广泛使用,它们的支持非常有限。

我已经广泛使用了RN-171,并且在它们的支持系统中有许多已解决的问题

根据,您不能使用模块打开多个TCP端口。(默认数字为2000)

不幸的是,关于UDP功能,您所能做的并不多。如果有新主机希望通过UDP进行通信,请通过TCP连接到模块,进入命令模式,并使用“
$$
”、“
设置ip主机0.0.0
”、“
保存
”、“
退出
”命令设置地址。或者,您可以输入新主机自己的ip地址,而不是0.0.0.0:“
$$
”、“
设置ip主机、
退出”。用设备的ip地址替换“
##############

这样,如果多个设备同时通过UDP进行通信,您就不会得到错误的主机ip。此外,如果不使用“
保存
”,自动配对仍将保存到EEPROM存储器中。此外,您可以在“
退出
”之前发送“
ip标志0x##
”,这样您还可以使用将位设置为零的十六进制值将位[6]临时设置为0(禁用UDP自动配对)

Microchip technical support在2013年夏天测试的一个问题是,您不能将RN-171用作其他RN-171的访问点,因为它们存在固件错误,无法执行此操作,并且,从2014年1月发布的固件v4.41开始,还没有修复程序,也没有计划修复

我本人不推荐最新的固件版本v4.41,因为它似乎不适用于大多数路由器;不过,此屏幕上的软AP模式工作正常。另一方面,v4.00.1更具兼容性,但在切断电源时应小心,因为如果在闪存写入过程中切断电源,则可能会出现灾难性的砌砖问题-模块可能会永久锁定其内存


我建议注册并开设一个网站,通常会在两个工作日内得到回复,他们非常支持。不过,他们的固件更新周期相当长,通常需要一年左右的时间才能完成新的更新。

不过,我找到了更好的方法将多个客户端与模块连接起来。现在,我使用的是TCP协议,但方法不同。基本上,我想在我的项目中从智能手机发送数据。因此,当应用程序必须处理模块时,它会启动TCP连接,使用模块中配置的密码验证连接,发送和接收数据,然后立即关闭连接。由于用户输入是在创建连接之前进行的,因此整个过程大约需要50-60毫秒。您是否认为这是一个稳定的解决方案来处理此问题。如果您不必同时从设备发送和接收数据,这确实是一个可行的解决方案。如果您的应用程序可以处理管道中的数据延迟,那么其他设备在所有设备发送所需数据之前重试连接(以防发生连接请求冲突)是完全合理的。我还没有遇到许多非同时连续连接的问题。