Skip to content

Instantly share code, notes, and snippets.

@gopalakrishnan-subramani
Last active October 4, 2018 19:28
Show Gist options
  • Save gopalakrishnan-subramani/fef7db9ac6a9907268645a7fb4b8a5df to your computer and use it in GitHub Desktop.
Save gopalakrishnan-subramani/fef7db9ac6a9907268645a7fb4b8a5df to your computer and use it in GitHub Desktop.
ESP32
load('api_timer.js');
load('api_uart.js');
load('api_sys.js');
load('api_gpio.js');
let receiveBuffer = {
rxAcc: ''
};
let serialPortConfig = {
uartNo: 2,
controlPin: 23,
config: {
baudRate: 9600,
esp32: {
gpio: {
rx: 16,
tx: 17
}
}
}
};
let SerialPort2 = {
init: function(serialPortConfig) {
this.serialPortConfig = serialPortConfig;
UART.setConfig(serialPortConfig.uartNo, serialPortConfig.config);
GPIO.set_mode(serialPortConfig.controlPin, GPIO.MODE_OUTPUT);
UART.setDispatcher(serialPortConfig.uartNo, function(uartNo) {
let ra = UART.readAvail(uartNo);
if (ra > 0) {
// Received new data: print it immediately to the console, and also
// accumulate in the "rxAcc" variable which will be echoed back to UART later
let data = UART.read(uartNo);
print('Received UART data:', data);
//rxAcc += data;
receiveBuffer.rxAcc += data;
}
}, null);
// Enable Rx
UART.setRxEnabled(serialPortConfig.uartNo, true);
},
write: function(data) {
GPIO.write(this.serialPortConfig.controlPin, 1);
UART.write(
this.serialPortConfig.uartNo,
data
);
UART.flush(this.serialPortConfig.uartNo);
GPIO.write(this.serialPortConfig.controlPin, 0);
//rxAcc = '';
receiveBuffer.rxAcc = '';
}
};
SerialPort2.init(serialPortConfig);
// Send UART data every second
Timer.set(2000 /* milliseconds */, Timer.REPEAT, function() {
SerialPort2.write( 'Hello UART! '
+ ' uptime: ' + JSON.stringify(Sys.uptime())
+ ' RAM: ' + JSON.stringify(Sys.free_ram())
+ (receiveBuffer.rxAcc.length > 0 ? (' Rx: ' + receiveBuffer.rxAcc) : '')
+ '\n');
}, null);
load('api_timer.js');
load('api_uart.js');
load('api_sys.js');
load('api_gpio.js');
let receiveBuffer = {
rxAcc: ''
};
let serialPortConfig = {
uartNo: 2,
controlPin: 23,
config: {
baudRate: 9600,
esp32: {
gpio: {
rx: 16,
tx: 17
}
}
}
};
function init(serialPortConfig) {
UART.setConfig(serialPortConfig.uartNo, serialPortConfig.config);
GPIO.set_mode(serialPortConfig.controlPin, GPIO.MODE_OUTPUT);
UART.setDispatcher(serialPortConfig.uartNo, function(uartNo) {
let ra = UART.readAvail(uartNo);
if (ra > 0) {
// Received new data: print it immediately to the console, and also
// accumulate in the "rxAcc" variable which will be echoed back to UART later
let data = UART.read(uartNo);
print('Received UART data:', data);
//rxAcc += data;
receiveBuffer.rxAcc += data;
}
}, null);
// Enable Rx
UART.setRxEnabled(serialPortConfig.uartNo, true);
}
function write(serialPortConfig, data) {
GPIO.write(serialPortConfig.controlPin, 1);
UART.write(
serialPortConfig.uartNo,
data
);
UART.flush(serialPortConfig.uartNo);
GPIO.write(serialPortConfig.controlPin, 0);
//rxAcc = '';
receiveBuffer.rxAcc = '';
}
init(serialPortConfig);
// Send UART data every second
Timer.set(2000 /* milliseconds */, Timer.REPEAT, function() {
write(serialPortConfig, 'Hello UART! '
+ ' uptime: ' + JSON.stringify(Sys.uptime())
+ ' RAM: ' + JSON.stringify(Sys.free_ram())
+ (receiveBuffer.rxAcc.length > 0 ? (' Rx: ' + receiveBuffer.rxAcc) : '')
+ '\n');
}, null);
load('api_timer.js');
load('api_uart.js');
load('api_sys.js');
load('api_gpio.js');
let serialPortConfig = {
uartNo: 2,
controlPin: 23,
config: {
baudRate: 9600,
esp32: {
gpio: {
rx: 16,
tx: 17
}
}
},
receiveBuffer: {
rxAcc: ''
}
};
let SerialPort2 = {
init: function(serialPortConfig) {
this.serialPortConfig = serialPortConfig;
},
begin: function() {
let that = this;
UART.setConfig(this.serialPortConfig.uartNo, this.serialPortConfig.config);
GPIO.set_mode(this.serialPortConfig.controlPin, GPIO.MODE_OUTPUT);
UART.setDispatcher(this.serialPortConfig.uartNo, function(uartNo) {
let ra = UART.readAvail(uartNo);
if (ra > 0) {
// Received new data: print it immediately to the console, and also
// accumulate in the "rxAcc" variable which will be echoed back to UART later
let data = UART.read(uartNo);
print('Received UART data:', data);
//rxAcc += data;
that.serialPortConfig.receiveBuffer.rxAcc += data;
}
}, null);
// Enable Rx
UART.setRxEnabled(this.serialPortConfig.uartNo, true);
},
write: function(data) {
GPIO.write(this.serialPortConfig.controlPin, 1);
UART.write(
this.serialPortConfig.uartNo,
data
);
UART.flush(this.serialPortConfig.uartNo);
GPIO.write(this.serialPortConfig.controlPin, 0);
//rxAcc = '';
this.serialPortConfig.receiveBuffer.rxAcc = '';
}
};
SerialPort2.init(serialPortConfig);
SerialPort2.begin();
// Send UART data every second
Timer.set(2000 /* milliseconds */, Timer.REPEAT, function() {
SerialPort2.write( 'Hello UART! '
+ ' uptime: ' + JSON.stringify(Sys.uptime())
+ ' RAM: ' + JSON.stringify(Sys.free_ram())
+ (serialPortConfig.receiveBuffer.rxAcc.length > 0 ? (' Rx: ' + serialPortConfig.receiveBuffer.rxAcc) : '')
+ '\n');
}, null);
/// refactored, not perfect though
load('api_timer.js');
load('api_uart.js');
load('api_sys.js');
load('api_gpio.js');
let uartNo = 2; // Uart number used for this example
let rxAcc = ''; // Accumulated Rx data, will be echoed back to Tx
let value = false;
let control = 23;
let uNo = 2;
let serial2Config = {
baudRate: 9600,
esp32: {
gpio: {
rx: 16,
tx: 17
}
}
};
let receiveBuffer = {
rxAcc: ''
};
function init(uartNo, config, controlPin) {
UART.setConfig(uartNo, config);
GPIO.set_mode(controlPin, GPIO.MODE_OUTPUT);
UART.setDispatcher(uartNo, function(uartNo) {
let ra = UART.readAvail(uartNo);
if (ra > 0) {
// Received new data: print it immediately to the console, and also
// accumulate in the "rxAcc" variable which will be echoed back to UART later
let data = UART.read(uartNo);
print('Received UART data:', data);
//rxAcc += data;
receiveBuffer.rxAcc += data;
}
}, null);
// Enable Rx
UART.setRxEnabled(uartNo, true);
}
function write(uartNo, control, data) {
GPIO.write(control, 1);
UART.write(
uartNo,
data
);
UART.flush(uartNo);
GPIO.write(control, 0);
//rxAcc = '';
receiveBuffer.rxAcc = '';
}
init(2, serial2Config, 23);
// Send UART data every second
Timer.set(2000 /* milliseconds */, Timer.REPEAT, function() {
value = !value;
write(uartNo, control, 'Hello UART! '
+ (value ? 'Tick' : 'Tock')
+ ' uptime: ' + JSON.stringify(Sys.uptime())
+ ' RAM: ' + JSON.stringify(Sys.free_ram())
+ (receiveBuffer.rxAcc.length > 0 ? (' Rx: ' + receiveBuffer.rxAcc) : '')
+ '\n');
}, null);
load('api_timer.js');
load('api_uart.js');
load('api_sys.js');
load('api_gpio.js');
let uartNo = 2; // Uart number used for this example
let rxAcc = ''; // Accumulated Rx data, will be echoed back to Tx
let value = false;
let control = 23;
let uNo = 2;
let serial2Config = {
baudRate: 9600,
esp32: {
gpio: {
rx: 16,
tx: 17
}
}
};
function enableControlPin() {
GPIO.set_mode(control, GPIO.MODE_OUTPUT);
}
function init(uNo, config, controlPin) {
UART.setConfig(uNo, config);
GPIO.set_mode(controlPin, GPIO.MODE_OUTPUT);
UART.setDispatcher(uNo, function(uartNo) {
let ra = UART.readAvail(uartNo);
if (ra > 0) {
// Received new data: print it immediately to the console, and also
// accumulate in the "rxAcc" variable which will be echoed back to UART later
let data = UART.read(uartNo);
print('Received UART data:', data);
rxAcc += data;
}
}, null);
// Enable Rx
UART.setRxEnabled(uNo, true);
}
function write(uNo, control, data) {
GPIO.write(control, 1);
UART.write(
uNo,
data
);
UART.flush(uNo)
GPIO.write(control, 0);
rxAcc = '';
}
//test();
// Configure UART at 115200 baud
// UART.setConfig(uartNo, {
// baudRate: 9600,
// esp32: {
// gpio: {
// rx: 16,
// tx: 17
// }
// }
// });
//UART.setConfig(uartNo, config);
init(2, serial2Config, 23);
//enableControlPin();
// //GPIO.set_mode(control, GPIO.MODE_OUTPUT);
//GPIO.set_mode(control, GPIO.MODE_OUTPUT);
// // Set dispatcher callback, it will be called whenver new Rx data or space in
// // the Tx buffer becomes available
// UART.setDispatcher(uartNo, function(uartNo) {
// let ra = UART.readAvail(uartNo);
// if (ra > 0) {
// // Received new data: print it immediately to the console, and also
// // accumulate in the "rxAcc" variable which will be echoed back to UART later
// let data = UART.read(uartNo);
// print('Received UART data:', data);
// rxAcc += data;
// }
// }, null);
// // Enable Rx
// UART.setRxEnabled(uartNo, true);
// Send UART data every second
Timer.set(2000 /* milliseconds */, Timer.REPEAT, function() {
value = !value;
write(uartNo, control, 'Hello UART! '
+ (value ? 'Tick' : 'Tock')
+ ' uptime: ' + JSON.stringify(Sys.uptime())
+ ' RAM: ' + JSON.stringify(Sys.free_ram())
+ (rxAcc.length > 0 ? (' Rx: ' + rxAcc) : '')
+ '\n');
// GPIO.write(control, 1);
// UART.write(
// uartNo,
// 'Hello UART! '
// + (value ? 'Tick' : 'Tock')
// + ' uptime: ' + JSON.stringify(Sys.uptime())
// + ' RAM: ' + JSON.stringify(Sys.free_ram())
// + (rxAcc.length > 0 ? (' Rx: ' + rxAcc) : '')
// + '\n'
// );
// UART.flush(uartNo)
// GPIO.write(control, 0);
// rxAcc = '';
}, null);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment