Vai al contenuto
PLC Forum


Sharp7 e Thread


Messaggi consigliati

Buongiorno,

mi riallaccio al codice riportato qui , utilizzando un timer che ogni 100ms mi fa una lettura sul plc, funziona bene. Adesso come suggerito da dan64100 per rendere l'applicazione più reattiva occorrerebbe inserire il codice all'interno di un thread. Ho provato in vari modi, ma poiché all'interno di un thread non si può aggiornare direttamente un oggetto della form, a meno che non si faccia uso di costrutti complessi, non alla mia portata, non sono riuscito a farlo. Qualcuno ha qualche esempio da farmi vedere o qualche suggerimento?

Grazie

Link al commento
Condividi su altri siti


Finora non ho sentito l'esigenza di scendere sotto i 100/200 millisecondi anche perché credo, ma è una mia personale opinione, sotto non sia più un lavoro da interfaccia operatore. Intendo dire che se vuoi salire così tanto di velocità forse è meglio affidarsi al PLC e non al PC.

Curiosità.... Cosa devi fare sotto i 100 millisecondi?

Link al commento
Condividi su altri siti

Quella di aggiornare il thread UI da un'altro thread è un argomento con cui prima o poi si picchia la testa.

E non è un argomento semplice.

Trovo interessante questo approccio (C#):

https://blog.stephencleary.com/2012/02/reporting-progress-from-async-tasks.html

non è la soluzione più semplice, ma penso utilizzi tecnologie recenti (in C# si può usare anche il BackGroundWorker, ma viene considerato un approccio obsoleto).

Ci cono anche metodi per fare un "context change" al volo e quindi di aggiornare oggetti grafici anche dal thread di un timer.

Non entro nei dettagli perchè io stesso imparo qualcosa di C# da "hobbista".

 

Usando C# e WPF si potrebbe usare un thread per leggere i dati ed appoggiarli in una oportuna struttura dati, e poi usare il binding per associare i dati agli elementi grafici.

Qui dipende da quali strumenti utilizzi e dal tipo di interfaccia che devi realizzare.

Link al commento
Condividi su altri siti

Buongiorno,

drn5 100msec vanno più che bene è che se faccio anche altre operazioni, tipo leggere da un db, o se vado a leggere da un secondo plc il tutto si rallenta.

fedebeg anche io conosco C# da hobbista come te, ho appena acquistato un libro sul C#, perchè volevo sviluppare in WPF e fare il binding, ma prima che arriverò ad un livello tale, troppo tempo mi ci vorrà. Nel fra tempo speravo di trovare qualcosa di "pronto".

Guarderò il tuo link, se sei interessato ti consiglio di guardare anche https://www.mesta-automation.com/how-to-write-an-hmi-with-c-and-wpf-part-1-of-x/ però utilizza MVVM light ormai deprecato, invece l'esempio con Prism ancora non riesco a farlo andare.

Ci dovrò lavorare ancora un po' su 😒

 

Comunque grazie ad entrambi

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...