If you hit something annoying like that (preRun is not called, or arguments
are ignored, or your main() is not called), the best thing is to reduce
this to as simple a standalone testcase as possible. Often in my experience
the problem shows itself while doing the reduction (might be a typo
somewhere, for example), but if it does not, then the standalone testcase
is easy for us to run and investigate in order to help you.

On Mon, Jul 13, 2015 at 6:51 AM, Bryan Duggan <[email protected]> wrote:

> Really sorry
>
> I read that and I dont understand your answer at all...
>
> Here is what I want to do:
>
> Create a file (this should be in preRun?)
> Execute abc2midi - I want this to be triggered not run when the page loads
> Get the generated midi file (this should be in postRun?)
>
> Can emscriptren be made to do this? Are there any simple examples of how
> to set this up?
>
> WRT To your answer. I am not generating HTML, just JavaScript. Here is my
> full HTML page:
>
> <html>
> <head>
> <script src = "abc2midi.js"></script>
> </head>
> <body>
> <script>
> var abcContents = "X:1\nT:Jimmy Ward's Jig\nR:jig\nD:Matt Molloy: Heathery
> Breeze\nZ:id:hn-jig-103\nM:6/8\nK:G\n~G3 GAB|AGE GED|~G3 AGE|GED DEF|~G3
> GAB|AGE GAB|cBA BGE|1 DED DEF:|2 DED D2B||\n|:cBA BAG|~A3 AGE|BcA BGE|EDE
> GAB|c2c BAG|ABA ABc|dcA AGE|1 GED D2B:|2 GED DEF||\n\n"
> var argv = [ "in.abc", "1", "-o", "out.mid"];
>
> var Module = {
>    "arguments": argv,
>    "print": function(text){
>     console.log('print');
> console.log(text)
>   },
>   "printErr": function(text){
> console.log(text)
>   },
>   "preRun" : function(){
> console.log('prerun');
> FS.createDataFile("/", "in.abc", abcContents, true, true);
>   },
>   "setStatus": function(text){
>     console.log('setStatus');
> console.log(text)
> },
>   "noInitialRun": true,
> };
> run(); // This does not run abc2midi though preRun gets called
> </script>
> </body>
> </html>`
>
> And here is how I am compiling:
>
> emcc genmidi.c midifile.c parseabc.c parser2.c queues.c store.c -o
> abc2midi.js -s EXPORTED_FUNCTIONS="['_main', '_abc2midi']"
>
> Im at a loss as to what to try next
>
> Bryan
>
>
> On Monday, 13 July 2015 13:23:39 UTC+1, chronotext wrote:
>>
>> It looks like you work with Module as if you were still in Node mode.
>>
>> But when working in HTML mode, Module has already been defined, as
>> explained here:
>>
>>
>> https://kripken.github.io/emscripten-site/docs/api_reference/module.html#creating-the-module-object
>>
>> On Monday, July 13, 2015 at 2:41:55 PM UTC+3, Bryan Duggan wrote:
>>>
>>> Thanks
>>>
>>> Here is my problem though. If I compile like this:
>>>
>>> emcc genmidi.c midifile.c parseabc.c parser2.c queues.c store.c -o
>>> abc2midi.js -s EXPORTED_FUNCTIONS="['_main', '_abc2midi']"
>>>
>>> Even if I set noInitialRun: true in Module like this:
>>>
>>> var argv = [ "in.abc", "1", "-o", "out.mid"];
>>> var Module = {
>>>    arguments: argv,
>>>    print: function(text){
>>>     console.log('print');
>>> console.log(text)
>>>   },
>>>   printErr: function(text){
>>> console.log(text)
>>>   },
>>>   preRun : function(){
>>> console.log('prerun');
>>> FS.createDataFile("/", "in.abc", abcContents, true, true);
>>>   },
>>>   noInitialRun: true,
>>> };
>>>
>>> The C program runs, but does not take the command line arguments!! I can
>>> see the output on the Javascript console. Also preRun is never called
>>>
>>> If I compile like this:
>>>
>>> emcc genmidi.c midifile.c parseabc.c parser2.c queues.c store.c -o
>>> abc2midi.js -s EXPORTED_FUNCTIONS="['_main', '_abc2midi']" -s INVOKE_RUN=0
>>>
>>> And try this in my HTML page:
>>>
>>> var argv = [ "in.abc", "1", "-o", "out.mid"];
>>>
>>> var Module = {
>>>    arguments: argv,
>>>    print: function(text){
>>>     console.log('print');
>>> console.log(text)
>>>   },
>>>   printErr: function(text){
>>> console.log(text)
>>>   },
>>>   preRun : function(){
>>> console.log('prerun');
>>> FS.createDataFile("/", "in.abc", abcContents, true, true);
>>>   },
>>>   noInitialRun: false, // Makes no difference
>>> };
>>> run();
>>>
>>> preRun gets called but the C program doesnt run
>>>
>>> Whats going on!?
>>>
>>> Bryan
>>>
>>>
>>>
>>> On Monday, 13 July 2015 10:52:54 UTC+1, chronotext wrote:
>>>>
>>>> Hi there,
>>>>
>>>> I think Module.arguments is what you're looking for:
>>>>
>>>>
>>>> https://kripken.github.io/emscripten-site/docs/api_reference/module.html#affecting-execution
>>>>
>>>> HTH,
>>>> Ariel
>>>>
>>>> On Monday, July 13, 2015 at 2:07:13 AM UTC+3, Bryan Duggan wrote:
>>>>>
>>>>> Hey
>>>>>
>>>>> I presume this is standard enough usage for emscripten, but I cant
>>>>> figure out how to do it. I am trying to port a command line C program
>>>>> called abc2midi to emscripten.
>>>>>
>>>>> Everything compiles fine and I can get both the javascript to generate
>>>>> and run in node and the HTML to generate and run in the browser.
>>>>>
>>>>> Now I want to do the following:
>>>>>
>>>>> 1 Write a text file to the virtual file system. This is how Im doing
>>>>> it:
>>>>>
>>>>> var Module = {
>>>>>   'print': function(text){
>>>>> console.log(text)
>>>>>   },
>>>>>   'printErr': function(text){
>>>>> console.log(text)
>>>>>   },
>>>>>   'preRun' : function(){
>>>>> console.log('prerun');
>>>>> //FS is not defined
>>>>> FS.createDataFile("/", "in.abc", abcContents, true, true);  },
>>>>>   'noInitialRun': true,
>>>>> };
>>>>>
>>>>> 2. Call the main method and pass in some command line arguments
>>>>> including the file name. I cant find an example of how to do this and
>>>>> everything Ive tried has not worked
>>>>>
>>>>> 3. Read back the generated file from the file system
>>>>>
>>>>> Surprisingly hard to find an example of this pretty straightforward
>>>>> scenario! Any help would be much appreciated
>>>>>
>>>>> Bryan
>>>>>
>>>>  --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to