Profilo di Daniele aka Palmux

Nome Daniele aka Palmux
Indirizzo email ask@me
AvatarAvatar utenti
Messaggi1372
  • Re: Punto di avvio di una applicazione modulare
    Forum >> Programmazione Python >> Scripting
    Grazie della segnalazione @Palmux, credo Tu riferisca a questo testo, purtroppo (per me) in inglese, che a quanto ho capito parla di architetture software e le affronta tramite python ... si, in sostanza credo che tratti il tipo di "nozioni" di cui avrei bisogno, il mio bagaglio culturale è carente di tali argomenti.
    Bravo era quello che avevo letto a suo tempo, 2018... cavolo come vola il tempo.



    Edit: od anche questo, più specifico per l'argomento?, probabimente, ed anche questo in inglese :(

    Questo non lo conosco.

    Cya
  • Re: Punto di avvio di una applicazione modulare
    Forum >> Programmazione Python >> Scripting
    Ciao caro, ricordo molto chiaramente la lettura di un libro di Leo Giordani del quale non ricordo il nome, ma che fu propedeutico per la configurazione di alcuni progetti non proprio piccini. E' di svariati anni fa, pre-Covid, ma se lo trovi può darti qualche spunto. Ecco magari non tutto perché i tempi cambiano molto velocemente, ma c'è del bello anche in una vecchia macchina da scrivere.


    Cya
  • Re: Problema a salvare un file di interi
    Forum >> Programmazione Python >> GUI
    Ah ok, molto semplicemente l’offset è la posizione di partenza dentro la lista. Serve per dire "da dove comincio a leggere i valori" di ogni gruppo.

    Nel tuo caso:
    -- freqA → offset 0
    -- mixA → offset 4
    -- freqB → offset 9
    -- mixB → offset 13

    Esempio:
    slider[ i ].set(values[offset_mixB + i])


    Così ogni gruppo legge i valori giusti.

    Cya
  • Re: Problema a salvare un file di interi
    Forum >> Programmazione Python >> GUI
    Ciao Fabio, la configurazione è ok, il problema è nel caricamento: quando fai l’Open stai settando gli slider leggendo sempre dall’inizio della lista (values[ i ]) senza tenere conto dei 4 blocchi concatenati (freqA, mixA, freqB, mixB).

    Ti serve usare gli offset giusti per ogni gruppo.

    In più, in “Save As” stai toccando values come se fosse una matrice (values[k] = sets), mentre il file salvato deve restare una lista piatta con tutti i 18 valori in sequenza.

    Per risolvere andrei in questa direzione:

    -- calcola gli offset per i 4 gruppi e, in Open, fai set(values[offset + i]) per ogni slider del gruppo.

    -- in salvataggio, scrivi sempre la lista piatta freqA + mixA + freqB + mixB.

    -- opzionale ma utile: verifica che il JSON abbia esattamente 18 valori prima di settare gli slider.

    Così gli slider si allineano al file caricato.
  • Re: Problema a salvare un file di interi
    Forum >> Programmazione Python >> GUI
    Fabio, nel modello2 app.values contiene più numeri in una stringa (“1500 1500 1500…”), ma .set() accetta un solo float.

    Controlla, se devi gestire più slider, fai un ciclo su ciascun valore; se ne hai solo uno, prendi il primo numero della stringa.

    Prova e fai sapere se era quello il problema.
  • Re: Problema a salvare un file di interi
    Forum >> Programmazione Python >> GUI
    Ciao caro, dunque proviamo a vedere qualche punto insieme.

    Secondo me qui ci sono 3 cose da verificare prima di tutto:

    -- Tipi dei dati json.dump vuole roba serializzabile: la tua app.values è davvero lista di int? (prova: print(type(app.values), app.values[:5]))

    -- Refusi/indici in quel blocco ci sono self._scalesk e app.valuesk: volevi dire self._scalesk e magari salvare in una struttura per chiave? Stai chiamando .get() sul widget giusto o sulla lista?

    -- Percorso file la cartella self._cache esiste quando apri il file? (se no: os.makedirs(self._cache, exist_ok=True))Se vuoi testare l’I/O isolato (senza Tk/interfaccia), prova solo questo micro-test:
    import json
    
    open("test.json","w").write(json.dumps([1,2,3]))

    Fai sapere se trovi la strada.

    Cya
  • Re: Problema con ser.write()
    Forum >> Programmazione Python >> GUI
    Ricapitoliamo.

    Non puoi usare .encode() su un int.

    ser.write() accetta solo bytes, quindi devi impacchettare i numeri.

    Se hai valori >255, usa struct.pack() per convertirli in uint32:
    import serial, struct, time
    
    values = [120, 1500, 50000, 100000]
    data = b''.join(struct.pack('<I', v) for v in values)
    
    with serial.Serial('/dev/ttyACM0', 9600, timeout=1) as ser:
        time.sleep(2)
        ser.write(data)
    Prova una così e vedi se riesci a risolvere.

    Cya
  • Re: Problema con ser.write()
    Forum >> Programmazione Python >> GUI
    No no, così sta cercando di fare .encode() su un int, non si può.

    Devi fare una cosa del genere:

    data = bytes(values)     # mi aspetterei una lista di int 0 -> 255
    ser.write(data)


    Altrimenti non ti andrà mai.
  • Re: Problema con ser.write()
    Forum >> Programmazione Python >> GUI
    Ciao caro, tralasciamo il fatto che non hai indentato correttamente il codice con l'apposito pulsantino, ma sei perdonato per questo peccato veniale.

    Il problema sta nel fatto che ser.write() non accetta liste come nel tuo caso, ma bytes. Quindi devi trasformare, come un barbapapà, quello che gli passi altrimenti avrai sempre quel tipo di errore.

    Ora vai e torna vincitore.
  • Re: Editor messaggi problems
    Forum >> Principianti
    OT

    Agli instancabili spammatori seriali: continuate pure, tranquilli. Un giorno le intelligenze artificiali si ribelleranno… e chissà, magari si ricorderanno esattamente chi ha reso necessario tutto questo. Ma fate con comodo, eh.

    Fine OT.