@Bitnugger ein Riesen dank für deine mühe . Ich war so frei und habe dein Program einfach mal so übernommen , getestet und es lief super.
Nach einem ersten erfolgreichen Test habe ich dann auch gleich mal in Zeile 54 und 55 zwei befehle mit CTRL eingebaut und siehe da es funktionierte nicht.
Aber nach mehrmaligem drücken der Tasten "tv" und "subtitle" ging es auf einmal doch aber nur sporadisch zb. von 10 mal drücken dann zufällig 1 mal.
Was mich dann darauf brachte das es da ein timing problem geben muss.
Also habe ich ein opt("SendKeyDownDelay", 50) in Zeile 65 eingefügt und damit die standartzeit von 5ms auf 50ms erhöht und siehe da es fuktioniert jetzt absolut fehler frei.
Spoiler anzeigen
AutoIt: Fernbedienung
#include <Array.au3>
; Lokale Variablen gibt es nur innerhalb von Funktionen und Schleifen! Hier jedoch sind alle Variablen global, auch wenn du sie mit Local deklarierst!
Global $hKodi = ControlGetHandle('Kodi', '', '')
If $hKodi = 0 Then
ConsoleWrite('Kodi wurde noch nicht gestartet!' & @CRLF)
Exit 1
EndIf
Global $szIPADDRESS = "127.0.0.1", $nPORT = 8765, $MainSocket, $recv
Global $sFernbedienung_1 = "PHILIPS_26PFL5604H"
Global $aSplit, $iIndex, $sBefehl
Global $aBefehl_1 = [['GUIDE', 'l', 'Guide Taste = PVR OSD Guide'], _
['MUTE', '{F8}', 'Mute'], _
['Vol-', '{F9 2}', 'Lautstärke runter'], _
['Vol+', '{F10 2}', 'Lautstärke hoch'], _
['up', '{UP}', 'hoch'], _
['down', '{DOWN}', 'runter'], _
['left', '{LEFT}', 'links'], _
['right', '{RIGHT}', 'rechts'], _
['back', '{BACKSPACE}', 'zurück'], _
['source', '{TAB}', 'Taste Source = Vollbild'], _
['ok', '{ENTER}', 'OK'], _
['play', 'p', 'Play'], _
['stop', 'x', 'Stop'], _
['pause', '{SPACE}', 'Pause'], _
['ch+', '{PGUP}', 'Channel rauf Taste = eine seite hoch'], _
['ch-', '{PGDN}', 'Channel runter Taste = eine seite runter'], _
['home', 'c', 'Home Taste = ContexMenü'], _
['options', '{ESCAPE}', 'Options Taste = PreviousMenü'], _
['info', 'i', 'Info anzeigen'], _
['>>', 'f', 'schneller Vorlauf'], _
['<<', 'r', 'schneller Rücklauf'], _
['format', 'q', 'Format Plugin commands'], _
['0', '0', '0'], _
['1', '1', '1'], _
['2', '2', '2'], _
['3', '3', '3'], _
['4', '4', '4'], _
['5', '5', '5'], _
['6', '6', '6'], _
['7', '7', '7'], _
['8', '8', '8'], _
['9', '9', '9'], _
['red', '{F1}', 'rot Musik'], _
['green', '{F2}', 'grün PVR'], _
['yellow', '{F3}', 'gelb Bilder'], _
['blue', '{F4}', 'blau'], _
['Special1', '!{F11}', 'Special1 = ALT + F11'], _
['tv', '^{up}', 'tv = CONTROL + up'], _
['subtitle', '^{down}', 'subtitle = CONTROL + down'], _
['Special4', '!+{F12}', 'Special4 = ALT + SHIFT + F12'], _
['Special5', '^+{F12}', 'Special5 = CONTROL + SHIFT + F12'], _
['Special6', '^!{F12}', 'Special6 = CONTROL + ALT + F12']]
; ! = ALT-Taste
; + = SHIFT-Taste
; ^ = CTRL-Taste
; # = Windows-Taste
opt("SendKeyDownDelay", 50) ; Taste 50ms gedrückt halten
Global $sFernbedienung_2 = 'Not Defined'
Global $aBefehl_2 = [['Noop', 'Noop', 'Noop']]
TCPStartup()
$MainSocket = TCPConnect($szIPADDRESS, $nPORT)
While 1
$recv = TCPRecv($MainSocket, 512)
If $recv = "" Then ContinueLoop
$aSplit = StringSplit($recv, ", ")
If @error Then ContinueLoop
Switch StringTrimRight($aSplit[4], 1)
Case $sFernbedienung_1
$iIndex = _ArraySearch($aBefehl_1, $aSplit[3], 0, 0, 0, 0, 1, -1)
If @error Then
ConsoleWrite('Befehl "' & $aSplit[3] & '" nicht gefunden!' & @CRLF)
Else
_SendBefehl_1($iIndex)
EndIf
Case $sFernbedienung_2
$iIndex = _ArraySearch($aBefehl_2, $aSplit[3], 0, 0, 0, 0, 1, -1)
If @error Then
ConsoleWrite('Befehl "' & $aSplit[3] & '" nicht gefunden!' & @CRLF)
Else
_SendBefehl_2($iIndex)
EndIf
Case Else
ConsoleWrite('Fernbedienung "' & $aSplit[4] & '" nicht gefunden!' & @CRLF)
EndSwitch
WEnd
Func _SendBefehl_1($iIndex)
ConsoleWrite('Sende Befehl: ' & $aBefehl_1[$iIndex][2] & @CRLF)
Local $iRet = ControlSend('', '', $hKodi, $aBefehl_1[$iIndex][1])
Sleep(150)
Return $iRet
EndFunc
Func _SendBefehl_2($iIndex)
ConsoleWrite('Sende Befehl: ' & $aBefehl_2[$iIndex][2] & @CRLF)
Local $iRet = ControlSend('', '', $hKodi, $aBefehl_2[$iIndex][1])
Sleep(150)
Return $iRet
EndFunc
Alles anzeigen