martedì 30 marzo 2021
Lettore file UBX in Python
uno script scritto di fretta per risolvere un problema di debug sulla trasmissione via radio di un file ubx
magari puo' servire a qualcun altro
=================================================
def crc_check(valore):
global ck_a
global ck_b
ck_a = (ck_a+valore) % 256
ck_b = (ck_b+ck_a) % 256
#print "CK_A : " + str(hex(ck_a)) + " CK_B : " + str(hex(ck_b))
#file = open('acm0_remoto.ubx', 'r')
#file = open('usb0.ubx', 'r')
file = open('arcetri_ucenter.ubx', 'r')
#file = open('orto.ubx', 'r')
off=0
fine=0
ck_a = 0
ck_b = 0
good = 0
bad = 0
pacchetto = -1
while 1:
char = file.read(1)
off=off+1
pacchetto = ""
if ord(char) == 181: #B5
pacchetto = pacchetto + char
if (off == (fine+1)):
print "OK"
inizio = off -1
ck_a = 0
ck_b = 0
char = file.read(1)
off=off+1
#pacchetto = pacchetto + char
if ord(char) == 98: #62
#
if (inizio == fine + 1):
print "////////////////////// OK ////////////////"
print "/////////////////// " + hex(lungh) +" ////////////////"
#good = good + 1
else:
print "******************** ERRORE **************"
print "*****************DIFF " + hex(inizio-fine) + "*********"
#somma_diff = somma_diff + (inizio-fine)
#bad = bad+1
print "================================================="
print "======GOOD :" + str(good) + "==========BAD :"+ str(bad) + "==========================="
print "================================================="
pacchetto = pacchetto + char
print "Offset inizio: " + hex(inizio)
char = file.read(1)
pacchetto = pacchetto + char
off=off+1
print "Message Class: " + hex(ord(char)),
if (ord(char) == 1):
print " NAV ",
if (ord(char) == 2):
print " RXM ",
if (ord(char) == 4):
print " INF ",
if (ord(char) == 5):
print " ACK ",
if (ord(char) == 6):
print " CFG ",
if (ord(char) == 10):
print " MON ",
if (ord(char) == 11):
print " AID ",
if (ord(char) == 13):
print " TIM ",
classe = ord(char)
crc_check(ord(char))
char = file.read(1)
pacchetto = pacchetto + char
off=off+1
print " Message ID: " + hex(ord(char)),
crc_check(ord(char))
if (classe == 2):
if (ord(char)) == 0x10:
print " RAW "
if (ord(char)) == 0x11:
print " SFRB "
if (ord(char)) == 0x12:
print " SFRBX "
if (ord(char)) == 0x13:
print " RAWX "
char = file.read(1)
pacchetto = pacchetto + char
off=off+1
print "Payload Length High: " + hex(ord(char))# + " " + str(ord(char))
lungh = ord(char)
crc_check(ord(char))
char = file.read(1)
pacchetto = pacchetto + char
off=off+1
print "Payload Length Low: " + hex(ord(char))# + " " + str(ord(char))
lungh = (256*ord(char)) + lungh
print "Lunghezza :" + str(hex(lungh))#+ " " + str(lungh)
crc_check(ord(char))
for t in range(lungh):
char = file.read(1)
print hex(ord(char)),
pacchetto = pacchetto + char
off=off+1
crc_check(ord(char))
char = file.read(1)
pacchetto = pacchetto + char
off=off+1
crc_1 = ord(char)
char = file.read(1)
pacchetto = pacchetto + char
off=off+1
print "CRC 1: " + hex(crc_1) +" CRC 2: " + hex(ord(char))
crc_2 = ord(char)
print "CK_A :" + hex(ck_a) + " CK_B : " + hex(ck_b)
if ((ck_a == crc_1) and (ck_b == crc_2)):
print "CRC OK"
good = good + 1
corretto = open('corretto.ubx', 'a')
corretto.write(pacchetto)
corretto.close()
else:
print "Errore CRC"
bad = bad + 1
fine = off-1
print "Fine :" + hex(fine)
try:
input()
except SyntaxError:
pass
Pandas su serie tempo
Problema: hai un csv che riporta una serie tempo datetime/valore di un sensore Effettuare calcoli, ordina le righe, ricampiona il passo temp...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...