Pages: 1 [2]   Go Down
Author Topic: Is it possible to run a .lua file, or a .jar file?  (Read 2273 times)
0 Members and 1 Guest are viewing this topic.
California
Offline Offline
Faraday Member
**
Karma: 88
Posts: 3350
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Manchester (England England)
Offline Offline
Brattain Member
*****
Karma: 597
Posts: 33292
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Brampton, Ontario
Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

"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.
Logged

Global Moderator
Offline Offline
Brattain Member
*****
Karma: 474
Posts: 18696
Lua rocks!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

California
Offline Offline
Faraday Member
**
Karma: 88
Posts: 3350
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

"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"
Logged

Brampton, Ontario
Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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...
Logged

Canada
Offline Offline
Full Member
***
Karma: 0
Posts: 246
Code Monkey
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

>.<.
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.
« Last Edit: July 27, 2012, 08:40:27 pm by The Clever Monkey » Logged

I yield() for co-routines.

Pittsburgh, PA, USA
Offline Offline
Faraday Member
**
Karma: 91
Posts: 4696
I learn a bit every time I visit the forum.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?

Logged

I find it harder to express logic in English than in Code.
Sometimes an example says more than many times as many words.

Pittsburgh, PA, USA
Offline Offline
Faraday Member
**
Karma: 91
Posts: 4696
I learn a bit every time I visit the forum.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?  smiley-twist
Logged

I find it harder to express logic in English than in Code.
Sometimes an example says more than many times as many words.

Canada
Offline Offline
Full Member
***
Karma: 0
Posts: 246
Code Monkey
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

I yield() for co-routines.

Pages: 1 [2]   Go Up
Jump to: