¿Por qué la comunicación por socket puede lograr el control remoto?
Para Raspberry Pi, se puede conectar a la computadora a través de ssh, por lo que para aplicaciones generales, no se requiere comunicación por socket. Simplemente abra ssh y ejecute el programa escrito en Python o C en Raspberry Pi. él. Sin embargo, algunos proyectos requieren múltiples sensores. Si simplemente abre varios ssh para ejecutar diferentes programas, los datos recopilados por el sensor no serán intuitivos. Por lo tanto, debe establecer un servidor en la PC para comunicarse con Raspberry Pi. usted puede Todas las señales requeridas por los sensores y otros dispositivos se muestran centralmente en un programa del lado de la PC. Si sabe programación web, debería ser fácil construir un servidor WEB en Raspberry Pi para realizar esta función. Si no sabe programación web, debe utilizar la comunicación por socket. La forma más sencilla de empezar es controlar el encendido y apagado del LED a través del enchufe.
El siguiente es el programa del lado del servidor: # TCP-Serverimport socket
# 1. Cree un objeto de socket
s = socket.socket(socket. AF_INET, socket. SOCK_STREAM)
# 2. Vincula el socket a la dirección especificada (dirección local) dirección = ('192.168.1.102', 8889)
s.bind(address). )
p># 3. Recibir solicitud de conexión# listening(backlog). El argumento backlog especifica el número máximo de conexiones en cola y debe ser al menos 0;
# el valor máximo. depende del sistema (normalmente 5), el valor mínimo se fuerza a 0.
s.listen(5)
print 'Esperando conexión...'
# 4. Esperando a que el cliente solicite una conexión #Cuando se llama al método de aceptación, el socket entrará en el estado de "espera".
# El método aceptar devuelve una tupla con dos elementos (conexión, dirección).
# El primer elemento conexión es el nuevo objeto socket a través del cual el servidor debe comunicarse con el cliente
# El segundo elemento dirección es la dirección de Internet del cliente.
new_s, addr = s.accept()
print 'Obtuve conexión desde', addr
# 5. Procesamiento: El servidor y el cliente pasan el envío y comunicación del método recv
comando = ' '
imprimir ('Ingrese 1 para encender el LED, 2 para apagar el LED, 3 para desconectar la comunicación:') p>
mientras es verdadero:
comando = raw_input()
new_s.send(comando)
datos = new_s.recv(512) p>
p>
imprimir datos si datos == 'La comunicación se desconecta':
romper
# 6. La transmisión finaliza y la conexión se cierra p>
new_s.close ()
s.close()
El siguiente es el programa cliente:
# TCP-Clientimport RPi.GPIO como GPIO
hora de importación
importar socket
dirección = ('192.168.1.102', 8889)
s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
s.connect(dirección)
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO .setup(27, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, Falso) p>
Salida GPIO(27, Falso)
mientras es Verdadero:
comando = s.recv(512)
si comando == ' 1':
GPIO.output(27, True)
GPIO.output(17, False)
s.send('Comando 1 recibido por el cliente ')
imprimir "El comando es ", comando
comando elif == '2':
GPIO.output(27, False)
GPIO.output( 17, True)
s.send('Comando 2 recibido por el cliente')
imprimir "El comando es ", comando
comando elif == '3 ':
s.send('La comunicación está desconectada')
imprimir "El comando es ", comando
interrumpir p>
else:
s.send('Ingrese 1, 2 o 3')
imprimir "El comando es", comandos.close()
Solo necesitamos ejecutar el programa Server en la PC, en Raspberr
y El programa cliente que se ejecuta en el Pi puede controlar el encendido y apagado del LED, es muy simple.