Intercambie datos entre entornos de programación Intel Edison

, IoT- , :

1. C++ OpenCV, NodeJS Arduino. , OpenCV, C++.

2. , Arduino . OpenCV , Arduino .

3. NodeJS -, NodeJS, .



. , .

(Matthias Han) Arduino C ++ . , ++ Arduino , Linux-. , C++ . , NodeJS, C++ NodeJS.

, . . . - , . , .

«-» Linux. . , .


. – , – . . (DW) . . , , , . . . .

:



:



.

. - , . , , HIGH. - , . , . .




, Arduino NodeJS .

Arduino NodeJS:



NodeJS Arduino:



, Arduino, . NodeJS .

Arduino , , GPIO-. , Arduino №3. - , Arduino ( ), : /arduino_notification_out.txt.

Arduino HIGH №3. . №3 №1. , HIGH №3 №1.

Arduino


int notifier_pin 	= 3;
int js_subscriber_pin 	= 6;

FILE *fromarduino, *toarduino;
int i = 0;
int c;

// the setup routine runs once when you press reset:
void setup() {                
  pinMode(notifier_pin, OUTPUT); //Notification pin     
  pinMode(js_subscriber_pin, INPUT_PULLUP); //interrupt pin for reading message from JS    
  attachInterrupt(js_subscriber_pin, subscriberEvent, RISING); //Subscribe to interrupt notifications from JavaScript
  Serial.begin(9600);
}

//Read message from js notification file
void subscriberEvent() {
  
   toarduino = fopen("/js_notification_out.txt","r");  //Opening message from JS
   if (toarduino)
   {
    while ((c = getc(toarduino)) != EOF)
    {
      if(c != 10)//new line
      {
           Serial.print((char)c);
      }
    }
    Serial.println("");
    Serial.println("----------------");
    fclose(toarduino);
   }  
}

// the loop routine runs over and over again forever:
void loop() {
  if(i < 50)
  {
    i = i + 1;
  }
  else
  {
    i = 0;   
  }
  
  publishData();
  notifyWorld();  
  delay(1000);               // wait for a second
}

void publishData()
{
  fromarduino = fopen ("/arduino_notification_out.txt", "w+");
  fprintf(fromarduino, "[%d]", i);
  fclose(fromarduino);  
}

//Nofity any body connected to this interrupt  (C++ program and NodeJS) program
void notifyWorld()
{
    digitalWrite(notifier_pin, HIGH);
    delay(200);
    digitalWrite(notifier_pin, LOW);
}

NodeJS №1. , HIGH, Arduino. NodeJS - . « Arduino NodeJS».

NodeJS


var mraa = require("mraa");
var fs = require('fs');


/**********Read notification from arduino*************/
var subscriber_pin = new mraa.Gpio(1);
    subscriber_pin.dir(mraa.DIR_IN);
    subscriber_pin.isr(mraa.EDGE_RISING, subscriberEvent); //Subscribe to interrupt notifications from Arduino
    
function subscriberEvent() {
    var contents = fs.readFileSync('/arduino_notification_out.txt').toString();
    console.log("Message from Arduino:" + contents);        
}

/********** Trigger message sending interrupt every 20 seconds *************/
var counter = 0;
var notifier_pin = new mraa.Gpio(5);
notifier_pin.dir(mraa.DIR_OUT);

setInterval(function(){
    counter++;
        fs.writeFileSync("/js_notification_out.txt", "NodeJS: [" + counter + "]\n");
        notifyWorld();
        counter = 0;
},20000);


function notifyWorld()
{
    notifier_pin.write(1);
    setTimeout(function(){
        notifier_pin.write(0);
    },200);
}

NodeJS Arduino. « NodeJS Arduino».

, .


, C++ NodeJS. .


, . GPIO-. , GPIO-. , , GPIO. , JSON- , eventsource, event data .. , . .

Source: https://habr.com/ru/post/es383727/


All Articles