FC2ブログ

773mbar

2018年11月 ≪  12345678910111213141516171819202122232425262728293031 ≫ 2019年01月
TOPスポンサー広告 ≫ Intel Galileo : スケッチ内で子プロセスを動かすTOPIntel Galileo ≫ Intel Galileo : スケッチ内で子プロセスを動かす

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | Comments(-) | Trackbacks(-)

Intel Galileo : スケッチ内で子プロセスを動かす

Galileoのスケッチはプロセスだから、子プロセスも動かせるはず。
ってことは、まるで複数の loop() を同時に動かすようなスケッチも書ける。
ってことで書いてみる。

int led = 13;
unsigned int n = 0;

void setup() {
  if(fork()) {
    // 親プロセス
    pinMode(led, OUTPUT);
    while(true) loop_parent();
  } else {
    // 子プロセス
    Serial.begin(115200);
    while(true) loop_child();
  }
}

void loop() {
  // dummy
}

// 親プロセスのloop
void loop_parent() {
  digitalWrite(led, HIGH); 
  delay(1000); 
  digitalWrite(led, LOW); 
  delay(1000);
}

// 子プロセスのloop
void loop_child() {
  Serial.println(n++);
  delay(1000);
}

これで、シリアルモニタに数をカウントしつつLEDが点滅する。
やっていることはLinux(UNIX)では当たり前の事なんだけど、なんだかLinux上で普通にCで何か書くよりもArduinoのIDE上で何か書くほうがかなり「簡単」って雰囲気が感じられる。
まぁ、実際、例えば上記ソースを普通のCで書くとしたら#include <unistd.h> とか必須だし、loop_parent()等のプロトタイプ宣言も必用になる。こういった細かい事を気にしないでいいのがArduinoのプログラミングのいい点のひとつだと思う。そしてそんなお気軽・簡単でありながら、普通にLinuxのプログラミングができてしまうのだから、Linuxのプログラミングの入門としてもGalileoは良いかもしれない。
と思った。




追記:「Linuxのプログラミングの入門としてGalileoは良いかもしれない」は、あくまでもLinuxのプログラミングの学習用として、という事。CやC++の入門用としてはArduinoは向かないだろう。ArduinoのスケッチはCとしては正しくないから。ArduinoのスケッチとCやC++との違い、Arduinoのスケッチがコンパイル前にどう変換されるかという事を理解していれば、Linuxのプログラミングの学習用としてはいいんじゃないか、と思った、ということ。
スポンサーサイト
Intel Galileo | Comments(-) | Trackbacks(-)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。