简体   繁体   中英

Writing and saving python script to arduino yun RAM

I'm trying to save a python script to the onboard linino RAM, but I can't quite get it to work. Am I writing the python script file correctly? Can anyone view my code and tell me where I'm erring? I basically modified code from an example on the arduino site to try to make this work. I just want to write/save to the linino and then print out the output from the serial port. Thanks in advance!

#include <FileIO.h>

void setup() {
// Setup Bridge (needed every time we communicate with the Arduino Yún)
Bridge.begin();
// Initialize the Serial
Serial.begin(9600);

while(!Serial);  // wait for Serial port to connect.
Serial.println("File Write Script example\n\n");

// Setup File IO
FileSystem.begin();

// Upload script used to gain network statistics  
uploadScript();
}  

void loop() 
{
// Run stats script every 5 secs.
runScript();
Serial.println("Just ran script");
delay(5000);
}

// this function creates a file into the linux processor
void uploadScript() 
{
// Write our shell script in /tmp
// Using /tmp stores the script in RAM this way we can preserve 
// the limited amount of FLASH erase/write cycles
File script = FileSystem.open("/tmp/example.py", FILE_WRITE);
script.print("#!/usr/bin/python");
script.print("import urllib2");
script.print("import ast");
script.print("r = urllib2.urlopen('https://python.org')");
script.print("a = r.read()");
//script.print("y = ast.literal_eval(a)");
script.print("print a[:100]"); //i want to index something in the dictionary
script.close();  // close the file

// Make the script executable
Process chmod;
chmod.begin("chmod");      // chmod: change mode
chmod.addParameter("+x");  // x stays for executable
chmod.addParameter("/tmp/example.py");  // path to the file to make it executable
chmod.run();
}


// this function run the script and read the output data
void runScript() 
{
// Run the script and show results on the Serial
Process myscript;
myscript.begin("/tmp/example.py");
myscript.run();

String output = "";

// read the output of the script
while (myscript.available()) 
{
  output += (char)myscript.read();
}
// remove the blank spaces at the beginning and the ending of the string
output.trim();
Serial.println(output);
Serial.println("just rand"); //for debugging
Serial.flush();
}

As I was much more of a noob when I first approached this problem about a year ago, it is clearly much easier to SSH into the Arduino and writing the script in vi and saving the the linux side of the yun. I've had no problem doing this and getting the script to run well. Don't bother trying to write a script to linux in the arduino sketch! Cheers.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM