Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Topics - Anakin73

Pagine: [1]
1
PyQT / [RISOLTO]Condividere dizionari tra due processi
« il: Gennaio 29, 2021, 19:51 »
Buonasera a tutti,
volevo sottoporvi un problema che mi sta assillando da una settimana.
Sto realizzando una domotica per la mia casa, ho acquistato un pc all-in-one sul quale ho installato Ubuntu 20.04 il pc ha un processore i7 quadcore 16G RAM.
Ho realizzato il pannello di controllo e programmazione della domotica utilizzando Python3.8 e come libreria GUI PyQt5
Il programma realizzato ha anche la funzione di chiamare, con protocollo Modbus utilizzando la libreria Modbus_tk, dei dispositivi suddivisi su due linee RS485 native del pc. Una linea ha le seguenti caratteristiche 115200 ,N,8,1. L'altra 9600,N,8,1.
Su quella più veloce leggo e scrivo i dispositivi di I/O sull'altra i "servizi" (un analizzatore di rete, l'inverter del FV  e la pompa di calore).
Tutto funziona meravigliosamente ma, ecco l'assillo, eseguendo le letture delle due linee rs485 in sequenza, risulta che la linea più lenta infici le prestazioni dell'altra e cosa peggiore, quando (e purtroppo capita sovente) l'inverter FV è in spegnimento o in accensione e non comunica, il timeout di "non risposta" blocca il processo di lettura di entrambe le linee per 500 mS sembra una banalità, ma vi assicuro che è veramente noiso il ritardo di accensione o quello di lettura dei pulsanti.
Ho cercato di risolvere con QRunnable o con QThread, la cosa migliora in caso di "non risposta" ma non risolve il problema del conflitto (se così si può definire) tra le due linee. L'unica soluzione funzionante che ho trovato è stata quella di creare un thread contenente  due QApplication contenenti i "loop" della lettura continua della linea a 115200 e di quella a 9600 e una QApplication contenete il programma principale. Il problema che avrete già intuito e che non riesco a "prendere" i dati letti ne ad inviare dati da scrivere, pertanto il mio assillo sta nel poter condividere tra i due "loop" e il programma principale il dizionario contenente le informazioni di I/O.
Avete dei suggerimenti?
Grazie mille!

2
PyQT / [RISOLTO]QPushButton
« il: Giugno 25, 2020, 16:53 »
Buongiorno a tutti,
ho cercato in rete e sulla documentazione ufficiale ma non ho trovato (o forse non ho capito) come rendere il QPushButton un pulsante momentaneo ovvero attivo solo durante la pressione o click prolungato.
Qualcuno può aiutarmi?
Grazie

3
Buongiorno a tutti.
Utilizzando la libreria pymodbus ho creato uno script che legge un dispositivo di Input a 16 ingressi e fino a qui tutto liscio. Volendo interrogare continuamente il dispositivo l'unica soluzione che ho trovato è aggiungere un ciclo while a:

com = {"port":"COM5","baudrate":9600,"parity":'N',"bytesize":8,"stopbits":1,"method":"rtu","timeout":1} #dizionario contenente le caratteristiche di comunicazione
dati = {"nodo":1,"funzione":2,"indirizzo":0,"punti":16,"valore":[],"endianness":"L"} #dizionario contente i dati Modbus da inviare
IN = ComandiModBus(com) # istanziamento dell'oggetto IN della classe ComandiModbus figlia della classe pymodbus.client.sync
while True: # ciclo while aggiunto
      listaBool = IN.read(dati) #carico sulla lista "listaBool" i valori letti

Il problema è che il ciclo while è bloccante e vorrei poter eseguire altre funzioni durante queste "chiamate".
Esiste un metodo per eseguire delle funzioni in background?
Ho provato i thread ma non riesco a farli funzionare con pyqt5 (finestra nella quale vorrei rappresentare lo stato degli ingressi del dispositivo di Input) in particolare appena creo l'oggetto QApplication(sys.argv) lo script crasha :(
Grazie
     

4
Benvenuto e regolamento / Buongiorno a tutti!!
« il: Giugno 23, 2020, 12:34 »
Buongiorno, sono un nuovo iscritto a questo forum su Python.
Ho seguito alcuni corsi e tutorial ma ho ancora molto da imparare... sono qui per questo  :)
Programmo PLC con lo standard IEC 61131 e ho realizzato alcune applicazioni in Python e VisualBasic... che dire... è un mondo che mi affascina!
Sono molto contento di far parte di questa community (è da un po' che vi seguo da visitatore), vi auguro una bellissima giornata e grazie di avermi accettato!!

Pagine: [1]