• 安装星瞳实验室APP,快速收到回复。扫描二维码或者点击 https://singtown.com/app/
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 一个提问,一个帖子,标题为问题的介绍
  • 请贴出具体的代码,与报错提示。
  • 代码一定要让别人可以运行的文本,不要贴图片
  • Socket无法接受数据,但可以发送数据



    • 通过wifi拓展版连接上了wifi,并且通过socket发送数据给其他电脑成功,但是通过socket.read(1024)方法,一直无法获取数据。
      图中的b' '就是打印的数据。
      0_1528115246632_3ed5598d-f0a3-43b2-bea7-d6ad41603993-image.png
      0_1528115284316_b8043611-f9da-4223-9b10-98f46a1e4518-image.png



    • recv函数存在bug

      这是我在国外OpenMV论坛看到的消息,recv函数存在bug,导致上层封装会认为接收到的数据为0 bytes,导致无法正常获得数据,并且他提供了固件升级的压缩包。
      OpenMV论坛帖子
      0_1528172234849_6561e78d-f9a1-4898-bb10-90a364c994a9-image.png



    • 这个是16年的帖子,后面的固件应该解决了



    • 那现在这个问题是什么情况呢?



    • 请提供可以执行的代码,否则没办法测试。



    • openmv代码,SSID和KEY需要修改成可以连接的wifi

      # Connect Example
      #
      # This example shows how to connect your OpenMV Cam with a WiFi shield to the net.
      
      import network,usocket, sys, json,socket
      
      SSID='ymc' # Network SSID
      KEY='44661122'  # Network key
      HOST = '192.168.191.2'           # Use first available interface #192.168.199.220
      PORT = 12345         # Arbitrary non-privileged port
      
      # Init wlan module and connect to network
      print("Trying to connect... (may take a while)...")
      
      wlan = network.WINC()
      wlan.connect(SSID, key=KEY, security=wlan.WPA_PSK)
      
      # We should have a valid IP now via DHCP
      print(wlan.ifconfig())
      
      s = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
      
      s.connect([HOST, PORT])
      
      #s.send("this is from car1")
      
      try:
      #一个个读数据试试
          data = s.recv(100)
          print ("data is:",str(data))
          s.close()
      except OSError as e:
          s.close()
          print("socket error: ", e)
      

      java代码

      import java.io.IOException;
      import java.io.InputStream;
      import java.io.OutputStream;
      import java.net.ServerSocket;
      import java.net.Socket;
      
      public class SocketTest {
      
          public static void main(String[] args) {
              try {
                  ServerSocket serverSocket = new ServerSocket(12345);
                  Socket socket = serverSocket.accept();
                  OutputStream outputStream = socket.getOutputStream();
                  outputStream.write("aaasdfsdfdsf".getBytes());
              } catch (IOException e) {
                  e.printStackTrace();
              }
      
          }
      }
      

      结果
      0_1528192319283_967dbffc-f74e-4885-b169-82d5e8e690bc-image.png
      麻烦你了。



    • 这个程序我测试不了



    • 那java换成python呢
      openmv的HOST需要改成运行python代码的ip

      import socket
      
      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
      s.bind(('0.0.0.0', 12345))
      s.listen(10)
      
      while True:
          print "serber started"
          client, addr = s.accept()
          client.send(b'aaaaa')
          client.close()