Er zijn vijf verschillende knopfuncties

 

1. Control knoppen

verzenden per knop een remote control commando.

2. Cascadeknoppen

verzenden per knop meerdere remote control commando's.

3. Vensterschakelknoppen

schakelen tussen de verschillende vensters van het gebruikersinterface.

4. De twee IR- en RF-capture knoppen

starten het captureproces voor respectievelijk infrarood en radio remotecommando's.

5. Repeat control knoppen

herhalen, een opgegeven aantal keren, hetzelfde remote control commando.

 

 

Het programma, crc_page.py, en de knopfuncties 1 t/m 3

Zie listing front-end programma: crc_page.py

 

De links van de knoppen en het URL-venster van de browsers

De vet weergegeven teksten in onderstaande stukjes listing zijn de links (de verbinding tussen de knoppen en het front-end programma crc_page.py) naar de knoppen.

Deze teksten moeten exact overeenkomen met de betreffende teksten van de knoppen in de vensters van het gebruikersinterface.

De links van de meest recent gebruikte knoppen zijn, evenals het IP-address, terug te zien in het URL-venster van de browsers

 

De knopfuncties met hun links

  • De Control knoppen (1)
    /Button/0 is de link naar de control knop met volgnummer 0.
    Hiervan zijn er 100 voorgeprogrammeerd voor de knopnummers 0 t/m 99.
    Voor uitbreiding van het aantal control knoppen is de nummering vanaf 99 verder uit te breiden.

    De regels file_int = 0 t/m file_int = 99 verwijzen naar de bestanden
    b0.txt t/m b99.txt waarin de remotecontrolcode en
    mo.txt t/m m99.txt waarin de metadata wordt opgeslagen.
    Zie voor meer details: De programmatuur.

#****************************************************************
#                      Control buttons
#****************************************************************

@app.route("/Button/0/")
def b0():
   file_int = 0
   return b_all(file_int)

# **************************************

      Button 1 t/m button 98

# **************************************

@app.route("/Button/99/")
def b99():
   file_int = 99
   return b_all(file_int)

# **************************************

 

  • Cascadeknoppen (2)
    Met cascadeknoppen zijn met een enkele klik meerdere verschilende commando's te versturen.
    Elke regel met  file_int = knopnummer voert het commando van het vermelde knopnummer uit.
    Opmerking:
    Er zijn op deze wijze weliswaar ook meerdere dezelfde commando's te versturen.
    Maar er is een andere methode beschikbaar, zie punt 5 op dit blad.
    D
    ie methode heeft als voordeel dat de herhaling snelheid groter is; dit kan als onderdeel van een protocol belangrijk zijn. 

    Een cascade van control knoppen is eenvoudig te realiseren door, zoals bij Cascade 2, in het programma crc_page.py een nog niet toegepast cascadenummer toe te kennen. Dat is namenlijk de link voor de cascadeknop in een venster van het gebruikersinterface.

    Vervolgens, naar voorbeeld van Cascade 2, de benodigde knopnummers achter elkaar zetten voor het verkrijgen van de gewenste commando reeks.

#****************************************************************
#                         Cascade buttons
#****************************************************************

# Sturing van meerdere apparaten met een enkele knop

# **************************************

                Cascade 1

# **************************************

@app.route("/Cascade/2/") # TV ALL on/off
def c2():
   file_int = 66    # Schakelt netspanning aan met RF-code
   b_all(file_int)
   file_int = 22    # Schakelt TV aan met 5 maal herhaalde IR-code (vereist de TV)
   b_all(file_int)
   file_int = 23    # Schakelt TV setup box aan
   return b_all(file_int)

# **************************************

                Cascade 3 enz.

# **************************************

 

  • Vensterschakelknoppen (3)
    Met de vensterschakelknoppen kan tussen de verschillende vensters van het gebruikersinterface geschakeld worden.

    Het vensterschakelproces is een kopieer actie naar het venster main.html

    Bij het aanbrengen van wijzigen aan de vensters is het belangrijk te weten is dat uitsluitend het venster met de naam main.html van het gebruikersinterface zichtbaar is. Het omschakelen van de vensters vindt plaats door het venster dat zichtbaar moet worden te kopiĆ«ren en daarbij de naam te veranderen in main.html.

    Zorg dat de namen van de links (voorbeeld: Button/TVHTML) exact overeenkomen met vensteromschakelknoppen in de vensters en de namen van de vensters (voorbeeld: TVHTMLmain.html) in de folder templates. Zie: De programmatuur.

#****************************************************************
#                       Page switch buttons 
#****************************************************************

@app.route("/Button/TVHTML/") 
def v0():
   dataDir = os.path.dirname(os.path.realpath("__file__"))
   crcDir = dataDir + "/templates"
   copy2(crcDir + "/TVHTMLmain.html",crcDir + "/main.html")
   helptekst =io_modetxt
   templatetekst = {"html_helptekst" : helptekst}
   return render_template('main.html', **templatetekst)

@app.route("/Button/100HTML/")
def v1():
   dataDir = os.path.dirname(os.path.realpath("__file__"))
   crcDir = dataDir + "/templates"
   copy2(crcDir + "/100HTMLmain.html",crcDir + "/main.html")
   helptekst =io_modetxt
   templatetekst = {"html_helptekst" : helptekst}
   return render_template('main.html', **templatetekst)

@app.route("/Button/10HTML/")
def v2():
   dataDir = os.path.dirname(os.path.realpath("__file__"))
   crcDir = dataDir + "/templates"
   copy2(crcDir + "/10HTMLmain.html",crcDir + "/main.html")
   helptekst =io_modetxt
   templatetekst = {"html_helptekst" : helptekst}
   return render_template('main.html', **templatetekst)

@app.route("/Button/LICHTHTML/")
def v3():
   dataDir = os.path.dirname(os.path.realpath("__file__"))
   crcDir = dataDir + "/templates"
   copy2(crcDir + "/LICHTHTMLmain.html",crcDir + "/main.html")
   helptekst =io_modetxt
   templatetekst = {"html_helptekst" : helptekst}
   return render_template('main.html', **templatetekst)

@app.route("/Button/GRBTN/")
def v4():
   dataDir = os.path.dirname(os.path.realpath("__file__"))
   crcDir = dataDir + "/templates"
   copy2(crcDir + "/GRBTNmain.html",crcDir + "/main.html")
   helptekst =io_modetxt
   templatetekst = {"html_helptekst" : helptekst}
   return render_template('main.html', **templatetekst)

@app.route("/Button/TV/")
def v5():
   dataDir = os.path.dirname(os.path.realpath("__file__"))
   crcDir = dataDir + "/templates"
   copy2(crcDir + "/TVmain.html",crcDir + "/main.html")
   helptekst =io_modetxt
   templatetekst = {"html_helptekst" : helptekst}
   return render_template('main.html', **templatetekst)

 

 

Het programma, crc_drive.py, en de capture knoppen IR en RF (4)

Links van de capture knoppen gaan naar crc_drive.py
De links van de IR- en de RF-knop voor het starten van het captureproces gaan naar het besturingsprogramma crc_drive.py.

<a href="/Capture/i">-IR-</a>
<a href="/Capture/r">-RF-</a>

 

 

De data- en metabestanden 5

1. De remote control code voor de control knoppen staat in de databestanden b0.txt t/m b99.txt.

Codeformaat: Bytes gescheiden door komma's en spaties in ASCII-code (tekst).
logisch niveau 0 = 0.
logisch niveau 1 = 255.

Voorbeeld: logische niveaus 1 0 0 1 zijn vastgelegd als 255, 0, 0, 255.


2. De metabestanden m0.txt t/m m99.txt bevatten informatie over de remote control code.

De metabestanden bepalen of de remote control code als (IR) infraroodsignalen of als (RF) radiosignalen moet worden verzonden.
Verder bepalen de metabestanden het aantal keren dat de remote control code moet worden verzonden.

Voorbeeld: het bestand m22.txt bevat in (ASCII formaat): i,05, (afgesloten met een komma)

Dit betekent: de remote control code van bestand b22.txt moet als infrarood code 5 maal worden verzonden.

Die ,05, is door de gebruiker aangepast; standaard vult de software voor infrarood code i,01, en voor radio code r,01, in.
De metabestanden zijn met een eenvoudige teksteditor aan te passen.