side effects
Bovino maduro
- Desde
- 31 Ago 2008
- Mensajes
- 242
- Tema Autor
- #1
Amigos buenas tardes;
Hoy vengo con ustedes, tengo un problema con la conexión a una bascula, estoy implementando un pequeño desarrollo. En resumen conecte la bascula por medio de una API web serial pero en una me envía solo un digito y en otra me manda el peso completo.
Es decir si tengo 1200 kg en la bascula me envía el dato así:
primero 1, después 2, después 0 y después 0.
Solo es en una bascula el problema, en la otra aparecen "1200" completo. Dejo mi código a ver si alguien puede ayudarme.
<button id="connectButton">Enlazar</button>
<button id="registerButton">Registrar Peso</button>
<div id="target">Historial de pesos registrados:</div>
<div id="pesoActual">Peso actual: --</div>
<script>
document.getElementById('connectButton').addEventListener('click', () => {
if (navigator.serial) {
connectSerial();
} else {
alert('Web Serial API no es compatible.');
}
});
let pesoAnterior = null; // Variable para almacenar el peso anterior
let pesoActual = null; // Variable para almacenar el peso actual
async function connectSerial() {
const log = document.getElementById('target');
const pesoDiv = document.getElementById('pesoActual');
try {
const port = await navigator.serial.requestPort();
await port.open({ baudRate:9600});
const decoder = new TextDecoderStream();
port.readable.pipeTo(decoder.writable);
outputStream = decoder.writable;//nuevo
const inputStream = decoder.readable;
const reader = inputStream.getReader();
while (true) {
const { value, done } = await reader.read();
//console.log(decoder.decode(value));
if (done) {
console.log('[readLoop] DONE', done);
reader.releaseLock();
break;
}
if (value) {
const parsedValue = value.trim(); // Elimina espacios
const nuevoPeso = parsedValue.match(/\d+/g)?.join('') || ''; // Extrae solo números
if (nuevoPeso !== pesoAnterior && nuevoPeso) {
pesoAnterior = nuevoPeso; // Actualiza el peso anterior
pesoActual = nuevoPeso; // Actualiza el peso actual
pesoDiv.textContent = `Peso actual: ${pesoActual}`;
}
}
}
} catch (error) {
log.innerHTML = error;
}
}
// Botón para registrar manualmente el peso
document.getElementById('registerButton').addEventListener('click', () => {
if (pesoActual) {
const log = document.getElementById('target');
log.textContent = `Peso registrado: ${pesoActual}` ;
} else {
alert('No hay peso disponible para registrar.');
}
});
</script>
Hoy vengo con ustedes, tengo un problema con la conexión a una bascula, estoy implementando un pequeño desarrollo. En resumen conecte la bascula por medio de una API web serial pero en una me envía solo un digito y en otra me manda el peso completo.
Es decir si tengo 1200 kg en la bascula me envía el dato así:
primero 1, después 2, después 0 y después 0.
Solo es en una bascula el problema, en la otra aparecen "1200" completo. Dejo mi código a ver si alguien puede ayudarme.
<button id="connectButton">Enlazar</button>
<button id="registerButton">Registrar Peso</button>
<div id="target">Historial de pesos registrados:</div>
<div id="pesoActual">Peso actual: --</div>
<script>
document.getElementById('connectButton').addEventListener('click', () => {
if (navigator.serial) {
connectSerial();
} else {
alert('Web Serial API no es compatible.');
}
});
let pesoAnterior = null; // Variable para almacenar el peso anterior
let pesoActual = null; // Variable para almacenar el peso actual
async function connectSerial() {
const log = document.getElementById('target');
const pesoDiv = document.getElementById('pesoActual');
try {
const port = await navigator.serial.requestPort();
await port.open({ baudRate:9600});
const decoder = new TextDecoderStream();
port.readable.pipeTo(decoder.writable);
outputStream = decoder.writable;//nuevo
const inputStream = decoder.readable;
const reader = inputStream.getReader();
while (true) {
const { value, done } = await reader.read();
//console.log(decoder.decode(value));
if (done) {
console.log('[readLoop] DONE', done);
reader.releaseLock();
break;
}
if (value) {
const parsedValue = value.trim(); // Elimina espacios
const nuevoPeso = parsedValue.match(/\d+/g)?.join('') || ''; // Extrae solo números
if (nuevoPeso !== pesoAnterior && nuevoPeso) {
pesoAnterior = nuevoPeso; // Actualiza el peso anterior
pesoActual = nuevoPeso; // Actualiza el peso actual
pesoDiv.textContent = `Peso actual: ${pesoActual}`;
}
}
}
} catch (error) {
log.innerHTML = error;
}
}
// Botón para registrar manualmente el peso
document.getElementById('registerButton').addEventListener('click', () => {
if (pesoActual) {
const log = document.getElementById('target');
log.textContent = `Peso registrado: ${pesoActual}` ;
} else {
alert('No hay peso disponible para registrar.');
}
});
</script>