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
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
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...