Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Por qué la comunicación por socket puede lograr el control remoto?

¿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:')

mientras es verdadero:

comando = raw_input()

new_s.send(comando)

datos = new_s.recv(512)

p>

imprimir datos si datos == 'La comunicación se desconecta':

romper

# 6. La transmisión finaliza y la conexión se cierra

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)

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

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.