Inicializacia sériovej váhy v OS Linux


Krok 1: Inštalácia potrebných knižníc


bash
sudo apt update
sudo apt install python3 python3-pip python3-serial python3-tk python3-dev
pip3 install pyautogui

Krok 2: Vytvorte Python skript

Vytvorte súbor napr.

sudo nano /opt/serial_keyboard_emulator.py
#!/usr/bin/env python3
import serial
import pyautogui
import time

# Konfigurácia sériového portu (upravte podľa vášho zariadenia)
SERIAL_PORT = "/dev/ttyUSB1"  # alebo /dev/ttyUSB0 pre USB adaptér
BAUD_RATE = 9600
PARITY = serial.PARITY_NONE  # alebo serial.PARITY_EVEN
STOP_BITS = serial.STOPBITS_ONE
BYTE_SIZE = serial.EIGHTBITS  # alebo serial.SEVENBITS

def main():
    try:
        ser = serial.Serial(
            port=SERIAL_PORT,
            baudrate=BAUD_RATE,
            parity=PARITY,
            stopbits=STOP_BITS,
            bytesize=BYTE_SIZE,
            timeout=1
        )
        print(f"Čítam dáta z {SERIAL_PORT}...")

        while True:
            line = ser.readline().decode('ascii', errors='ignore').strip()
            if line:
                print(f"Prijaté dáta: {line}")
                pyautogui.write(line)  # Emuluje klávesnicový vstup
                pyautogui.press('enter')  # Odoslanie Enter (voliteľné)
    except Exception as e:
        print(f"Chyba: {e}")
    finally:
        if 'ser' in locals() and ser.is_open:
            ser.close()

if __name__ == "__main__":
    main()

Vysvetlenie:

  • serial.Serial() – Nastaví sériové pripojenie (port, baudrate, parita, stop bity).

  • ser.readline() – Číta dáta zo sériového portu.

  • pyautogui.write() – Simuluje písanie na klávesnici.

pyautogui.press('enter') – Voliteľné, ak potrebujete odoslať Enter


Krok 3: Nastavenie spustiteľnosti a testovanie

bash
sudo chmod +x /opt/serial_keyboard_emulator.py
sudo python3 /opt/serial_keyboard_emulator.py

Ak všetko funguje, mali by ste vidieť dáta zo sériového portu v termináli a zároveň by mal skript emulovať klávesnicu.

Krok 4: Vytvorenie systémovej služby (systemd)

Vytvorte službu, ktorá sa spustí pri štarte:

bash

sudo nano /etc/systemd/system/serial_keyboard.service

Vložte:

[Unit]
Description=Serial Port to Keyboard Emulator (Python)
After=multi-user.target

[Service]
Type=simple
WorkingDirectory=/opt
ExecStart=/usr/bin/python3 /opt/serial_keyboard_emulator.py
Restart=always
RestartSec=3
User=pos  # Potrebné oprávnenia na prístup k sériovému portu

[Install]
WantedBy=multi-user.target

Povolenie a spustenie služby

bash

sudo systemctl daemon-reload
sudo systemctl enable serial_keyboard.service
sudo systemctl start serial_keyboard.service

Kontrola stavu

sudo systemctl status serial_keyboard.service

Ak je všetko v poriadku, uvidíte active (running).

Riešenie problémov

1. Prístup k sériovému portu

Ak skript nevidí port, pridajte používateľa do skupiny dialout:

bash

sudo usermod -aG dialout $USER

Krok 5: Vytvorenie služby po štarte X

Ak nefunguje služba ako daemon vytvorte

nano /opt/start_serial.sh


S obsahom:

#!/bin/bash
export DISPLAY=:0
export XAUTHORITY=/home/$USER/.Xauthority
/usr/bin/python3 /opt/serial_keyboard_emulator.py


Nakoniec vytvorte autoexec script pre X window system:

sudo pico /etc/xdg/autostart/00-serialtokeyboard.desktop


S obsahom:

[Desktop Entry]
Type=Application
Name=SerialToKeyboardDriver
Comment=Serial To Keyboard Driver
NoDisplay=true
Exec=/bin/bash /opt/start_serial.sh
NotShowIn=GNOME;KDE;XFCE;

Pomohol Vám tento článok?