Mise en pratique : Programmation Python
En cours de rédaction (brouillon)
# -*- coding: utf-8 -*-
"""
Utilisation du XBee Coord vers ED
à l'adresse suivante : 00 13 A2 00 41 BF 3D 0D
Si changement d'adresse ou tout autre modif dans la trame le cheksum
est a revoir et il faudra modifer la valeur de depart lenght et checksum!
"""
import serial
import time
ser = serial.Serial('/dev/ttyAMA0', baudrate=9600, timeout = 8)
def calcChecksum(frame):
checksum = 0
temp_sum = 0
for i in range (3, len(frame)):
temp_sum = temp_sum + ord(frame[i])
temp_sum = temp_sum & 0xFF
checksum = 0xFF - temp_sum
return checksum
delim = b'\x7E' #start delimiter
lenght_1 = b'\x00' #1st length byte
lenght_2 = b'\x0F'
frame_type = b'\x17' #Pour une commande AT !
frame_ID = b'\x0A'
addr_1 = '\x00'
addr_2 = '\x13'
addr_3 = '\xA2'
addr_4 = '\x00'
addr_5 = '\x41'
addr_6 = '\xBF'
addr_7 = '\x3D'
addr_8 = '\x0D'
rmt_opt ='\x00'
is_1 = '\x49'
is_2 = '\x53'
frame = b'\x7E' + lenght_1 + lenght_2 + frame_type + frame_ID + addr_1 + addr_2 + addr_3 + addr_4 + addr_5 + addr_6 + addr_7 + addr_8 + b'\xFF' + b'\xFE' + rmt_opt + is_1 + is_2
while True :
checksum = calcChecksum(frame)
frame_e = frame + chr(checksum)
frame_convert_h = frame_e.encode('hex')
print("Checksum =" + str(hex(checksum)))
print(frame_convert_h)
ser.write(frame_e)
time.sleep(2)
trame_recept = ser.read()
trame_convert = trame_recept.encode('hex')
print("La trame reçue est :\n" + trame_convert)
print("Sa longueur est de : " + str(len(trame_convert)))
val_adapt = trame_convert[(len(trame_convert)) - 6:]
val_adapt = val_adapt[:(len(val_adapt) - 2)]
time.sleep(2)
print("On isole la valeur de l'ADC:\n" + val_adapt)
time.sleep(2)
val_num = int(val_adapt, 16)
val_num_adapt = ((val_num * 1.2) / 1023)
val_num_str = str(val_num)
print("Ce qui donne une valeur numérique de: \n" + val_num_str)
print("%.2f" % val_num_adapt)
time.sleep(2)
Last updated