2012-12-05 3 views
4

몇 가지를 테스트하기 위해 Arduino에서 간단한 웹 서버를 작성하려고하지만 이더넷으로 내 Arduino를 찾을 수 없습니다.Arduino, python, pyserial and socket

"걱정하지 마라."필자는 "직렬 연결을위한 프록시 역할을하는 소켓 서버를 파이썬으로 작성합니다"라고 생각했습니다.

import socket 
import serial 
host = '' 
port = 8001 
buffSize= 1024 
serverSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
serverSocket.bind((host, port)) 
serverSocket.listen(1) 
ser = serial.Serial('COM3', 115200, timeout=None, dsrdtr =False,rtscts =False,xonxoff =False) 
print "Listening..." 
send = "" 
while 1: 
    conn, remoteAddr = serverSocket.accept() 
    print "Connection...." 
    data = conn.recv(buffSize) 
    print "Recieved" 
    ser.write("%s\n"%data) 
    print "Sent" 
    print "Attempting to get reply" 
    while ser.inWaiting()>0: 
      conn.send(ser.read()) 
    conn.close() 
serverSocket.close() 

그러나 내가 시도한대로 브라우저에서 만든 연결이 임의로 재설정되고 여러 행의 데이터가 표시되는 것 같습니다. 그리고 스크립트는 시리얼 포트에 연결하거나 연결을 끊을 때마다 Arduino를 리셋합니다. 나는 RealTerm을 사용해 보았고 적절한 답을 얻었지만 파이썬과 연속성은 엉망이다.

아무도 도와 줄 수 있습니까?

+2

최선의 설계는 모든 것을 단일 이벤트 루프 또는 반응기에 넣는 것입니다. – Keith

답변

-1

PySerial 설명서에서 tcp_serial_redirect.py 스크립트를 사용하십시오. 너 모두 필요해.

+0

왜 이것을 다운 그레이드 했습니까? 나는 지금이 순간의 시리얼 리다이렉트를 조사하고있다. 나는 아직도 멍청하다. 나중에이 코멘트를 업데이트 할 것이다. – RufusVS