【问题标题】:Raspberry PI wifi signal transmission via UDP or TCPIP is inconsistent树莓派wifi信号通过UDP或TCPIP传输不一致
【发布时间】:2021-04-14 13:15:26
【问题描述】:

我有一个应用程序,我通过 TCP/IP(或 UDP)通过 wifi 从一个树莓派(Pi 零)向另一个树莓派(PI4)发送开/关信号。我需要这种传输尽可能地无延迟。我曾尝试使用 tcp/ip 和 UDP 协议,但在这两种情况下,我都看到接收数据的延迟不一致。 wifi 是使用专用 wifi 路由器在本地生成的,网络上只有两个设备是 Pis。这是发送信号的 Pi 零上的代码部分:

s=socket.socket()
port=12397
s.bind(('',port))
s.listen(5)
i=0
while runserver:
    try:
        c,addr = s.accept()
        print("Client connected")
        while True:
            if i==1:
                i=0
            else:
                i=1
            c.send(str(i))
            time.sleep(1) #Sleep for 1 second
        c.close()
    except:
        print("Client disconnected")

这是在接收信号的 Pi 4 上运行的代码:

host = '192.168.43.2'
port = 12397
runclient = 1
while runclient:
    try:
        s = socket.socket()
        #This is to ensure that if the server disconnects for any reason
        #the signal being sent out is reset to 2 (unknown)
        s.settimeout(5.0)
        s.connect((host,port))
        try:
            while True:
                try:
                    flag.value = int(s.recv(1))
                except socket.timeout:
                    flag.value = int(2)
                    print("Server disconnected")
                    break
        except KeyboardInterrupt:
            s.shutdown(socket.SHUT_RDWR)
            s.close()
        #except socket.error as e:
        #    print(e.args[0])
        #    continue
    except:
        print("No Server", end='\r')
        flag.value = int(2)

从 Pi 零代码中可以看出,我每 1 秒翻转 1 和 0 之间的值。我希望在 Pi4 方面看到的是每 1 秒遵循相同趋势的接收值。但我最终看到的是信号变化之间的时间间隔在 0.2 到 1.5 之间变化,有时甚至是 2.5 秒。我试图让路由器尽可能靠近两个 Pis(两个 Pis 彼此相距不到 4 英尺)。

有没有人知道为什么接收方会出现这种延迟?是wifi缓冲吗?可以做些什么来改善这种情况?

【问题讨论】:

  • 尝试设置TCP_NODELAY套接字选项来禁用Nagle算法。
  • 根据您的建议,我已经尝试过了,请参阅下面的更新。

标签: python raspberry-pi wifi wireless


【解决方案1】:

我尝试将套接字启动为

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)

我确实看到了缓冲的改进,但我在传入数据跟踪中看到的缓冲伪影仍然存在(尽管频率要低得多)。所以我现在正在研究我可能需要在 wifi 路由器级别做些什么来改进这一点。

这里有更多信息: http://www.techrepublic.com/article/tcp-ip-options-for-high-performance-data-transmission/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多