Paso 4: chapucero
Aquí analizaremos que hace cada parte del guión, para que pueda entenderlo y modificarlo para sus proyectos.
En primer lugar, tenemos que abrir el puerto serie. La secuencia de comandos utiliza módulo PySerial para hacer esto.
import serial ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
Ahora, vamos a consultar el sensor para el valor de la construcción. Es un valor estático que identifica la versión de la EzTemp.
En primer lugar, tenemos que enviar el comando 'v' a la EzTemp:
ser.write("v")
El valor de construcción es un valor de 2 bytes, por lo que debemos esperar una respuesta de 4 bytes (bytes 1 Eco + construir 2 bytes + 1 byte comprobación) de la EzTemp. Ahora leer la respuesta:
s = ser.read(4)
Datos se reciben en bytes separados, aunque el identificador de la construcción es un valor de 2 bytes. Para "reconstruir", debemos cambiar el byte más significativo de 8 bits a la izquierda y luego añadir el byte menos significativo. De esta manera recuperamos el campo de 2 bytes correctamente:
version = (ord(s[1]) << 8) + ord(s[2])
Puede utilizar la frase arriba cada vez que recibe un valor de 2 bytes de EzTemp.
La última línea de este bloque simplemente imprime el resultado en pantalla:
print 'EzTemp&RH build ' + str(version)
El resto de la secuencia de comandos hace los misma consulta valores de los sensores de la EzTemp. Vamos a ver el valor de temperatura por ejemplo:
ser.Write("d") ser.write("d") s = ser.read(4) temperature = (ord(s[1]) << 8) + ord(s[2])
imprimir ' temperatura: ' + str(1.0*temperature/10) + 'C'
En este caso, utilizamos el comando había ' para consultar la temperatura en grados celsius con 0,1 precisión. Como se puede ver, la captura de la respuesta es bastante similar. La diferencia está en cómo tratar el valor devuelto.
Cuando nos consulta temperatura o cualquier otro parámetro con precisión de 0,1, se reciben los datos como un entero de 2 bytes en décimas del valor. Esto es, si la temperatura es 21.5ºC, el EzTemp recibe el valor 215 y la secuencia de comandos de usuario se debe dividir por 10 para obtener la temperatura real.
Todos los valores tienen una orden de precisión entero si no necesita decimales. Utilizando estos comandos easens lectura y procesamiento de los datos devueltos. Revise la hoja de datos para la lista completa de comandos.