Langen Tastendruck einer Fernbedienung erkennen
Verfasst: Mittwoch 18. März 2020, 13:43
Hallo,
von einer Funkfernbedienung über USB bekomme ich die Tastendrücke.
Leider erhalte ich aber beim drücken nur einen Trigger. Drücke/Loslassen also nicht.
mein Code soweit um ein UDP Broadcast zu versenden wenn Taste 1 gedrückt wird:
Nun bräuchte ich aber folgendes:
Das senden um 400ms verzögern. Wenn die Taste nicht nochmal empfangen wird, das Telegramm senden, sonst ein anderes.
Danke!
von einer Funkfernbedienung über USB bekomme ich die Tastendrücke.
Leider erhalte ich aber beim drücken nur einen Trigger. Drücke/Loslassen also nicht.
mein Code soweit um ein UDP Broadcast zu versenden wenn Taste 1 gedrückt wird:
Code: Alles auswählen
import evdev
import socket
UDP_IP = '192.168.0.255'
UDP_PORT = 20001
device = evdev.InputDevice('/dev/input/event0')
print(device)
for event in device.read_loop():
if event.type == evdev.ecodes.EV_KEY:
# print(evdev.categorize(event))
# print('sec ' + str(event.sec))
# print('usec ' + str(event.usec))
# print('type ' + str(event.type))
# print('code ' + str(event.code))
# print('value ' + str(event.value))
# print('timestamp ' + str(event.timestamp()))
if (event.code == 2 and event.value == 1):
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.sendto(str.encode('KEY_1'), (UDP_IP, UDP_PORT))
Das senden um 400ms verzögern. Wenn die Taste nicht nochmal empfangen wird, das Telegramm senden, sonst ein anderes.
Danke!