2012-12-05 60 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