aiuto da esperto Visual Basic per interagire con MAME.exe

Problemi e soluzioni su configurazioni software, firmware
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4747
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

aiuto da esperto Visual Basic per interagire con MAME.exe

Messaggio da pucci »

sto provando a recuperare da Visual Basic .Net il listxml del MAME

uso questo codice:

Dim p As New ProcessStartInfo
p.FileName = "F:\MAME.exe"
p.Arguments = " -listxml >listxml.xml"
p.WorkingDirectory = "F:\"
p.WindowStyle = ProcessWindowStyle.Normal
Dim proc As New Process
proc = Process.Start(p)
MessageBox.Show(proc.ExitCode.ToString)

il programma lancia l'eseguibile del MAME (è visibile per qualche millisecondo la finestra di comando) e poi esce con exit code = 5 (MAMERR_NO_SUCH_GAME), come se pensasse che io volevo lanciare un gioco di nome " -listxml >listxml.xml"
in effetti se provo a modificare p.Arguments = "1942" mi lancia regolarmente il gioco e ottengo exit code = 0 (MAMERR_NONE)

dove sbaglio? io non voglio lanciare un gioco, ma obbligare il MAME a creare un file nella sua directory

p.s.: qui trovate gli exit code del MAME: http://mamedev.org/source/src/emu/mame.h.html
antoniomauro

Donatore
Cab-maniaco
Cab-maniaco
Messaggi: 1646
Iscritto il: 02/08/2005, 8:40
Medaglie: 1
Città: Latina
Grazie Inviati: 6 volte
Grazie Ricevuti: 3 volte

Re: aiuto da esperto Visual Basic per interagire con MAME.ex

Messaggio da antoniomauro »

Non so perchè non legga il parametro -listxml con la redirezione dell'output ma puoi fare cosi:

Codice: Seleziona tutto

Imports System.IO
		
Dim p As Process = New Process
p.StartInfo.FileName = "F:\MAME.exe"
p.StartInfo.WorkingDirectory = "F:\"
p.StartInfo.Arguments =  "-listxml"
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.RedirectStandardError = true
p.Start
Dim output As String = p.StandardOutput.ReadToEnd
Dim outputE As String = p.StandardError.ReadToEnd
p.WaitForExit
		
if p.ExitCode.ToString <> "0" then
	MessageBox.Show(outputE & vbnewline & "exit code " & p.ExitCode.ToString)
Else
           Dim sw As new StreamWriter("F:\listxml.xml")
            sw.Write(output)
            sw.Close()
            MessageBox.Show("Fatto!")
end if
Avatar utente
IUR Dhurin

Bronze Medal Donatore
Cab-dipendente
Cab-dipendente
Messaggi: 532
Iscritto il: 27/08/2010, 16:46
Medaglie: 2
Città: Milano
Località: MILANO
Contatta:

Re: aiuto da esperto Visual Basic per interagire con MAME.ex

Messaggio da IUR Dhurin »

pucci ha scritto: p.Arguments = " -listxml >listxml.xml"
Così ad occhio mi verrebbe da chiederti:
hai provato togliendo lo spazio prima di -listxml? :?
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4747
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

Re: aiuto da esperto Visual Basic per interagire con MAME.ex

Messaggio da pucci »

IUR DHurin: ci avevo già provato senza risultato :(

antoniomauro: si vede che sai programmare! problema risolto! però mi piacere capire alcune cose (altrimenti non imparerò mai)

- tu hai usato un oggetto Process mentre io avevo usato un ProcessStartInfo: differenze?
- a cosa serve questo "p.StartInfo.UseShellExecute = False"?
- questa stringa "Dim output As String = p.StandardOutput.ReadToEnd" penso occupi un pò di memoria... non c'è modo di sbattere direttamente standard output in un XmlReader? (che è poi quello che uso io nel resto del programma)

p.s.: conosci bene il Visual Basic .NET o come tutti i programmatori windows "seri" programmi in C++ o C#? potresti darmi una mano nel progetto MAME Washer...
antoniomauro

Donatore
Cab-maniaco
Cab-maniaco
Messaggi: 1646
Iscritto il: 02/08/2005, 8:40
Medaglie: 1
Città: Latina
Grazie Inviati: 6 volte
Grazie Ricevuti: 3 volte

Re: aiuto da esperto Visual Basic per interagire con MAME.ex

Messaggio da antoniomauro »

In passato mi dilettavo di più con c/c++ (bei tempi), poi per esigenze di lavoro siamo passati da vb,vb.net,c# a progetti opensource principalmente web-oriented (php,pyton,ecc..)
Se ti serve una mano sono a disposizione!
Per le spiegazioni:
- Anche tu utilizzavi l'oggetto "process" ma avevi semplicemente dichiarato le sue proprietà di avvio (ProcessStartInfo) in maniera esterna.
Non cambia nulla....
- "p.StartInfo.UseShellExecute = False" evita l'uso della shell di sistema e consente con "p.StartInfo.RedirectStandardOutput = True" a recuperare l'output come uno StreamReader
- In effetti "p.StandardOutput.ReadToEnd" è abbastanza oneroso in termini di memoria. Potresti realizzare una lettura asincrona dell'output per migliorare la cosa (http://msdn.microsoft.com/it-it/library ... utreadline)
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4747
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

Re: aiuto da esperto Visual Basic per interagire con MAME.ex

Messaggio da pucci »

bene, vedrò di sfruttare le tue competenze!
ancora il software è in fase molto embrionale, ma appena avrò un pò di tempo lo faccio avanzare un pò e ti giro i sorgenti
antoniomauro

Donatore
Cab-maniaco
Cab-maniaco
Messaggi: 1646
Iscritto il: 02/08/2005, 8:40
Medaglie: 1
Città: Latina
Grazie Inviati: 6 volte
Grazie Ricevuti: 3 volte

Re: aiuto da esperto Visual Basic per interagire con MAME.ex

Messaggio da antoniomauro »

Adesso mi hai incuriosito! :-D
Grosso modo di cosa si tratta?
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4747
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

Re: aiuto da esperto Visual Basic per interagire con MAME.ex

Messaggio da pucci »

di un software che "dovrebbe" (tra virgolette perchè le mie capacità programmatorie sono sotto zero...) fare questa cosa qua: viewtopic.php?f=56&t=8749&start=60#p97750
antoniomauro

Donatore
Cab-maniaco
Cab-maniaco
Messaggi: 1646
Iscritto il: 02/08/2005, 8:40
Medaglie: 1
Città: Latina
Grazie Inviati: 6 volte
Grazie Ricevuti: 3 volte

Re: aiuto da esperto Visual Basic per interagire con MAME.ex

Messaggio da antoniomauro »

ahh ora ricordo!
Rispondi

Torna a “Miscellanea software”