From 9d60e6c28570418fb10180e158cb33e7e364df48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Evgeniy=20Mashtar=D0=BE=CC=81v?= Date: Fri, 1 Aug 2025 13:18:36 +0700 Subject: [PATCH] while true --- main.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 6 deletions(-) diff --git a/main.c b/main.c index 01c4c17..79bcb9e 100644 --- a/main.c +++ b/main.c @@ -1,10 +1,57 @@ #include "./GODEX500/Godex500.h" +#include +#include +#include +#include + #define SerialDevice "/dev/ttyUSB0" -int main() { - const char* id = "2E000504"; - const char* model = "LS3"; - int serial_port = GODEX500_setup_serial(SerialDevice); - GODEX500_print_label(serial_port, id, model); - close(serial_port); + +static int serial_port = -1; + +static void cleanup(int signum) +{ + (void)signum; + if (serial_port >= 0) + close(serial_port); + write(STDOUT_FILENO, "\nПорт закрыт. \n", 23); + _exit(0); +} + +static void install_handler(int signo) +{ + struct sigaction sa = { + .sa_handler = cleanup, + .sa_flags = SA_RESTART + }; + sigemptyset(&sa.sa_mask); + sigaction(signo, &sa, NULL); +} + +int main(void) +{ + + install_handler(SIGINT); + install_handler(SIGTERM); + install_handler(SIGHUP); + install_handler(SIGQUIT); + + const char *model = "LS3"; + char id[256]; + + serial_port = GODEX500_setup_serial(SerialDevice); + if (serial_port < 0) { + perror("serial"); + return 1; + } + + puts("Введите ID (Ctrl+D, Ctrl+C или kill для выхода):"); + while (fgets(id, sizeof id, stdin)) { + id[strcspn(id, "\n")] = '\0'; + if (*id == '\0') continue; + GODEX500_print_label(serial_port, id, model); + printf("Печать %s завершена\n", id); + } + + cleanup(0); return 0; } \ No newline at end of file