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
Eth0 su LuckFox Pico Mini A
Le schede Luckfox Pico Mini A (a differenza delle sorelle maggiori) non hanno un connettore RJ45 e nonostante i pin da saldare non sembrano...
-
Per lo shield WiFly e' stata effettuata la patch descritta qui Per la connessione del lettore Rfid si usano i seguenti pin VCC ...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
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...