星瞳实验室APP,快速收到回复
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • WIFI如何直接通过端口传输数据?



    • 我想要通过WIFI扩展版直接用socket建立UDP传输数据,而不是需要建立HTTP头之后再传输数据?

      代码如下:

      import socket, network
      
      SSID ='OPENMV_AP'    # Network SSID
      KEY  ='1234567890'    # Network key (must be 10 chars)
      
      HOST = '192.168.1.100'
      PORT = 8080
      BUFFSIZE = 1024
      
      MAX_LISTEN = 5
      ADDR = [HOST, PORT]
      
      wlan = network.WINC(mode=network.WINC.MODE_AP)
      wlan.start_ap(SSID, key=KEY, security=wlan.WEP, channel=2)
      
      def udpClient(s):
          # 创建客户端套接字
          while True:
              # 发送信息到服务器
              data = "THANKS"
      
              s.sendto(data.encode('utf-8'), ADDR)
      
              print('send success')
      
              # 接收服务端返回信息
              recvData, addrs = s.recvfrom(BUFFSIZE)
      
              print('recv message : {}'.format(recvData.decode('utf-8')))
      
          # 关闭套接字
          s.close()
      
      
      if __name__ == '__main__':
      
          while True:
              s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
              print('execute udpsever')
              udpClient(s)
      
      
      

      以上相同的代码(除去network模块),在PC端运行,我可以在客户端获取到数据,而在openmv上没有数据?
      PC 端运行时:
      0_1619444709765_PC端发送接收.PNG

      openmv上运行时:
      0_1619444756632_PC端发送接收.PNG



    • 第二张图错误,现更改:

      0_1619500274361_asd.png



    • HTTP是建立在TCP上面的,和UDP一点关系都没有。



    • 我看你的Wi-Fi扩展板是AP模式。电脑和Wi-Fi扩展板是在一个局域网里吗?

      还有端口64602哪来的?



    • UDP不管怎么样都会发送成功,因为UDP不会确认,不会管到底接受没有。
      所以在网络调试助手看到发送OK,不代表会传送到目的地,可能中间就断掉了。



    • 电脑是链接到板子的WIFI上的,查看WIFI属性,可以看到openmv的WIFI的IP地址和DNS地址:
      0_1620014516028_捕获.PNG

      可以看到“网络调试助手本机地址”:192.168.1.100,是其链接的WIFI的IP地址,端口为8080(可手动修改)。而远程主机地址为:192.168.1.100:64602,应该是建立的传输进程服务,其端口号,也就是“64602”每次建立链接都会变。
      我怀疑是传输地址不匹配导致的,数据是有传输过去,但是没有传输到正确的端口号。
      我之后尝试建立了TCP,不过还是老问题。



    • 我通过openmv做的东西,需要远程实时传输数据和图片,需要用到WIFI建立TCP或者UDP。如果通过HTTP取获取数据,每次都需要刷新网页,并且很多时候传输卡顿,数据不实时。
      如果是不用AP模式,用STA模式,也能够建立TCP吗?



    • 还有就是,WIFI扩展版可以直接建立TCP传输而不是通过HTTP吗?



    • @5co6WIFI如何直接通过端口传输数据? 中说:

      如果是不用AP模式,用STA模式,也能够建立TCP吗?

      可以。ap模式或者sta模式,是物理层。与网络层无关。



    • @5co6WIFI如何直接通过端口传输数据? 中说:

      还有就是,WIFI扩展版可以直接建立TCP传输而不是通过HTTP吗?

      可以。你看http的例子,就是socket的tcp的发包。https://book.openmv.cc/example/14-WiFi-Shield/http-client.html



    • 好的,感谢,我再找找问题,之所以建立的TCP链接无法通信,我觉得可能与WIFI的IP地址和端口号定义有关