support multiple named serial connections, change default baudrate to 115200 (#551)
This commit is contained in:
parent
d02450c0d9
commit
d25851ac17
1 changed files with 9 additions and 9 deletions
|
|
@ -6,23 +6,23 @@ This program is free software: you can redistribute it and/or modify it under th
|
||||||
|
|
||||||
import { Pattern, isPattern } from '@strudel.cycles/core';
|
import { Pattern, isPattern } from '@strudel.cycles/core';
|
||||||
|
|
||||||
var writeMessage;
|
var writeMessagers = {};
|
||||||
var choosing = false;
|
var choosing = false;
|
||||||
|
|
||||||
export async function getWriter(br = 38400) {
|
export async function getWriter(name, br) {
|
||||||
if (choosing) {
|
if (choosing) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
choosing = true;
|
choosing = true;
|
||||||
if (writeMessage) {
|
if (name in writeMessagers) {
|
||||||
return writeMessage;
|
return writeMessagers[name];
|
||||||
}
|
}
|
||||||
if ('serial' in navigator) {
|
if ('serial' in navigator) {
|
||||||
const port = await navigator.serial.requestPort();
|
const port = await navigator.serial.requestPort();
|
||||||
await port.open({ baudRate: br });
|
await port.open({ baudRate: br });
|
||||||
const encoder = new TextEncoder();
|
const encoder = new TextEncoder();
|
||||||
const writer = port.writable.getWriter();
|
const writer = port.writable.getWriter();
|
||||||
writeMessage = function (message, chk) {
|
writeMessagers[name] = function (message, chk) {
|
||||||
const encoded = encoder.encode(message);
|
const encoded = encoder.encode(message);
|
||||||
if (!chk) {
|
if (!chk) {
|
||||||
writer.write(encoded);
|
writer.write(encoded);
|
||||||
|
|
@ -63,10 +63,10 @@ function crc16(data) {
|
||||||
return crc & 0xffff;
|
return crc & 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
Pattern.prototype.serial = function (br = 38400, sendcrc = false, singlecharids = false) {
|
Pattern.prototype.serial = function (br = 115200, sendcrc = false, singlecharids = false, name = 'default') {
|
||||||
return this.withHap((hap) => {
|
return this.withHap((hap) => {
|
||||||
if (!writeMessage) {
|
if (!(name in writeMessagers)) {
|
||||||
getWriter(br);
|
getWriter(name, br);
|
||||||
}
|
}
|
||||||
const onTrigger = (time, hap, currentTime) => {
|
const onTrigger = (time, hap, currentTime) => {
|
||||||
var message = '';
|
var message = '';
|
||||||
|
|
@ -108,7 +108,7 @@ Pattern.prototype.serial = function (br = 38400, sendcrc = false, singlecharids
|
||||||
const offset = (time - currentTime + latency) * 1000;
|
const offset = (time - currentTime + latency) * 1000;
|
||||||
|
|
||||||
window.setTimeout(function () {
|
window.setTimeout(function () {
|
||||||
writeMessage(message, chk);
|
writeMessagers[name](message, chk);
|
||||||
}, offset);
|
}, offset);
|
||||||
};
|
};
|
||||||
return hap.setContext({ ...hap.context, onTrigger, dominantTrigger: true });
|
return hap.setContext({ ...hap.context, onTrigger, dominantTrigger: true });
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue