2012-12-05 57 views
4

我想在Arduino上編寫一個簡單的網絡服務器來測試一些東西,但是我找不到帶有以太網的Arduino。Arduino,python,pyserial和socket

「不用擔心」我想,「我只需在python中編寫一個套接字服務器,作爲串行連接的代理」。

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,並得到了一個正確的答案,但是Python和連續性只是一團糟。

任何人都可以幫助我嗎?

+2

最好的設計是將整個事件放入單個事件循環或反應器中。 – Keith

回答

-1

在PySerial文檔中使用tcp_serial_redirect.py腳本。是你所需要的全部。

+0

爲什麼這會降低投票率?我正在查看此刻的串行重定向。我仍然是一個noob,可能會稍後更新此評論。 – RufusVS