Domanda

Per un po 'di contesto, sono nel processo di sviluppo di un gioco serio (~ simulazione partecipativa) con Netlogo utilizzando Hubnet. Mi piacerebbe collegare dinamicamente Netlogo con un modello esterno in modo che i giocatori siano in grado di: 1) Eseguire un programma esterno (cioè un modello) dalla loro interfaccia client Hubnet, specificando i parametri come ingressi e 2) Avere accesso ai risultati di simulazione (cioè le uscite del modello di lettura come file esterni).

Ho trovato quel post: https://groups.yahoo.com/neo/groups/netlogo -Sers / conversazioni / argomenti / 8145

Così ho scaricato / installato le estensioni della shell con Netlogo 5.0.5 (Mac OSX 10.7.5) e ha iniziato a giocare con esso.

Le cose buone, sono in grado di eseguire:

Observer> Shell: CD "Path"

Observer> Shell: PWD

Observer> Shell: Exec "LS" (e tutti i comandi che non hanno bisogno di parametri di input come shell: exc "cal ", shell: Exec "DF" ...).

Ora le cose cattive ...

1) Io sono costantemente mancato di avviare un'applicazione casuale utilizzando questi comandi: Observer> Shell: Exec "safari.app" o Observer> Shell: Exec "Safari" (-> ERRORE)

La mia directory di lavoro è corretta e safari (o altre app che sto cercando di avviare) è in realtà presente ma Netlogo restituisce il seguente errore:

Exception Exception: impossibile eseguire il programma "Safari" (nella directory "/ applicazioni"): errore= 2, nessun file o directory di questo tipo Errore durante l'osservatore che esegue Shell: Exec Chiamato da Comando Center

2) Sto anche lottando per eseguire comandi di shell assumere parametri (ad esempio, shell: Exec "Apri" "Parametro 1" "Parametro 2" ...). Non riesco a trovare la sintassi corretta in modo che Netlogo non riconosca i parametri di input che sto tentando di passare al comando.

Ho un'esperienza molto limitata in Unix e io sono un principiante relativo con Netlogo, quindi devo mancare qualcosa da qualche parte.

Se qualcuno potrebbe aiutarmi attraverso questo, sarebbe molto apprezzato!

Grazie mille!

clément

È stato utile?

Soluzione

è OS X, è necessario utilizzare open per aprire i file .app.Come hai notato, devi separare gli argomenti per il programma.Quindi

(shell:exec "open" "/Applications/Safari.app")

dovrebbe fare ciò che vuoi.

Ecco un esempio di un eseguibile effettivo con più argomenti:

(shell:exec "ls" "-l" "-t")

Infine, nota che shell:exec è un reporter.Restituisce l'output del programma come una stringa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top