Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da m.alverman
    Se in un'applicazione devi gestire 12 telecamere brandeggiate che in base ad un'intervallo, che può essere diverso per ogni telecamera, la muovo su 50
    possibili posizioni tu quanti timer useresti !?
    Forse uno ma anche nessuno ...

    Precedentemente li avevo referenziati e il codice era veramente incasinato mentre adesso sto provando con gli array e il codice si è dimezzato.
    Non è ancora del tutto funzionante ma promette bene con la metà di codice scritto.
    Ok
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  2. #12
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,487
    Originariamente inviato da m.alverman
    Se in un'applicazione devi gestire 12 telecamere brandeggiate che in base ad un'intervallo, che può essere diverso per ogni telecamera, la muovo su 50
    possibili posizioni tu quanti timer useresti !?
    Se ti serve per quello, potrei usarne uno, ma ancora meglio zero e passare invece all'adozione dei thread.

    Puoi metterne anche mille di timer, ma ogni volta che uno entra in esecuzione, gli altri stanno ad aspettare, quindi più ne metti e meno sono efficaci o temporizzati così come ti aspetti.

    Nulla vieta di usarne uno che, ad ogni "tick", verifica le tempistiche di ogni telecamera e agisce in base al tempo trascorso; è senz'altro più preciso e spreca meno risorse di ventimila timer.

    Se domani ti viene chiesto di aggiungere altre 10 o 20 telecamere cosa fai, riempi la tua applicazione di timer?

    Originariamente inviato da m.alverman
    Precedentemente li avevo referenziati e il codice era veramente incasinato mentre adesso sto provando con gli array e il codice si è dimezzato.
    Non è ancora del tutto funzionante ma promette bene con la metà di codice scritto.
    Di certo non era per il modo in cui richiami il timer: dipende da come hai scritto il codice, e non è detto che - pur usando dei timer - il codice possa essere scritto comunque meglio.

    Originariamente inviato da m.alverman
    vediamo ...........
    Vedi vedi...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #13
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    119
    Ho 50 memorie
    Ho due txtbox dove scelgo la memoria di partenza e la memoria di arrivo, diciamo 1 to 10
    Ed una casella dove scelgo la durata dell'intervallo che trascorre dall'esecuzione da una memoria all'altra

    Ma se volessi usare i thread come dovrei fare ?

    Alberto

  4. #14
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    E che sono queste "memorie" ?

    " memoria di partenza e la memoria di arrivo " ... che vuol dire?

    " dall'esecuzione da una memoria all'altra " ... anche questo, chi ti legge nel forum non sa nulla della tua problematica ... che vuol dire?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #15
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    119
    le memorie sono le posizioni del brandeggio che ne può memorizzare 50
    L'intervallo è il tempo che passa da una memoria all'altra.
    Praticamente ogni tot secondi mando un comando seriale che richiama una memoria del brandeggio

  6. #16
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,487
    Originariamente inviato da m.alverman
    Ma se volessi usare i thread come dovrei fare ?
    Ti devi documentare a riguardo, poiché spiegarlo sarebbe troppo lungo ed estraneo alle prerogative del forum.

    Fai una ricerca per multithreading .net.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #17
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da m.alverman
    le memorie sono le posizioni del brandeggio che ne può memorizzare 50
    Ma nel tuo programma, cosa sono?

    Delle strutture? Degli oggetti? Singole variabili?

    Di che tipo sono? Che valori assumono?

    Praticamente ogni tot secondi mando un comando seriale che richiama una memoria del brandeggio
    E' veramente limitata questa spiegazione per capirci qualcosa ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #18
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    119
    nel mio programma sono comandi seriali
    Ho finito adesso modificando con dei controlli timer inserendo un'array di timer e funziona tutto.
    questi sono i timer:

    codice:
    #Region "TIMER TOGO"
    
        Private Sub tmrTGo_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
            Dim tmrTGoTag As Integer = CInt(CType(sender, Timer).Tag)
            'Debug.Print("timer togo " & tmrTGoTag & " " & CType(sender, Timer).Enabled)
            GoNext(tmrTGoTag) = GoNext(tmrTGoTag) + 1
            ToGo(tmrTGoTag) = memInterval(tmrTGoTag) - GoNext(tmrTGoTag)
            FindControl("lblMem" & CStr(tmrTGoTag), Me).BackColor = Color.Khaki
            If ToGo(tmrTGoTag) < 0 Then 'Se il tempo dell'intervallo a scalare è = 0
                ToGo(tmrTGoTag) = memInterval(tmrTGoTag) 'Imposto il tempo dell'intervallo = all'intervallo delle memorie
                GoNext(tmrTGoTag) = 0 ' e visualizzo zero nella lblMem
                FindControl("lblMem" & CStr(tmrTGoTag), Me).Text = "C" & tmrTGoTag & " From " & CStr(memFrom(tmrTGoTag) + 1) & " To " & CStr(memTo(tmrTGoTag) + 1) & " Out:" & CStr(lastMem(tmrTGoTag) + 1) & " Int:" & memInterval(tmrTGoTag) & " Go: " & memInterval(tmrTGoTag)
            Else
                FindControl("lblMem" & CStr(tmrTGoTag), Me).Text = "C" & tmrTGoTag & " From " & CStr(memFrom(tmrTGoTag) + 1) & " To " & CStr(memTo(tmrTGoTag) + 1) & " Out:" & CStr(lastMem(tmrTGoTag) + 1) & " Int:" & memInterval(tmrTGoTag) & " Go: " & memInterval(tmrTGoTag) - GoNext(tmrTGoTag)
            End If
    
        End Sub
    
    #End Region
    
    #Region "TIMER MEMORIE"
    
        Private Sub tmrMem_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
    
            Dim tmrMemTag As Integer = CInt(CType(sender, Timer).Tag)
            Dim tmrMemInterval As Integer = CType(sender, Timer).Interval
            'Debug.Print("timer mem " & tmrMemTag & " " & CType(sender, Timer).Enabled)
    
            'sequenza in play ?
            memPlay(tmrMemTag) = ini.IniRead(iniFile, "CAM" & tmrMemTag, "MEMPLAY")
    
            If CurrentCamSelect = tmrMemTag Then
                'Coloro di verde la mem precedente della cam corrente
                BtnArray(lastMem(tmrMemTag)).BackColor = Color.PaleGreen
                'Coloro di rosso la memoria in esecuzione della cam corrente
                BtnArray(memOut(tmrMemTag)).BackColor = Color.Red
            End If
    
            FindControl("lblMem" & CStr(tmrMemTag), Me).BackColor = Color.DarkKhaki
    
            tmrMemInterval = CInt(memInterval(tmrMemTag) * CLng(1000))
            If memPlay(tmrMemTag) = "TRUE" Then
                'Imposto play a vero
                PlayOn(tmrMemTag) = CBool("TRUE")
                'Invio al controller la selezione della camera
                ComCamera.Write(Chr(2) & "XPT:" & tmrMemTag & Chr(13))
                'Aggiungo uno zero al comando inviato se inferiore a 10
                If memOut(tmrMemTag) < 10 Then
                    ComCamera.Write(Chr(13) & "#R0" & memOut(tmrMemTag) & Chr(13))
                Else
                    ComCamera.Write(Chr(13) & "#R" & memOut(tmrMemTag) & Chr(13))
                End If
                ComCamera.Write(Chr(2) & "XPT:" & tmrMemTag & Chr(13))
                'Imposto la variabile dell'ultima memoria uscita con la memoria fuori adesso
                lastMem(tmrMemTag) = memOut(tmrMemTag)
                'Se la memoria uscita è uguale alla memoria finale o minore della memoria di partenza
                If memOut(tmrMemTag) >= memTo(tmrMemTag) Then 'Or memFrom(tmrMemTag) >= memTo(tmrMemTag) Then
                    memOut(tmrMemTag) = memFrom(tmrMemTag)
                Else
                    'Incremento la memoria da mandare
                    memOut(tmrMemTag) += 1
                End If
                'Salvo la memoria che ho mandato. Se esco dal programma ripartirò da questa memoria al riavvio
                ini.IniWrite(iniFile, "CAM" & tmrMemTag, "MEMOUT", CStr(memOut(tmrMemTag)))
            End If
        End Sub
    
    #End Region
    in TIMER MEMORIE mando i comandi al brandeggio
    in TIMER TOGO visualizzo sulla form che intervallo di memorie sta uscendo su quel brandeggio, che memoria sta uscendo, l'interbvallo tra una mem e l'altra e tra quanto uscita la prossima memoria.

    Più di così non saprei come spiegare

    Grazie, Alberto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.