2016-08-30 20:51:32 +02:00
|
|
|
namespace pxsim {
|
|
|
|
export class SerialState {
|
|
|
|
serialIn: string[] = [];
|
|
|
|
|
|
|
|
public recieveData(data: string) {
|
|
|
|
this.serialIn.push();
|
|
|
|
}
|
|
|
|
|
|
|
|
readSerial() {
|
|
|
|
let v = this.serialIn.shift() || "";
|
|
|
|
return v;
|
|
|
|
}
|
|
|
|
|
|
|
|
serialOutBuffer: string = "";
|
|
|
|
writeSerial(s: string) {
|
|
|
|
for (let i = 0; i < s.length; ++i) {
|
|
|
|
let c = s[i];
|
|
|
|
this.serialOutBuffer += c;
|
|
|
|
if (c == "\n") {
|
|
|
|
Runtime.postMessage(<SimulatorSerialMessage>{
|
|
|
|
type: "serial",
|
|
|
|
data: this.serialOutBuffer,
|
|
|
|
id: runtime.id
|
|
|
|
})
|
|
|
|
this.serialOutBuffer = ""
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
namespace pxsim.serial {
|
|
|
|
export function writeString(s: string) {
|
|
|
|
board().writeSerial(s);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function readString(): string {
|
|
|
|
return board().serialState.readSerial();
|
|
|
|
}
|
|
|
|
|
|
|
|
export function readLine(): string {
|
|
|
|
return board().serialState.readSerial();
|
|
|
|
}
|
|
|
|
|
2016-10-19 06:47:54 +02:00
|
|
|
export function readUntil(del: string): string {
|
|
|
|
return readLine();
|
|
|
|
}
|
|
|
|
|
2016-08-30 20:51:32 +02:00
|
|
|
export function onDataReceived(delimiters: string, handler: RefAction) {
|
|
|
|
let b = board();
|
|
|
|
b.bus.listen(DAL.MICROBIT_ID_SERIAL, DAL.MICROBIT_SERIAL_EVT_DELIM_MATCH, handler);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function redirect(tx: number, rx: number, rate: number) {
|
|
|
|
// TODO?
|
|
|
|
}
|
|
|
|
}
|