Ich habs versucht, den Check in ebusd.c wie folgt zu implementieren. Oben das hinzufügen:
Dann in main_loop() ab Zeile 484 das hinzufügen:
Der Code erkennt, wenn ein Device weg ist und versucht wiederzuverbinden. Letzteres klappt bei mir nicht, da bei mir (noch) das Device umspringt (von ttyUSB0 auf ttyUSB1 und andersrum). Es wäre super, wenn ihr testen könntet.
Code:
#include <fcntl.h> #include <sys/ioctl.h>
Code:
/* check if serial device is working and try to reconnect otherwise */ int serial; if (ioctl(serialfd, TIOCMGET, &serial)<0) { log_print(L_ALL, "device: %s is not valid any more", device); /* close serial device */ if (serialfd > 0) { if (eb_serial_close() == -1) log_print(L_ERR, "can't close device: %s", device); else log_print(L_INF, "%s closed", device); } sleep (5); /* open serial device */ if (eb_serial_open(device, &serialfd) == -1) { log_print(L_ALL, "can't open device: %s, wait 5 secs", device); sleep (5); } else { log_print(L_INF, "%s opened", device); } }
Kommentar