Wie steuere ich den Better Pack BP555eMA Klebebandabroller über die serielle (RS-232) und Web Serial API?JavaScript

Javascript-Forum
Anonymous
 Wie steuere ich den Better Pack BP555eMA Klebebandabroller über die serielle (RS-232) und Web Serial API?

Post by Anonymous »

Frage
Ich versuche, einen Better Pack BP555eMA-Klebebandspender zu automatisieren, indem ich ihn über einen USB-zu-Seriell-Adapter von einem PC aus steuere.
Ich habe viel Zeit damit verbracht, es zu versuchen, und ich möchte Ihnen hier mitteilen, wie es funktioniert.
Antwort
Das Protokoll (EP1002)
Das Gerät verwendet ein spezifisches ASCII-Protokoll.
  • Baudrate: 9600 (Standard)
  • Einstellungen: 8 Datenbits, keine Parität, 1 Stoppbit (8N1).
Befehle:
  • Handshake (

    Code: Select all

    @1T
    )[/b]: Sie MÜSSEN zuerst diesen Befehl senden, um die Maschine „aufzuwecken“. Es reagiert nicht auf Abgabebefehle, bis es diese erhält.
  • Abgabe (

    Code: Select all

    @1D...
    )[/b]: Das Format ist @1D gefolgt von der Länge in „Zählungen“.
    • Umrechnung: ~4 Zählungen pro cm (genau 61 Zählungen = 6 Zoll / 15,24 cm).
    • Beispiel: 20 cm dosieren -> 20 * 4 = 80 -> Send @1D80.
  • Terminator: Alle Befehle müssen mit enden (

    Code: Select all

    \r\n
    ).
Lösung A: Python (Backend/Skript)
Nützlich für Headless-Server oder Hintergrundskripte.

Code: Select all

import serial
import time
# Configure Port (Try 9600 first, then 2400)
ser = serial.Serial('COM3', 9600, timeout=1)
# 1. Handshake (Required)
ser.write(b'@1T\r\n')
time.sleep(0.5) # Wait for machine to initialize
# 2. Dispense 20cm
# 20cm * 4 counts/cm = 80 counts
ser.write(b'@1D80\r\n')
ser.close()
4. Lösung B: JavaScript (Web Serial API)
Zero-Install-Lösung: Funktioniert direkt in Chrome/Edge ohne Backend-Server.

Code: Select all

Connect
Dispense 20cm

let writer;
async function connect() {
// User selects port
const port = await navigator.serial.requestPort();
await port.open({ baudRate: 9600 });

const textEncoder = new TextEncoderStream();
const writableStreamClosed = textEncoder.readable.pipeTo(port.writable);
writer = textEncoder.writable.getWriter();

// Handshake
await writer.write("@1T\r\n");
}
async function dispense(cm) {
if (!writer) return alert("Connect first!");
const counts = Math.floor(cm * 4);
await writer.write(`@1D${counts}\r\n`);
}
document.getElementById('connectBtn').addEventListener('click', connect);

Es sollte jedem helfen, der eine BetterPackaging-Hardware anschließen muss.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post