Python-Socket-über wifi in raspberry pi

Habe ich programmiert, socket in python. Grundsätzlich gibt es 2 raspberry pi ' s die mit einander sprechen und senden Sie die gpio-Daten über wifi mit einem socket. Der code funktioniert völlig in Ordnung, zu Zeiten, aber manchmal ist es entweder nicht funktionieren oder zeigt eine Menge lag. Was kann das mögliche Problem. Habe ich etwas verpasst. Ich bin neu in Netzwerk-und python. Bitte helfen Sie mir!!

Server-code ist

#!/usr/bin/python
import RPi.GPIO as GPIO
import socket
HOST='192.168.0.106'
PORT=5002
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr=s.accept()
s.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
print 'Connected by', addr
GPIO.setmode(GPIO.BCM)
GPIO.setup(04, GPIO.IN)
GPIO.setup(17, GPIO.IN)
GPIO.setup(27, GPIO.IN)
while True:
    if (GPIO.input(04)==True):
        if (GPIO.input(17)==False):
                if (GPIO.input(27)==False):
                        conn.send('0')
                elif(GPIO.input(27)==True):
                        conn.send('1')
        elif (GPIO.input(17)==True):
                if (GPIO.input(27)==False):
                        conn.send('2')
                elif (GPIO.input(27)==True):
                        conn.send('3')
    elif (GPIO.input(04)==False):
        conn.send('5')
s.close()

Den client-code ist hier

#!/usr/bin/python
import socket
import RPi.GPIO as GPIO
HOST='192.168.0.106'
PORT=5002
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
GPIO.setmode(GPIO.BCM)
GPIO.setup(02, GPIO.OUT)
GPIO.setup(03, GPIO.OUT)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(10, GPIO.OUT)
while 1:
    data=s.recv(8096)
    if data=='0':
            print 'Forward'
            GPIO.output(02,True)
            GPIO.output(03, False)
            GPIO.output(11, False)
    elif data=='1':
            print 'Backward'
            GPIO.output(02, False)
            GPIO.output(03, True)
            GPIO.output(11, True)
            GPIO.output(10, False)
    elif data=='2':
            print 'Left'
            GPIO.output(02, False)
            GPIO.output(03, False)
            GPIO.output(11, False)
            GPIO.output(10, True)
    elif data=='3':
            print 'Right'
            GPIO.output(02, True)
            GPIO.output(03, False)
            GPIO.output(11, False)
            GPIO.output(10, False)
    elif data=='5':
            print 'Stop'
            GPIO.output(02, False)
            GPIO.output(03, False)
            GPIO.output(11, False)
            GPIO.output(10, False)
s.close()
Was eine "Menge" von lag? Was erwartest du, was passieren wird und was tatsächlich passiert?
Ich möchte die übertragung der gpio-status über den socket in Echtzeit. Die Verzögerung ist nicht fest jedes mal. Manchmal ist das Programm hängen geblieben ist, manchmal gibt es eine Verzögerung, die variabel ist und sogar Pakete verloren gegangen sind und manchmal funktioniert der code auch völlig glatt. Nicht in der Lage, zu identifizieren, was genau das problem hier.
Was zählt als "glatt"? Was zählt als "lag"? Sprichst du von einem 10ms Verzögerung oder 10.000 ms Verzögerung?
10ms Verzögerung ist in Ordnung..Manchmal ist die Verzögerung fast zu viel. Noch eine minute, manchmal. Manchmal reagiert er nicht mehr nur. Nicht in der Lage zu überprüfen, was falsch ist.

InformationsquelleAutor Meet Desai | 2014-03-20

Schreibe einen Kommentar