Új hozzászólás Aktív témák

  • Oldmobil

    aktív tag

    válasz Hyperion #4067 üzenetére

    Hahó!
    Itt a gpio gombos xbmc vezérlős kód:

    #!/usr/bin/python2.7
    import select, time, sys, os

    pinek = [18, 8] # itt kell felsorolni a figyelendo gpio portok szamat

    def xbmc_action(pin_id):
    if pin_id==18:
    os.system ("curl --data-binary \'{ \"jsonrpc\": \"2.0\", \"method\": \"Player.PlayPause\", \"params\": { \"playerid\": 0 }, \"id\":1}\' -H \'content-type: application/json;\' http://127.0.0.1:80/jsonrpc")
    elif pin_id==8:
    os.system ("curl --data-binary \'{ \"jsonrpc\": \"2.0\", \"method\": \"Player.GoTo\", \"params\": { \"playerid\": 0, \"to\": \"next\" }, \"id\":1}\' -H \'content-type: application/json;\' http://127.0.0.1:80/jsonrpc")

    file = {}
    filelist = {}
    os.system("sudo chmod 666 /sys/class/gpio/export")
    po = select.poll()

    def write_once(path, value):
    f = open(path, 'w')
    f.write(value)
    f.close()
    return

    for n in pinek:
    os.system("echo " + str(n) + " >/sys/class/gpio/export")
    os.system("sudo chmod 666 /sys/devices/virtual/gpio/gpio" + str(n) + "/direction")
    os.system("sudo chmod 666 /sys/devices/virtual/gpio/gpio" + str(n) + "/edge")
    write_once('/sys/class/gpio/gpio' + str(n) + '/direction', 'in')
    write_once('/sys/class/gpio/gpio' + str(n) + '/edge', 'falling')
    file[pinek.index(n)] = open('/sys/class/gpio/gpio' + str(n) + '/value', 'r')
    po.register(file[pinek.index(n)], select.POLLPRI)
    filelist[file[pinek.index(n)].fileno()] = n

    t = time.time()
    while 1:
    events = po.poll()
    for n in pinek:
    file[pinek.index(n)].seek(2)
    if (time.time() - t)>0.2:
    xbmc_action(filelist[events[0][0]])
    t = time.time()

    Az elején fel kell sorolni a használni kívánt gpio portok számait, az xbmc_action-ba pedig további elif-ekkel be kell írni, hogy melyik gombnyomásra mit szeretnénk, hogy csináljon. Nekem egyelőre a tesztkiépítésben csak két gombom van, ezért a két action. Fut root nélkül is. Az elején kell neki kb. 1-2 másodperc amíg elvégzi a gpio portok konfigurálását, utána már megy. Van a figyelő ciklusban egy szoftveres pergésmentesítés, ez nem kell ha hardveresen van megoldva kondival. Nem kezeli két gomb egyidejű lenyomását, és nincs felkészítve rövid és hosszú gombnyomások megkülönböztetésére. Ezek még terven vannak.
    Ui: advancedektől elnézést ha ronda meg nem biztonságos a kód, kezdő vagyok Linuxban, Pythonban meg főleg

Új hozzászólás Aktív témák