2016-10-11 2 views
2

Я пытаюсь написать программирование сокетов в python. Всякий раз, когда клиент отправляет сообщение серверу, светодиод должен мигать. Я запускаю серверную программу на Raspberry pi и клиент на ПК.Программирование сокетов Python и интерфейсы светодиодов

Вот код сервера, который работает на моем Pi.

#!/usr/bin/python    # This is server.py file 
import socket     # Import socket module 
import time 
import RPi.GPIO as GPIO  # Import GPIO library 
GPIO.setmode(GPIO.BOARD)  # Use board pin numbering 
GPIO.setup(11, GPIO.OUT)  # Setup GPIO Pin 11 to OUT 
GPIO.output(11,False)   # Init Led off 

def led_blink(): 
    while 1: 
     print "got msg"   # Debug msg 
     GPIO.output(11,True) # Turn on Led 
     time.sleep(1)   # Wait for one second 
     GPIO.output(11,False) # Turn off Led 
     time.sleep(1)   # Wait for one second 
    GPIO.cleanup() 

s = socket.socket()   # Create a socket object 
host = "192.168.0.106"  # Get local machine name 
port = 12345     # Port 
s.bind((host, port))   # Bind to the port 
s.listen(5)     # Now wait for client connection. 
while True: 
    c, addr = s.accept()  # Establish connection with client. 
    print 'Got connection from', addr 
    msg = c.recv(1024) 
    msg1 = 10 
    if msg == msg1: 
     led_blink() 
    print msg 
    c.close() 

Вот код клиента, который работает на моем ПК.

#!/usr/bin/python   # This is client.py file 
import socket    # Import socket module 
s = socket.socket()   # Create a socket object 
host = "192.168.0.106" # Get local machine name 
port = 12345    # port 

s.connect((host, port)) 
s.send('10') 
s.close 

Я получаю сообщение от клиента, но не могу мигать светодиодом. Извините, я новичок в кодировании. У меня довольно хорошие знания в области аппаратного обеспечения, но не в программном обеспечении. Пожалуйста, помогите мне.

+0

Вы сравниваете строку с номером. Замените код сервера на 'msg1 =" 10 "'. Если это не сработает, вы видите «полученный msg» в консоли? – Goufalite

+1

В вашей функции 'led_blink()' находится цикл 'while 1'. Это ваша цель? – rocksteady

+0

Да! После замены его на строку я могу мигать светодиодом. Thank you – Arunkrishna

ответ

0

Вы сравниваете строку "10" с номером 10. Код code с кодом:

msg1 = "10" 
1

Попробуйте это на вашем компьютере или малина, а затем отредактировать соответствующим образом:

#!/usr/bin/python    # This is server.py file 
import socket     # Import socket module 

def led_blink(msg): 
     print "got msg", msg   # Debug msg 

s = socket.socket()   # Create a socket object 
host = "127.0.0.1"  # Get local machine name 
port = 12345     # Port 
s.bind((host, port))   # Bind to the port 
s.listen(5)     # Now wait for client connection. 
print "Listening" 
c, addr = s.accept()  # Establish connection with client. 
while True: 
    msg = c.recv(1024) 
    print 'Got connection from', addr 
    if msg == "Exit": 
     break 
    led_blink(msg) 
c.close() 

и:

#!/usr/bin/python   # This is client.py file 
import socket, time    # Import socket module 
s = socket.socket()   # Create a socket object 
host = "127.0.0.1" # Get local machine name 
port = 12345    # port 
s.connect((host, port)) 
x=0 
for x in range(10): 
    s.send('Message_'+str(x)) 
    print x 
    time.sleep(2) 
s.send('Exit') 
s.close 

Обратите внимание, что я использую как сервер и клиент на одной и той же машины 127.0.0.1 и удалили биты GPIO, поскольку у меня их нет.

+0

Этот ответ разрешает бесконечный цикл в функции 'led_blink()': на выходе можно вызвать 'GPIO.cleanup()'! – Goufalite

 Смежные вопросы

  • Нет связанных вопросов^_^