Vai al contenuto
PLC Forum


Mpro 2.1 E Power Vb


alessandro_

Messaggi consigliati

Ciao a tutti

Spero mi possiate veramente aiutare...

Mi si chiede di amplliare un progetto realizzato con Mpro 2.1, Obbiettivo:realizzare (mediante una maschera richiamabile di inserimento dati) la memorizzazione su di un file (.txt) di una decina di campi come storico di carico grano in un silos. e facendo si che ad ogni inserimento i dati precedentemente inseriti si spostino verso il basso del txt lasciando spazio all'ultimo inserimento effettuato in testa al file.

QUALCHE BUON ANIMA non avrebbe in giro qualcosina di esempio per ottenere tutto cio???

o meglio ancora qual'è l'istruzione in power vb per traslare tutti i dati del txt verso il basso di modo che il successivo inserimento non sovrascriva quello precedente?? (tutto il resto me lo sono già realizzato! ho anche trovato l'istruzione for append ma che mi mette sempre l'ulitmo salvataggio in coda!)

Vi Ringrazio A priori anche solo per il semplice interessamento.

UN DISPERATO!(che di power vb se ne intende assai poco!)

Alessandro Fedrighini

Link al commento
Condividi su altri siti


Ciao,

da quello che ricordo di VB, dovresti innanzitutto aprire il file in modalità append come già del resto fai.

A questo punto occorre che tu vada ad appoggiare il contenuto del file txt in una variabile stringa.

Fatto ciò, il tuo prog vb è in grado di effettuare tutte le operazioni possibili su di una stringa di caratteri. Agendo quindi con le dovute funzioni, dovresti posizionarti all'inizio del file, aggiungere una riga vuota, ritornare all'inizio del file ed inserire la tua nuova stringa.

Chiudi il file con l'istruzione 'Close <numerofile>'.

Purtroppo, utilizzando troppo poco VB non so essere più preciso dandoti direttamente il codice.

Facci sapere se hai sortito qualcosa...

Link al commento
Condividi su altri siti

x micheleb

intanto grazie (ne faccio tesoro).

X niente facile la cosa visto che sono 10 linee da salvare e poi traslare.

Si può salvarae l'intero contenuto di un file di testo in un'unica stringa??

e le dimensioni??

ed in secondo luogo......non so come si fa!!! :-(

Signori mi rimetto alla Vs. clemenza....(30 visite ed 1 solo aiuto...sigh!)

alessandro Fedrighini

Modificato: da alessandro_
Link al commento
Condividi su altri siti

Non so cosa sia Mpro, ma io farei così:

Ogni volta che devi scrivere su "pippo.txt":

1) Cancelli (se esiste) "pippo.bak"

2) Rinomini "pippo.txt" in "pippo.bak"

3) Crei un nuovo file "pippo.txt"

4) Mandi il tuo output in "pippo.txt"

5) Apri "pippo.bak"

6) Leggi i dati di "pippo.bak" e li scrivi su "pippo.txt"

7) chiudi i files

Tutto questo ha dei limiti (solo di tempo) in caso di files molto lunghi.

Link al commento
Condividi su altri siti

Altro metodo che puoi utilizzare senza dover necessariamente accedere al file con il codice è quello di avviare tramite sempre vb, una serie di funzioni SENDKEYS con le quali puoi agire su un'applicazione esterna (notepad) al vb ed interagire con essa passando come parametri alla funzione i tasti che occorre pigiare per aggiungere la riga nuova e salvare poi il file.

Ho notato che quando apri un file con il notepad, il cursore si posiziona automaticamente al riga 1 colonna 1. Quindi, in linea di massima, basta mandare un SENDKEYS con il codice per il tasto ENTER in modo da aggiungere una riga. Un altro con il codice per il tasto freccia "su" in modo da riportare il cursore alla prima riga. A questo punto un'altra funzione con il testo da scrivere sulla riga ed infine un'altra con la combinazione di tasti CTRL+S per salvare il file. La funzione finale sarà una combinazione di tasti ALT+F4 in maniera da chiudere il notepad.

Non è l'eleganza fatta codice e per questo forse i più esperti in VB mi ucciderebbero però direi che dovrebbe funzionare. Spero magari di vedere del codice più elegante da parte di qualche collega. Se vuoi andare sul sicuro forse ti conviene rivolgerti al carissimo Livio Orsini.

Link al commento
Condividi su altri siti

grazie per i Vs. preziosi consigli, Ma ho bisogno ancora di Voi

obbiettivo sulla pressione di un pulsantino aprire un file di testo posizionandolo in primo piano.

istruzioni in power vb, che ho trovato:

id: shell("notepad",1) dove 1 sta per normal widows with focus e va benone.

risultato: ottengo l'apertura di un file di testo nuovo e senza nome (in primo piano).

ORA A ME SERVIREBBE...capire la sintassi per far si che mi apra, ivece di un documento vuoto, un file txt preesistente in un percorso specifico es. c:\pippo\pluto\paperino.txt.

Come faccio ad aprire paperino???? (lettura e scittura)

Sempre grazie in anticipo a tutti

Alessandro

X Michele b.:"Non è l'eleganza fatta codice e per questo forse i più esperti in VB mi ucciderebbero .." visto la carestia di esperti...qualsiasi cosa che funziona va Benone...grazie ancora

Modificato: da alessandro_
Link al commento
Condividi su altri siti

Se guardi gli esempi del progetto on line "Scada in VB" (in evidenza sulla Home) troverai la gestione dellos torico degli allarmi fatta all'incirca come chiedi. Poi non so se è adattabile a Mpro 2.1- La gestione è completa: verifica anche la lunghezza del file *.txt, emette avvisi se si supera una soglia, si può salvare e cancellare.

Link al commento
Condividi su altri siti

Non conosco PowerVB, immagino che sia un qualcosa attacato la' ad un qualche scada.Comunque il VB una sbesasciata di questo tipo potrebbe andar bene.In ogni caso, visto la carestia di esperti... ,a caval donato non si guarda nelle orecchie. :lol:

Private Sub Command1_Click()

Dim NomeFile As String

Dim NumeroFile As Long

Dim Buffer As String

'On Local Error GoTo Errore

NomeFile = "c:\dati.txt"

NumeroFile = FreeFile

'questo legge tutto il file e salva il contenuto nella variabile Buffer

Open NomeFile For Binary As NumeroFile

    Buffer = Space(LOF(NumeroFile))

    Get #NumeroFile, , Buffer

Close NumeroFile

'apri il file nella modalita che ti serve, scrivi il tuo dato più il contenuto letto in precedenza

'ad esempio il ritorno a capo l'ho aggiunto io a caso, oppure potresti utilizzare Write al posto di Input

'certo e' che lavorare con file di testo non e' proprio il massimo.

Open NomeFile For Output As NumeroFile

    Print #NumeroFile, "Questa e' la riga nuova" + vbCrLf + Buffer

Close NumeroFile

Exit Sub

Errore:

If Err = 53 Then

    MsgBox "Impossibile trovare il file: " + NomeFile +" e aggiungo anche che Cip&Ciop sono due fottutissimi scoiattoli !, vbCritical, "Errore"

Else

    MsgBox "Errore: " + Str(Err), vbCritical, "Errore"

End If

End Sub

Link al commento
Condividi su altri siti

scusate il mio silenzio....

Ma devo fare fronte ad altre urgenze! la questione tuttavia Rimane in sospeso, non mancherò di mettervi al corrente dei risultati ottenuti..(sempre che ce ne siano...sigh!).

Ringrazio tutti per il tempo dedicatomi

Fedrighini Alessandro

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...