Go Down

Topic: Is it possible to run a .lua file, or a .jar file? (Read 2909 times) previous topic - next topic

Arrch


What should be done on the Arduino team's part is to create a function that can interact with your computer (as simple as os.execute(), or system() (in C), instead of inefficiently having to do it through other programming languages.


That's a feature of the operating system, not the Arduino; the OS doesn't give serial devices access to the API to launch programs.

Grumpy_Mike

You can do this directly with a leonardo, it can be made to look like a keyboard and so can type commands directly into your computer to run anything you want.

nate890

"That's a feature of the operating system, not the Arduino; the OS doesn't give serial devices access to the API to launch programs."

That's why I'd launch it through a .lua file with the code that I showed using os.execute from the arduinio... Technically I want something to trigger the .lua file to make it execute.

Nick Gammon


For instance, if Arduino was able to create a file ...


On which disk drive? You send me a photo of the disk drive attached to your Arduino, and I'll tell you how to create a file on it. Deal?
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

Arrch


"That's a feature of the operating system, not the Arduino; the OS doesn't give serial devices access to the API to launch programs."

That's why I'd launch it through a .lua file with the code that I showed using os.execute from the arduinio... Technically I want something to trigger the .lua file to make it execute.


Launching a script requires the same API call as launching a program, so there is still the issue of serial devices not being able to launch "stuff"

nate890

@Nick, thanks for the offer, but I think I almost have it... :)

So far I can send serial data using a library I found (for Lua) but I can't seem to read serial data sent from the arduino...

The Clever Monkey

#21
Jul 28, 2012, 03:34 am Last Edit: Jul 28, 2012, 03:40 am by The Clever Monkey Reason: 1

>.<.
Let's say there is a .Lua file, named open.lua, with the following code:
os.execute([[start "" "C:\\Users\\User\\Documents\\Song.mp3"]])
When that code is ran, a .mp3 file, named "Song" will play.


Sure, just write some Lua that talks to the Arduino over a serial port. When it gets a message it likes, it invokes this command. Of course, this is really a round-about way of starting your OS and install specific handler for the .mp3 filetype. You could just as easily have a Perl script do this; or a .bat file; or a C program.

Lua can do this just as easily as any other language.

Quote

And this is why I was asking if it was possible to RUN A .LUA FILE from ARDUINO, not make a .Lua file detect when I want code to run (which would be super hacky, and it being Lua, I don't even think this would be possible (what above suggested)) Which is why "Write a Lua app that listens on a connection. When it gets something, it gets that something, parses it in some manner and then acts on the stuff it parses out." is more easily said than done.


Nonsense. Lua is complete language that has all sorts of libraries and OS specific hooks for all sorts of purposes like this. And if it can't do it, it can call a chunk of C code to do it.

However, to reinforce the same answer everyone else has given you: no, you cannot run a Lua app "from" the Arduino. Mostly because the question doesn't really apply. But you /can/ have the Arduino talk to an agent on any computer you like, and that agent can pretty much do anything you can dream up, including running a Lua script. The agent can even be written in Lua.

The Arduino can be coded to transmit over a variety of connections, from the built-in USB serial port to more complicated ethernet, Wi-Fi or other wireless options if you buy the hardware.

But the fundamentals are the same: you write an app that sends (or receives -- the concept is the same) over the connection of your choice. Assuming you want to use the USB port, there are easy libraries and examples showing how to do this on arduino.cc. Just get it working with the built-in serial monitor available in the Arduino IDE first.

Then you can work on writing an app that listens (or alternately listens and talks) on the other end of that connection. Based on the messages it receives on that connection, it plays a song or whatever. A "message" is whatever you want it to be. A string you reconstruct. A byte pattern you apply masks to that encode all sorts of state. The actual steps for doing this is left as an exercise for the reader. My advice is to solve the problem in discrete steps.

Synchronous serial communication is not hard, but the devil is in the details. And there are countless examples out there.
I yield() for co-routines.

GoForSmoke


I've tried gobetwino, doesn't work with windows 7..

Also, I saw a tutorial on youtube by Jeremy Blum about serial communication, and he did it using the language processor, and he said that you can interact with your computer from arduino using any programming language... Now, that being said it should be possible with Lua, so how can this be done with Lua?


The way that quote is written, you put the Lua code on the PC and have it communicate with your Arduino program. If you have any doubt, ask him.

Or you write a maybe-limited Lua interpreter for the Arduino which may or may not not be possible and still what will you code the PC end in?

Nick Gammon on multitasking Arduinos:
1) http://gammon.com.au/blink
2) http://gammon.com.au/serial
3) http://gammon.com.au/interrupts

GoForSmoke



For instance, if Arduino was able to create a file ...


On which disk drive? You send me a photo of the disk drive attached to your Arduino, and I'll tell you how to create a file on it. Deal?


Does SD count as a drive?  ]:D
Nick Gammon on multitasking Arduinos:
1) http://gammon.com.au/blink
2) http://gammon.com.au/serial
3) http://gammon.com.au/interrupts

The Clever Monkey



I've tried gobetwino, doesn't work with windows 7..

Also, I saw a tutorial on youtube by Jeremy Blum about serial communication, and he did it using the language processor, and he said that you can interact with your computer from arduino using any programming language... Now, that being said it should be possible with Lua, so how can this be done with Lua?


The way that quote is written, you put the Lua code on the PC and have it communicate with your Arduino program. If you have any doubt, ask him.

Or you write a maybe-limited Lua interpreter for the Arduino which may or may not not be possible and still what will you code the PC end in?




There is an embedded Lua project, but it needs way more horsepower than any Arduino can provide.
I yield() for co-routines.

Go Up