Paso 3: Código de Python
El código de Python Lee los datos entrantes en serie y separa cada línea a lo largo de las pestañas, dándole diferentes valores para los datos X, Y y Z. Algún proceso se hace para poner los valores en sus propias variables.Para trazar las variables, la biblioteca "matplotlib" se utiliza para crear un gráfico animado. Esto se traduce en un razonablemente exacta "en vivo", pero grandes cantidades de actividad sensor hará que el gráfico de retraso un poco.
Por último, los datos se guardan en un archivo .txt en una ubicación especificada. Pueden leer los datos cuando de nuevo necesaria usando el numpy.loadtxt() función (vea el paso siguiente de código). Sin embargo, este tipo de archivo se lee más fácilmente en Python, así que si quieres abrir los datos en un programa diferente necesita utilizar una función de escritura diferentes. (ej. uso CSV formato de archivo para abrir datos en Excel) No te olvides de cambiar la ubicación del archivo para que coincida con el directorio de su equipo.
Ver el código para comentarios más detallan (o Google o pedir y haré mi mejor para explicar o señalar a una explicación)
{{{
'''
Lee datos en una conexión en serie y de la parcelas que viven los resultados. Antes del cierre, los datos se guardan en un archivo .txt.
'''
serial de importación
matplotlib.pyplot importación como plt
numpy importación como np
importación win32com.client
conectado = False
Puerto #finds COM que el Arduino (suponiendo que solamente un Arduino está conectado)
WMI = win32com.client.GetObject("winmgmts:")
Puerto de wmi. InstancesOf("Win32_SerialPort"):
#print puerto. Nombre #port. DeviceID, puerto. Nombre
Si "Arduino" en el puerto. Nombre:
comPort = puerto. DeviceID
impresión de comPort, «es Arduino»
ser = serial. Serial(comPort, 9600) #sets conexión serial (en baudios que hacen está correcto - coincide con Arduino)
no conectado:
serin = ser.read()
conectado = True
PLT.ion() #sets parcela a modo de animación
longitud = 500 longitud de #determines de datos tomando la sesión (en los puntos de datos)
x = [0] * variable vacía de longitud #create de la longitud de prueba
y = [0] * longitud
z = [0] * longitud
Xline, = plt.plot(x) #sets futuras líneas a modificar
yline, = plt.plot(y)
zline, = plt.plot(z)
PLT.ylim(400,700) #sets la y eje límites
para que en range(length): #while está tomando datos
datos = ser.readline() #reads hasta que un carro retorno. ASEGÚRESE DE QUE HAY UN RETORNO DE CARRO O LEE POR SIEMPRE
Sep = data.split() #splits string en una lista en las pestañas
#print sep
x.Append(int(Sep[0])) #add nuevo valor como int a la lista actual
y.Append(int(Sep[1]))
z.Append(int(Sep[2]))
del x [0]
y del [0]
del z [0]
xdata Xline.set_xdata(NP.arange(Len(x))) #sets nueva longitud de la lista
yline.set_xdata(NP.arange(Len(y)))
zline.set_xdata(NP.arange(Len(z)))
Xline.set_ydata(x) #sets ydata a nueva lista
yline.set_ydata(y)
zline.set_ydata(z)
segundos PLT.PAUSE(0.001) #in
nuevo diagrama de PLT.draw() #draws
filas = zip (x, y, z) #combines listas junto
row_arr = np.array(rows) #creates array de lista
NP.savetxt ("C:\\Users\\mel\\Documents\\Instructables\\test_radio2.txt", row_arr) #save datos en archivo (carga w/np.loadtxt())
ser.Close() #closes conexión serie (muy importante hacerlo! si tienes un error parcialmente a través del código, escribe esto en la línea cmd para cerrar la conexión)
}}}