82 строки
2.3 KiB
TypeScript
82 строки
2.3 KiB
TypeScript
/**
|
|
* Writing data for hacking stem experiments
|
|
*/
|
|
//% weight=94 color=#ffab19 icon="\uf287"
|
|
namespace dataStreamer {
|
|
/**
|
|
* Print a numeric value to the serial port
|
|
* @param value to send over serial
|
|
* @param decimalDigits (optional) unit of the value
|
|
*/
|
|
//% blockId=datastreamer_writeNumber block="write number %value||decimal digits %decimalDigits"
|
|
//% weight=30
|
|
//% decimalDigits.defl=2
|
|
//% expandableArgumentMode=toggle
|
|
|
|
export function writeNumber(value: number, decimalDigits: number = 2) {
|
|
//Format to right number of decimalDigits
|
|
let text: string = value.toString();
|
|
let len = 0; //Tracks the subscrtring length
|
|
|
|
for (; len < text.length; len++) { //Find the .
|
|
if (text[len] == ".") { break; }
|
|
}
|
|
|
|
if (decimalDigits != 0) {
|
|
len++ //Account for .
|
|
if (len + decimalDigits < text.length) {
|
|
len = len + decimalDigits;
|
|
} else {
|
|
len = text.length;
|
|
}
|
|
}
|
|
|
|
serial.writeString(text.substr(0, len))
|
|
}
|
|
|
|
/**
|
|
* Print a text to the serial port
|
|
* @param text to send over serial
|
|
*/
|
|
//% blockId=datastreamer_writestring block="write string %text"
|
|
//% weight=20
|
|
//% text.defl=","
|
|
export function writeString(text: string) {
|
|
serial.writeString(text)
|
|
}
|
|
|
|
/**
|
|
* Print a new line to the serial port
|
|
*/
|
|
//% blockId=datastreamer_writeline block="write line"
|
|
//% weight=20
|
|
export function writeLine() {
|
|
serial.writeLine("")
|
|
}
|
|
|
|
/**
|
|
* Print an array of numeric values as CSV to the serial port
|
|
*/
|
|
//% blockId=datastreamer_writenumberarray block="write number array %values||decimal digits %decimalDigits"
|
|
//% weight=10
|
|
//% values.shadow="lists_create_with"
|
|
//% decimalDigits.defl=2
|
|
//% expandableArgumentMode=toggle
|
|
export function writeNumberArray(values: number[], decimalDigits: number = 2): void {
|
|
for (let i = 0; i < values.length; i++) {
|
|
dataStreamer.writeNumber(values[i], decimalDigits)
|
|
if ((i + 1) < values.length) {
|
|
dataStreamer.writeString(",")
|
|
}
|
|
}
|
|
}
|
|
|
|
//% shim=dataStreamer::init
|
|
function init() {
|
|
// keep this statement
|
|
return;
|
|
}
|
|
|
|
init();
|
|
|
|
} |