... #connection parameters libmetawear.mbl_mw_settings_set_connection_parameters(s.device.board,7.5,7.5,0,10000) #imposta i parametri di connessione BLE ( scheda da modificare, intervallo di connessione limite inferiore min 7.5ms, limite superiore max 4000 ms, latenza:numero di intervalli di connessione da ignorare [0 1000], timeout:tempo massimo tra gli scambi di dati fino a quando la connessione non viene considerata persa [10 32000] ms) ... .... .... def download(states,loggers_acc,loggers_gyro): data_acc_tr=[] data_acc_gd=[] data_acc_gs=[] data_gyro_tr=[] data_gyro_gd=[] data_gyro_gs=[] def call_acc(ctx,data): parsed=parse_value(data) values=[(data.contents.epoch), parsed.x, parsed.y, parsed.z] if loggers_acc[contatore]==loggers_acc[0]: data_acc_tr.append(values) elif loggers_acc[contatore]==loggers_acc[1]: data_acc_gd.append(values) else: data_acc_gs.append(values) def call_gyro(ctx,data): parsed=parse_value(data) values=[(data.contents.epoch), parsed.x, parsed.y, parsed.z] if loggers_gyro[contatore]==loggers_gyro[0]: data_gyro_tr.append(values) elif loggers_gyro[contatore]==loggers_gyro[1]: data_gyro_gd.append(values) else: data_gyro_gs.append(values) #DOWNLOADING print("downloading data") contatore=-1 for s in states: contatore+=1 e=Event() # definizione di funzione di callback per gestire le voci del logger mentre le scarichiamo def progress_update_handler(context, entries_left, total_entries): if (entries_left == 0): e.set() # funzione Puntatore ('pointer') e Gestori per il download del logger fn_wrapper = FnVoid_VoidP_UInt_UInt(progress_update_handler) download_handler = LogDownloadHandler(context = None, received_progress_update = fn_wrapper, received_unknown_entry = cast(None, FnVoid_VoidP_UByte_Long_UByteP_UByte), received_unhandled_entry = cast(None, FnVoid_VoidP_DataP)) callback_acc = FnVoid_VoidP_DataP(call_acc)#(lambda ctx, p: print("{epoch: %d, value_acc: %s}" % (p.contents.epoch, parse_value(p)))) callback_gyro = FnVoid_VoidP_DataP(call_gyro)#(lambda ctx, p: print("{epoch: %d, value_gyro: %s}" % (p.contents.epoch, parse_value(p)))) #stop logger libmetawear.mbl_mw_logger_subscribe(loggers_acc[contatore],None,callback_acc) #sovrascivere il logger per elaborare i dati scaricati #data_acc_tot.append(data_acc) libmetawear.mbl_mw_logger_subscribe(loggers_gyro[contatore],None,callback_gyro) #data_acc_tot.append(data_gyro) #download contenuto logger libmetawear.mbl_mw_logging_download(s.device.board, 0, byref(download_handler)) #scarica i dati dal registro. CHE SIGNIFICA byref???? o meglio perchè lo mettiamo??? e.wait() df_acc_tr=pd.DataFrame(data_acc_tr, columns=["epoch (ms)","acc.x [ ]","acc.y [ ] ","acc.z [ ]"]) df_gyro_tr=pd.DataFrame(data_gyro_tr, columns=["epoch (ms)","gyro.x [°/s]","gy... .... .... .... return df_tr_tot, df_gd_tot, df_gs_tot