Newsgroup: it.hobby.elettronica.digitale
Titolo: Dati "veloci" su porta seriale PC.quanto è veloce Windows?

 
ngiorno al Ng e buona settimana
 
Ho degli eventi campionati ogni ms e tanto per avere l'idea dell'ordine di  
grandezza vengono inviati al PC tramite virtual COM USB a 460800 bps, a  
gruppi di 24 byte ogni ms.
 
Qualcuno dovrà prendere questi dati,analizzarli,rappresentarli  
graficamente ecc
Ho scritto io un pò di codice per windows con il leggerissimo Dev C++.e ho  
avuto conferma Windows nella sua coda di eventi non può garantire la  
risposta ogni ms(giusto?)
Vorrei sapere se è possibile affermare quanto segue:
Il sistema di buffer di windows è tale per cui è indifferente che i dati  
vengano mandati tanto frequentemente.Cioè Windows potrà scaricare il  
buffer,che "fisicamente" sarà un buffer USB,senza problemi per esempio  
ogni 20,40 ms,scaricando quindi rispettivamente 480 o 960 bytes?
 
grazie
 
---
Questa email è stata esaminata alla ricerca di virus da AVG.
http://www.avg.com
 
 

 rispettivamente 480 o 960 bytes?
 
Per quanto ne so, sì a entrambe le domande; non garantisce
l'intervallo temporale e legge quando gli pare. Io ci sono
impazzito ma non troppo; dato che siccome Win è tutto
tranne un RTOS, fin dagli inizi dei miei esperimenti con
la seriale non ho mai fatto troppo conto su prestazioni
più o meno garantite. Credo di essermi risparmiato
parecchi mal di fegato o forse ho solo sprecato energie.
 
Del resto lo vedi da te dalle chiamate di
libreria-sistema: puoi sapere se ci sono dati in attesa ma
quello che c'è al di sotto lo sa solo windozzzz, in linea 
di principio potrebbe benissimo scartarli se il buffer è 
pieno.
 
Prendila come una risposta incerta, potrebbe
tranquillamente essere inesatta.
 
 
-- 
"Pompieri? Presto, venite, la mia casa sta bruciando"
"OK, quando ha avuto origine il fuoco?"
"Nel paleolitico, però sbrigatevi"
 
 

In data  febbraio 2018 alle ore 15:42:33, Archaeopteryx  
<cor.bonukFANCULOSPAM@libero_nomail_.it> ha scritto:

molto gentile,grazie


> molto gentile,grazie
 
Figurati, per una risposta che potrebbe essere inesatta... :D
 
Comunque puramente a occhio un polling a 20 ms con una 
manciata di bit come quelli che hai dovrebbe 
tranquillamente essere possibile sotto win; il problema è 
se quello che stai facendo deve dare garanzie o 
certificazioni e se l'applicazione è critica o meno.


 risposta ogni ms(giusto?)
 
Ogni ms su Windows?  Penso sia impossibile!
 
Prova a fare un programma in C che salva l'orario di avvio in una 
variabile e legge in continuazione l'orario corrente, uscendo dal loop 
quando è passato un secondo. Salva subito l'orario alla fine del loop, 
poi fai stampare la data di inizio e fine... avrai grandi sorprese.

 grandi sorprese.
 
Pensa che ieri sera ero stanco e ho capito male, erano 24
bit e non ms, in effetti la vedo molto ma molto dura.
 
Penso sia uno dei casi in cui paradossalmente il micro
potrebbe gestire una prima elaborazione dati tale da poter
comunicare i risultati a intervalli più lunghi; però
certo, dipende da tutto il contesto.


 quando è passato un secondo. 
 
Ehm, intendevo 1ms.
 


Ciao
nel codicino che ho scritto,rispondendo all'evento ONTIMER a 1 ms non ce 
la fa a fare delle operazioni più pesanti(grafica DrawLine ecc),a 20 ms 
si,ma penso che non sia per la pesantezza delle operazioni,ma proprio 
perchè mi perdo degli eventi.
Proverò facendo inviare dal microcontrollore dei numeri consecutivi
Mi basterebbe essere sicuro che anche nel caso di massimo impegno del 
PC,se invece di prendermi dal buffer 24 byte ogni ms me ne prendo 480 
ogni 20 non me ne perderò nessuno

 "fisicamente" sarà un buffer USB,senza problemi per esempio ogni 20,40 ms,scaricando quindi rispettivamente 480 o 960 bytes?
Windows ti permette di avere UN processo settato come RealTime, se per te e' accettabile non fare altro con quella cpu (tanto stiamo parlando di sistemi 
multicore) non dovresti avere quei problemi.
 
Giulia
 
 


non lo sapevo,grazie
 

Il 25/03/2018 19:43, GIulia ha scritto:

E come si fa a dire 'il programma xyz' deve andare realtime?
 


https://www.tenforums.com/tutorials/89548-set-cpu-process-priority-applications-windows-10-a.html
 
 
C'e' anche il tutorial passo passo


Mooolto utile, nin sapevo, grazie
Ma la cosa del 'singolo programma realtime per cpu' non la vedo da 
nessuna parte
E se gia' uno e' impostato realtime, tento di impostarne un secondo cosa 
succede?
 

 E se gia' uno e' impostato realtime, tento di impostarne un secondo cosa succede?
O entrambi non sono piu' realtime per ovvie ragioni logiche,
o il sistema operativo non lo permette.
 
Giulia
 
 


Oppure vien fuori una manina e ti da' uno scoppellotto
Gia' visto