{"cmd": "help", "id": "34", "params":["--list"]}
{"cmd": "help", "id": "34", "reply": "help ping ledon ledoff"}
#include "babbler_json.h"
babbler_serial_set_input_handler(handle_input_json);
babbler_serial_set_input_handler(handle_input_simple);
#include "babbler.h" #include "babbler_cmd_core.h" #include "babbler_simple.h" #include "babbler_json.h" #include "babbler_serial.h" // #define SERIAL_READ_BUFFER_SIZE 128 #define SERIAL_WRITE_BUFFER_SIZE 512 // . // +1 char serial_read_buffer[SERIAL_READ_BUFFER_SIZE+1]; char serial_write_buffer[SERIAL_WRITE_BUFFER_SIZE]; #define LED_PIN 13 /** ledon ( ) */ int cmd_ledon(char* reply_buffer, int reply_buf_size, int argc=0, char *argv[]=NULL) { digitalWrite(LED_PIN, HIGH); // strcpy(reply_buffer, REPLY_OK); return strlen(reply_buffer); } /** ledoff ( ) */ int cmd_ledoff(char* reply_buffer, int reply_buf_size, int argc=0, char *argv[]=NULL) { digitalWrite(LED_PIN, LOW); // strcpy(reply_buffer, REPLY_OK); return strlen(reply_buffer); } babbler_cmd_t CMD_LEDON = { /* */ "ledon", /* */ &cmd_ledon }; babbler_man_t MAN_LEDON = { /* */ "ledon", /* */ "turn led ON", /* */ "SYNOPSIS\n" " ledon\n" "DESCRIPTION\n" "Turn led ON." }; babbler_cmd_t CMD_LEDOFF = { /* */ "ledoff", /* */ &cmd_ledoff }; babbler_man_t MAN_LEDOFF = { /* */ "ledoff", /* */ "turn led OFF", /* */ "SYNOPSIS\n" " ledoff\n" "DESCRIPTION\n" "Turn led OFF." }; /** */ extern const babbler_cmd_t BABBLER_COMMANDS[] = { // babbler_cmd_core.h CMD_HELP, CMD_PING, // CMD_LEDON, CMD_LEDOFF }; /** */ extern const int BABBLER_COMMANDS_COUNT = sizeof(BABBLER_COMMANDS)/sizeof(babbler_cmd_t); /** */ extern const babbler_man_t BABBLER_MANUALS[] = { // babbler_cmd_core.h // commands from babbler_cmd.core.h MAN_HELP, MAN_PING, // // custom commands MAN_LEDON, MAN_LEDOFF }; /** */ extern const int BABBLER_MANUALS_COUNT = sizeof(BABBLER_MANUALS)/sizeof(babbler_man_t); void setup() { Serial.begin(9600); Serial.println("Starting babbler-powered device with JSON i/o," " type {\"cmd\": \"help\", \"id\": \"34\", \"params\":[]} for list of commands"); // // {"cmd": "help", "id": "34", "params":[]} babbler_serial_set_packet_filter(packet_filter_newline); babbler_serial_set_input_handler(handle_input_json); //babbler_serial_setup( // serial_read_buffer, SERIAL_READ_BUFFER_SIZE, // serial_write_buffer, SERIAL_WRITE_BUFFER_SIZE, // 9600); babbler_serial_setup( serial_read_buffer, SERIAL_READ_BUFFER_SIZE, serial_write_buffer, SERIAL_WRITE_BUFFER_SIZE, BABBLER_SERIAL_SKIP_PORT_INIT); pinMode(LED_PIN, OUTPUT); } void loop() { // , babbler_serial_tasks(); }
{"cmd": "help", "id": "34", "params":["--list"]}
{"cmd": "help", "id": "34", "reply": "help ping ledon ledoff"}
npm install babbler-js
git clone https://github.com/1i7/babbler-js-demo.git cd babbler-js-demo/babbler-basic npm install
var BabblerDevice = require('babbler-js'); var babbler = new BabblerDevice(); babbler.on('connected', function() { console.log("connected"); console.log("send cmd: ping"); babbler.sendCmd("ping", [], // onReply function(cmd, params, reply) { console.log("got reply on '" + cmd + " " + params + "': " + reply); }, // onError function(cmd, params, err) { console.log("fail with '" + cmd + " " + params + "': " + err); } ); console.log("send cmd: help --list"); babbler.sendCmd("help", ["--list"], // onReply function(cmd, params, reply) { console.log("got reply on '" + cmd + " " + params + "': " + reply); }, // onError function(cmd, params, err) { console.log("fail with '" + cmd + " " + params + "': " + err); } ); }); babbler.on('disconnected', function(error) { console.log("disconnected" + (error != undefined ? ": " + error : "")); }); babbler.connect("/dev/ttyUSB0"); //babbler.connect("/dev/ttyUSB0", {baudRate: 9600});
node babbler-basic.js
connected send cmd: ping send cmd: help --list got reply on 'ping ': ok got reply on 'help --list': help ping ledon ledoff
disconnected: Device unplugged
var BabblerDevice = require('babbler-js'); var babbler = new BabblerDevice(); var blinkIntervalId; babbler.on('connected', function() { console.log("connected"); // 2 var ledstatus = "off"; blinkIntervalId = setInterval(function() { if(ledstatus === "on") { console.log("send cmd: ledoff"); babbler.sendCmd("ledoff", [], // onReply function(cmd, params, reply) { console.log("got reply on '" + cmd + " " + params + "': " + reply); ledstatus = "off"; }, // onError function(cmd, params, err) { console.log("fail with '" + cmd + " " + params + "': " + err); } ); } else { // ledstatus === "off" console.log("send cmd: ledon"); babbler.sendCmd("ledon", [], // onReply function(cmd, params, reply) { console.log("got reply on '" + cmd + " " + params + "': " + reply); ledstatus = "on"; }, // onError function(cmd, params, err) { console.log("fail with '" + cmd + " " + params + "': " + err); } ); } }, 3000); }); babbler.on('connecting', function() { console.log("connecting..."); }); babbler.on('disconnected', function(error) { console.log("disconnected" + (error != undefined ? ": " + error : "")); // , clearInterval(blinkIntervalId); // 3 setTimeout(function() { babbler.connect("/dev/ttyUSB0"); }, 3000); }); babbler.connect("/dev/ttyUSB0"); //babbler.connect("/dev/ttyUSB0", {baudRate: 9600});
node babbler-basic-blink.js
connecting... connected send cmd: ledon got reply on 'ledon ': ok send cmd: ledoff got reply on 'ledoff ': ok send cmd: ledon got reply on 'ledon ': ok send cmd: ledoff got reply on 'ledoff ': ok send cmd: ledon got reply on 'ledon ': ok disconnected: Device unplugged connecting... disconnected: Error: Error: No such file or directory, cannot open /dev/ttyUSB0 connecting... disconnected: Error: Error: No such file or directory, cannot open /dev/ttyUSB0 connecting... connected send cmd: ledon got reply on 'ledon ': ok send cmd: ledoff got reply on 'ledoff ': ok send cmd: ledon got reply on 'ledon ': ok disconnected: Device unplugged
Source: https://habr.com/ru/post/315480/
All Articles