gravino Inserito: 13 gennaio 2019 Segnala Share Inserito: 13 gennaio 2019 buonasera dopo due giorni di prove sono riuscito a leggere il formato DTL da una cpu s71200, utilizzando l'esempio vb , ora vorrei leggere 53 DTL, esiste un modo per non dover scrivere 53 volte Public data1 As DateTime Public data2 As DateTime Public data3 As DateTime Public data4 As DateTime Public data5 As DateTime Public data6 As DateTime e poi 53 volte Result.data1 = S7.GetS1200_DTLAt(Buffer, 0) Result.data2 = S7.GetS1200_DTLAt(Buffer, 12) Result.data3 = S7.GetS1200_DTLAt(Buffer, 24) Result.data4 = S7.GetS1200_DTLAt(Buffer, 36) Result.data5 = S7.GetS1200_DTLAt(Buffer, 48) Result.data6 = S7.GetS1200_DTLAt(Buffer, 60) e poi 53 volte Label14.Text = CR.data1 Label12.Text = CR.data2 Label13.Text = CR.data3 Label15.Text = CR.data4 Label16.Text = CR.data5 Label17.Text = CR.data6 End Sub e il tutto per 3 volte grazie a tutti Gravino Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 14 gennaio 2019 Segnala Share Inserita: 14 gennaio 2019 Fai un loop di 53 ricorsi incrmentando n di 12. esempio Result.data(0) = S7.GetS1200_DTLAt(Buffer, 0) Label(14).Text = CR.data(0) For n=1 to, n<53, n++ { Result.data(n) = S7.GetS1200_DTLAt(Buffer, n*12); Label(n+14).Text = CR.data(n) ; } Ovviamente dovrai prevedere segli array per label e data Link al commento Condividi su altri siti More sharing options...
gravino Inserita: 14 gennaio 2019 Autore Segnala Share Inserita: 14 gennaio 2019 buongiorno Livio grazie per il consiglio, usare un ciclo for ci er arrivato , ma come implementarlo ero ancora ingarbugliato nei manuali , faccio subito qualche prova, secondo te potrei usare anche un do .. while visto che dovro leggere delle date dal DB e più o meno ne viene registrata una a settimana, visto che per scrivere nel DB uso una struttura con indice se passassi al while questo indice eviterei di leggerre le caselle vuote? comunque testo prima la tua funzione, un passo alla volta grazie di nuovo Gravino Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 14 gennaio 2019 Segnala Share Inserita: 14 gennaio 2019 2 ore fa, gravino scrisse: secondo te potrei usare anche un do .. while Qualsiasi formula che ti permette di fare un algoritmo ricorsivo va bene. Tra l'altro, essendo che non uso VB da ciurca un decennio, ho scritto l'esempio in pseudo "C", quindi probabilmente non è usabille così come è. 3 ore fa, gravino scrisse: uso una struttura con indice se passassi al while questo indice eviterei di leggerre le caselle vuote? Questo è fattibile anche con il for, basta mettere il test di "n" non con una costante ma con una variabile, In pratica scriveresti "For n=1 to n<x, n++ ; dove "x" è il tuo indice. Link al commento Condividi su altri siti More sharing options...
gravino Inserita: 14 gennaio 2019 Autore Segnala Share Inserita: 14 gennaio 2019 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim data(10) As DateTime Dim Label(10) As String Dim Buffer(132) As Byte Dim n As Integer Client.DBRead(5, 0, 132, Buffer) data(0) = S7.GetS1200_DTLAt(Buffer, 0) Label(14) = System.Convert.ToString(data(0)) For n = 0 To n < 11 data(n) = S7.GetS1200_DTLAt(Buffer, n * 12) Label(n + 14) = System.Convert.ToString(data(n)) Next End Sub End Class ho provato a scrivere , ma non funziona non riesco a leggere nulla Link al commento Condividi su altri siti More sharing options...
gravino Inserita: 15 gennaio 2019 Autore Segnala Share Inserita: 15 gennaio 2019 finalmente ho ottenuto quello che volevo Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim datum(52) As DateTime Dim Buffer(638) As Byte Dim index As Integer Dim leest As Integer Client.DBRead(5, 0, 638, Buffer) leest = S7.GetIntAt(Buffer, 636) datum(0) = S7.GetS1200_DTLAt(Buffer, 0) TextBox1.Text = datum(0).ToString For indice = 0 To leest - 2 datum(indice) = S7.GetS1200_DTLAt(Buffer, index * 12) TextBox1.Text &= vbNewLine & datum(indice).ToString Next TextBox2.Text = leest.ToString sicuramente non é scritto in maniera accademica, purtroppo era la mia esperienza con VB.net e Snap7, quindi consigli per il miglioramento son ben accetti, ringrazio ancora Livio per i consigli e Davide per lo splendido lavoro Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 16 gennaio 2019 Segnala Share Inserita: 16 gennaio 2019 Funziona? Questo è la prima condizione necessaria ed anche sufficiente. Poi se si vuole migliiorare la forma lo si potrà fare. Anche così mi sembra abbastanza ben ottimizzato. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora