flush out serial data when too long (#375)

This commit is contained in:
Peli de Halleux 2017-03-24 09:51:07 -07:00 committed by GitHub
parent 684646d3de
commit 1f2027d0f9
2 changed files with 12 additions and 14 deletions

View File

@ -93,7 +93,7 @@ namespace pxsim {
break; break;
case "serial": case "serial":
let data = (<SimulatorSerialMessage>msg).data || ""; let data = (<SimulatorSerialMessage>msg).data || "";
this.serialState.recieveData(data); this.serialState.receiveData(data);
break; break;
case "radiopacket": case "radiopacket":
let packet = <SimulatorRadioPacketMessage>msg; let packet = <SimulatorRadioPacketMessage>msg;

View File

@ -1,8 +1,9 @@
namespace pxsim { namespace pxsim {
const SERIAL_BUFFER_LENGTH = 16;
export class SerialState { export class SerialState {
serialIn: string[] = []; serialIn: string[] = [];
public recieveData(data: string) { public receiveData(data: string) {
this.serialIn.push(); this.serialIn.push();
} }
@ -13,18 +14,15 @@ namespace pxsim {
serialOutBuffer: string = ""; serialOutBuffer: string = "";
writeSerial(s: string) { writeSerial(s: string) {
for (let i = 0; i < s.length; ++i) { this.serialOutBuffer += s;
let c = s[i]; if (/\n/.test(this.serialOutBuffer) || this.serialOutBuffer.length > SERIAL_BUFFER_LENGTH) {
this.serialOutBuffer += c; Runtime.postMessage(<SimulatorSerialMessage>{
if (c == "\n") { type: 'serial',
Runtime.postMessage(<SimulatorSerialMessage>{ data: this.serialOutBuffer,
type: "serial", id: runtime.id,
data: this.serialOutBuffer, sim: true
id: runtime.id })
}) this.serialOutBuffer = '';
this.serialOutBuffer = ""
break;
}
} }
} }
} }