以下是我的脚本。它创建一个目录,检测arduino设备,不断将其输出写入文本文件,并在本地服务器中提供该文件。从我所知道的(并已阅读),这一行:
httpd.serve_forever()
在处理后没有任何结果。文本文件永远不会被写入。如果我将httpd.serve_forever()行进一步向下移动,它将处理所有内容,因此这似乎重申了这一理论。我该怎么做我需要的东西?我明白哪里出错了?
import serial
import serial.tools.list_ports
import os
import SimpleHTTPServer
import SocketServer
import sys,os
fileDir = os.path.dirname(os.path.realpath('__file__'))
try:
os.makedirs(os.path.join(fileDir, 'log'))
except OSError:
if not os.path.isdir(os.path.join(fileDir, 'log')):
raise
directory = os.path.join(fileDir, 'log')
log = os.path.join(directory, 'log.txt')
os.chdir(directory)
PORT = 8080
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
httpd.serve_forever()
def get_ports():
ports = serial.tools.list_ports.comports()
return ports
def findArduino(portsFound):
commPort = 'None'
numConnection = len(portsFound)
for i in range(0,numConnection):
port = foundPorts[i]
strPort = str(port)
if 'Arduino' in strPort:
splitPort = strPort.split(' ')
commPort = (splitPort[0])
return commPort
foundPorts = get_ports()
connectPort = findArduino(foundPorts)
if connectPort != 'None':
ser = serial.Serial(connectPort,baudrate = 9600, timeout=1)
while 1:
if ser.inWaiting():
with open(log, "w") as txtfile:
x=ser.readline()
txtfile.write(x)
txtfile.flush()
if x=="\n":
txtfile.seek(0)
txtfile.truncate
txtfile.flush()
ser.close()
else:
print('Connection Issue!')
print('DONE')