Newsgroup: it.comp.programmare.win32
Titolo: Funzionalità di scripting

Salve a tutti, ho fatto un giro per google ma non ho trovato niente.
Avrei bisogno di integrare in un programma scritto in c++ (MFC) delle
funzionalità di scripting.
E' un programma di automazione industriale e vorrei che l'utente
potesse fare delle semplici operazioni logiche e aritmetiche. Qualcosa
come il VB di excel, ma molto più semplice.
Il programma (è un applicativo di visione artificiale) attualmente è
strutturato in Finestre (immagine acquisita) - Aree di interesse (le
zone da elaborare) - Algoritmi (i controlli o le misurazioni da
eseguire). Avrei bisogno ci fornirwe all'utente una interfaccia potente
per programmare l'applicativo  (per es: "se il risultato del controllo
x è maggiore della variabile y allora fa qualcosa, altrimenti fanne
un'altra...")
Al momento non saprei come cominciare, mi sapreste dare qualche dritta,
o suggerire qualche risorsa dove informarmi?
Ringrazio chi sarà così cortese da darmi un suggerimento.

funzionalità di scripting
Guarda se 
www.nombas.com
 fa al caso tuo. Puoi integrare un interprete
javascript nel tuo applicativo C/C++
Ciao
InModIs

Amerigo ha scritto:


non so se l'altro post arriva o se si è perso, lo riposto.
prova a vedere a questo link:
http://www.codeproject.com/com/mfcscripthost.asp
 
ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

prova il MsScriptControl: è un ActiveX, ce l'hai di sicuro se usi Visual
Studio 6. è semplicissimo (ha solo tipo 4 o 5 metodi) e ti permette di
interpretare JavaScript o VBScript, a tua scelta (c'è un metodo per
settare il linguaggio di programmazione usato); inoltre puoi aggiungere tu
stesso le interfacce e i metodi da usare negli script: devono essere
oggetti COM (con MFC e col ClassWizard di Visual C++ 6 è tutto facilissimo
anche per chi non sa nulla di COM, OLE, ecc.).
unico problema: se ben ricordo VC6 aveva problemi con uno dei metodi (Run
mi sembra) perché MFC non supportava i SAFEARRAY (mi sembra...), perciò
quel metodo se ti serve lo devi importare manualmente, ma non è neanche
detto che ti serva.
per curiosità, posso sapere in che città lavori e che tipo di requisiti
sono richiesti nel curriculum per fare un lavoro del genere? :)




Python (
http://www.python.org
).
In particolare puoi usare Boost.Python per interfacciarti a Python da
C++ (
http://boost.org/libs/python/doc/index.html
).
Una soluzione (forse piu' semplice) e' implementare tutte le
funzionalita' che ti servono in una libreria.
Scrivere un modulo Python di interfaccia per quella libreria e
implementare tutta la gestione utente (grafica, scripting)
direttamente in Python.
Saluti  Manlio Perillo

sono richiesti nel curriculum per fare un lavoro del genere? :)
Sembra che Amerigo sia un mio concorrente... per questo non gli
ho risposto!  ;P
Il software di visione artificiale, in molti settori
dell'industria, e' richiestissimo. Tutti vogliono misurare la
produzione per controllare e certificare. Piu' e' veloce la
misurazione, meno si scarta e... piu' si licenzia.
Per la cronaca io sono di Milano e autoditatta.
Paolo

 Per la cronaca io sono di Milano e autoditatta.
ehm, e che c'entra? O_o


Zona di Pescara. Conoscenze di C++, MFC, Labwindows/CVI e automazione
industriale in genere. Ma visto il periodo nero, farsi assumere non è
la cosa più semplice del mondo.

Ciao concorrente! Che cattivo che sei :-)
Il vantaggio fondamentale di un controllo automatizzato è che non è
solo (o necessariamente) più veloce, ma intrinsecamente ripetibile e
costante.
Il discorso licenziamento è piuttosto complesso secondo me.
In teoria il controllo industriale dovrebbe portare ad un miglioramento
di qualità e di conseguenza competitività e le persone impiegate nel
controllo "manuale" dovrebbero essere riqualificate per lavori meno
alienanti. In teoria.
Ovviamente un discorso come questo rimane puramente ipotetico se non
supportato da una seria mentalità industriale, che in Italia sembra
mancare.

mancare.
Purtroppo hai ragione, il mercato ristagna, sarei alla fame se
non fosse per l'estero... Inoltre la cultura imprenditoriale e'
davvero scarsa, un esempio e' l'incapacita' di investire e
spostare i capitali verso paesi con mano d'opera a basso costo.
Per fortuna noi non siamo ancora "mano d'opera".

 funzionalità di scripting.
Ok per lo scripting come ti hanno suggerito. Il sistema editoriale sviluppato 
(VC++) dalla ns software house è in pratica un server VBScritp, nel senso che 
per fare qualunque cosa ci deve essere uno script che lo abbia richiesto. Cosi 
otteniamo una configurabilità totale.
Molto comodo (e più semplice) anche creare oggetti COM, facilmente istanziabili 
in scripting, che siano interfacce con le funzionalità del software. 
-- 
Luc

Ho iniziato a studiarmi qualcosa, ma la documentazione MS è
scarsissima per il VC.
Inserendo lo script control nel progetto, il wizard crea delle
interfacce C++ che racchiudono la gestione del COM. Sarebbe molto
comodo poterle usare ma non ho trovato un help nè un esempio. Mi
suggerite qualche risorsa?
Luc ha scritto:


 suggerite qualche risorsa?
guarda, Microsoft documenta in modo scarso il suo Script Control, perň:
1) se cerchi con Google sicuramente trovi qualche documentazione
2) ti assicuro che basta l'intuito, sono interfacce molto semplici
3) come alternativa ci sono delle vere e proprie interfacce per lo
scripting (si tratta dell'SDK di Windows Scripting Host credo), piů
potenti e complete, ma ti assicuro che fai prima ad andare ad intuito con
lo Script Control che non a impararti il WSH ;-)
ti darň qualche indicazione per iniziare; dopo che hai inserito l'ActiveX
in VC++ dovresti avere le seguenti interfacce: CScriptControl,
CScriptError, CScriptModule, CScriptModuleCollection, CScriptProcedure,
CScriptProcedureCollection; quella principale č CScriptControl, quindi
partiamo da quella.
istanzia un oggetto CScriptControl, che come vedi deriva da CWnd (dal
momento che tutti gli ActiveX sono finestre anche questo č una finestra,
invisibile perň); dopo averlo istanziato e creato con
CScriptControl::Create, chiama SetLanguage passandogli "JavaScript" oppure
"VBScript"; fatto :-) da questo momento in poi piů eseguire script di
codice semplicemente chiamando AddCode. :-)
inoltre per "cancellare" tutto il codice che gli hai aggiunto con AddCode
chiama Reset, e per definire le interfacce da usare negli script (oggetti,
funzioni, ecc.) basta che crei l'interfaccia nella tua applicazione MFC
come un oggetto COM e glielo aggiungi con AddObject; in altre parole
l'oggetto che aggiungi con AddObject deve essere di una qualsiasi classe
derivata da CCmdTarget, e quando lo aggiungi devi chiamare
CCmdTarget::GetIDispatch.
alla fine di tutto distruggi lo script control come faresti con una
normale finestra, cioč con CWnd::Destroy e poi col distruttore della
classe.


Ok, ero arrivato allo CScriptControl e a fargli eseguire semplici
operazioni (algebriche e message box con metodo Eval() e
ExecuteStatement() ), mentre non ero riuscito a chiamare metodi del
programma.
Mi mancava il passaggio COM.
Grazie a San Goolge ci sono riuscito, in pratica facendo come dici,
cioè creando un oggetto di automazione derivato da  CCmdTarget,
definendo i metodi e chiamandoli dallo script.
Ora provo a farlo anche con CScriptControl.
Grazie.

Funge! Grazie a tutti ,anche al mio concorrente ;-)