英特尔Galileo和Python - 界面

时间:2015-01-19 22:51:40

标签: python interface arduino intel-galileo

我正在使用英特尔Galileo平台开发园艺系统。我将本地传感器数据与openweathermaps的预测结合使用。为了显示结果,我使用Paraimpu在必要时发推文。到现在为止还挺好。我现在正在寻找一种让我的系统对包含触发词的传入推文作出反应的方法。我设法使用Twython编写一个python脚本来检查这个触发器字。如果有新的推文(在最后一分钟内),python脚本返回1,如果不是0.

[...]
if timedelta<triggertime: 
    erg = 1 #Neuer Tweet vorhanden
else: 
    erg = 0 #Kein neuer Tweet vorhanden
print erg

在这里我被困住了:当我调用python脚本本身时,它运行得很好。但是当在arduino代码中使用系统函数时,我没有得到数字,只是一些奇怪的格式化的东西,如:|cßBð¿ 这就是我在arduino代码中调用系统函数的方式:

char* checkTweets() {
  char result[1];
  system("python /media/realroot/Files/tweetcheck.py > /media/realroot/result.txt");
  FILE *tempFile;
  tempFile = fopen("result.txt", "r");
  fgets(result, 1, tempFile);
  fclose(tempFile);
  return (result);
}

我在Arduino / Python界面上不是很有经验。谢谢你的任何建议!

1 个答案:

答案 0 :(得分:1)

我的代码与我的Galileo与Python的接口非常相似,我注意到可能导致错误的两个差异:

当我进行系统调用时,我将其保存为文件,而不是文本文件:

system("python /media/realroot/Files/tweetcheck.py > /media/realroot/result");

也许将它保存为文本文件是导致奇数输出的原因?

或者,错误在于读取文件。当我这样做时,我使用了SD Arduino库,它需要程序顶部的#include <SD.h>并读取文件:

File myfile = SD.open("result");
// read from file until we hit the a newline
while (myfile.peek() != '\n') {
  result = myfile.parseInt();
}
result.close();
system("rm /media/realroot/result");