简体   繁体   English

套接字服务器循环并在python中等待串行命令?

[英]Socket server loop and waiting serial command in python?

Problem with socket server while loop and waiting serial command in python. 套接字服务器while循环和在python中等待串行命令时出现问题。

I have server code in python like this: 我在python中有这样的服务器代码:

import serial
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('', 9000))
sock.listen(1)
print "Listening on TCP 9000"
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
print "Connected at: /dev/ttyUSB0"
while(1):
    print "Waiting For Connection..."

    connection, addr = sock.accept() #PROBLEM HERE

    # IF THERE IS NOT CLIENT, PROGRAM CAN NOTO CONTINUE TO NEXT LINE
    print "Connected"

    #SO I CAN NOT CHECK THE COMMAND FROM SERIAL IN THE SAME TIME
    dataFromSerial = ser.readline()
    if dataFromSerial == "ON":
        #SET LED ON

Help me please... Thanks... 请帮助我...谢谢...

Set the listening socket nonblocking and catch socket timeouts (which apparently can also manifest themselves as EAGAIN or EWOULDBLOCK errors): 设置侦听套接字非阻塞并捕获套接字超时(显然它们也可能表现为EAGAINEWOULDBLOCK错误):

import errno
sock.setblocking(False)  # just once, probably right after listen()
try:
    conn, addr = sock.accept()
    # conn accepted
except socket.error as e:
    if e.errno not in (errno.EAGAIN, errno.EWOULDBLOCK):
        raise  # some sort of error we don't recognize; re-raise
    pass  # no connections were pending

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM