„Ax25d” változatai közötti eltérés

Innen: HamWiki
Ugrás a navigációhoz Ugrás a kereséshez
(Első verzió)
 
(+if __name__ == '__main__':)
 
(3 közbenső módosítás ugyanattól a szerkesztőtől nincs mutatva)
3. sor: 3. sor:
 
Az ax25d alkalmazásának pedig csak annyi dolga van, hogy a ''standard inputról'' megkapott kérésre a ''standard output''-jára generál választ. Ezek a szoftverfajták azok, amiket közvetlenül elindítva a billentyűzetről kérik a bemenetet, a képernyőre írják a kimenetet. Azaz nagyon egyszerű ezeknek a programoknak a fejlesztése.
 
Az ax25d alkalmazásának pedig csak annyi dolga van, hogy a ''standard inputról'' megkapott kérésre a ''standard output''-jára generál választ. Ezek a szoftverfajták azok, amiket közvetlenül elindítva a billentyűzetről kérik a bemenetet, a képernyőre írják a kimenetet. Azaz nagyon egyszerű ezeknek a programoknak a fejlesztése.
  
= Példák =
+
== Példa: node program futtatása ==
 +
 
 +
# /etc/ax25/ax25d.conf
 +
#
 +
# ax25d Configuration File.
 +
#
 +
# AX.25 Ports begin with a '['.
 +
#
 +
[HG2ECZ-0 via 2m]
 +
NOCALL  * * * * * *  L
 +
default  * * * * * *  - root  /usr/sbin/node    node
 +
 
 +
A node szoftver [http://www.ubuntu.com Ubuntu] és [http://www.debian.org Debian] Linux disztribúció alatt
 +
 
 +
apt-get install node
 +
 
 +
paranccsal telepíthetők fel.
 +
 
 +
Lásd még: [[Hogyan üzemeljünk be otthon egy egyszerű AX.25 node-ot?]]
 +
 
 +
== Példa: saját alkalmazás írása ax25d alá ==
 +
 
 +
Az alábbi példaprogram egy "list" és egy "quit" parancsot képes feldolgozni. A sok-sok előkészítés mellett a program végén a while(1)-részben található a lényeg. Az alábbi program igen könnyen bővíthető.
 +
 
 +
<source lang="python">
 +
#!/usr/bin/python -u
 +
# -*- coding: utf-8 -*-
 +
 
 +
import sys, re, os, time
 +
 
 +
def ax25d_argumentum_ellenorzes():
 +
    if len(sys.argv) < 3:
 +
        print "Node hiba: tul keves az "+sys.argv[0]+"-nak az argumentum."
 +
        print "Parameterezes: "+sys.argv[0]+" NodeHivojel %S\n"
 +
        sys.exit(-1)
 +
 
 +
def bejelentkezoszoveg():
 +
    t=time.localtime(time.time())
 +
    print "Ez a Node a "+sys.argv[1]+". A Te hivojeled pedig: "+sys.argv[2]
 +
    print "Pontos helyi ido:  %04d.%02d.%02d %02d:%02d:%02d" % (t[0], t[1], t[2], t[3], t[4], t[5])
 +
    print "Probald ki a 'list' parancsot. Vegul a 'quit' paranccsal tudsz kilepni.\n"
 +
 
 +
def parancsok_fogadasa():
 +
    # Elokeszitjuk a nem pufferelt (realtime) adatbevitelt
 +
    stdinfd = sys.stdin.fileno()
 +
    fd=os.fdopen(stdinfd, "r", os.O_NONBLOCK)
 +
    def sorbeolvasas():
 +
        parancssor=""
 +
        while (1):
 +
            ch=fd.read(1)
 +
            if (ch == '\r'): break
 +
            parancssor+=ch
 +
        return parancssor
 +
 
 +
    # Elokeszitjuk a regexp-el ellenorzott parancsokat
 +
    cmd={}
 +
    cmd['list']=re.compile("^list"); # A ^ a sor eleji egyezoseget jeloli.
 +
 
 +
    # A vegtelen ciklus, amely a parancsokat egymas utan hajtja vegre. A quit lep ki belole.
 +
    while (1):
 +
        parancssor = sorbeolvasas()
 +
       
 +
        # A beolvasott parancssorbol a list, quit szavak keresese. Talalat eseten vegrehajtasa.
 +
        # "list" parancs
 +
        if cmd['list'].match(parancssor):  # regexp elonye, hogy kesobb a "list" szo utan
 +
            f=os.popen("ls -l /", "r")    # tetszoleges argumentum is kerulhet.
 +
            while (1):
 +
                sor=f.readline()
 +
                if not sor: break
 +
                print sor,
 +
 
 +
        # "quit" parancs - csak egyszeruen.
 +
        elif parancssor == "quit":
 +
            fd.close()
 +
            break
 +
       
 +
        # Ha a parancssor nem tartalmazott a fentiek alapjan ervenyes parancsot.
 +
        else:
 +
            print "Hibas parancs: %s"%parancssor+". Hasznalhato parancsok: list es quit."
 +
 
 +
if __name__ == '__main__': # Foprogram
 +
    ax25d_argumentum_ellenorzes()
 +
    bejelentkezoszoveg()
 +
    parancsok_fogadasa()
 +
 
 +
    print "Remelem tetszett a pelda!"
 +
    print "73!"
 +
</source>
 +
 
 +
'''A fenti program befűzése az ax25d node szoftver alá:''' A fenti programot a /usr/local/sbin/ax25d-test.py állományba mentjük, majd az ax25d szoftver konfig állományába az alábbi részt írjuk:
 +
 
 +
# /etc/ax25/ax25d.conf
 +
#
 +
# ax25d Configuration File.
 +
#
 +
# AX.25 Ports begin with a '['.
 +
#
 +
[HG2ECZ-8 via *]
 +
NOCALL  * * * * * *  L
 +
default  * * * * * *  - root  /usr/local/sbin/ax25d-test.py  ax25dtest hg2ecz %S
  
  
 
[[Kategória: Csomagrádió]]
 
[[Kategória: Csomagrádió]]

A lap jelenlegi, 2017. november 2., 10:51-kori változata

Az ax25d egy nagyon aranyos és univerzálisan konfigurálható node szoftver. A konfigurációs állományában megadható, hogy melyik interfészről és melyik hívójel mely SSID-jére érkező kérés hatására mely alkalmazást hívja meg.

Az ax25d alkalmazásának pedig csak annyi dolga van, hogy a standard inputról megkapott kérésre a standard output-jára generál választ. Ezek a szoftverfajták azok, amiket közvetlenül elindítva a billentyűzetről kérik a bemenetet, a képernyőre írják a kimenetet. Azaz nagyon egyszerű ezeknek a programoknak a fejlesztése.

Példa: node program futtatása

# /etc/ax25/ax25d.conf
#
# ax25d Configuration File.
#
# AX.25 Ports begin with a '['.
#
[HG2ECZ-0 via 2m]
NOCALL   * * * * * *  L
default  * * * * * *  - root  /usr/sbin/node    node

A node szoftver Ubuntu és Debian Linux disztribúció alatt

apt-get install node

paranccsal telepíthetők fel.

Lásd még: Hogyan üzemeljünk be otthon egy egyszerű AX.25 node-ot?

Példa: saját alkalmazás írása ax25d alá

Az alábbi példaprogram egy "list" és egy "quit" parancsot képes feldolgozni. A sok-sok előkészítés mellett a program végén a while(1)-részben található a lényeg. Az alábbi program igen könnyen bővíthető.

<source lang="python">

  1. !/usr/bin/python -u
  2. -*- coding: utf-8 -*-

import sys, re, os, time

def ax25d_argumentum_ellenorzes():

   if len(sys.argv) < 3:
       print "Node hiba: tul keves az "+sys.argv[0]+"-nak az argumentum."
       print "Parameterezes: "+sys.argv[0]+" NodeHivojel %S\n"
       sys.exit(-1)

def bejelentkezoszoveg():

   t=time.localtime(time.time())
   print "Ez a Node a "+sys.argv[1]+". A Te hivojeled pedig: "+sys.argv[2]
   print "Pontos helyi ido:  %04d.%02d.%02d %02d:%02d:%02d" % (t[0], t[1], t[2], t[3], t[4], t[5])
   print "Probald ki a 'list' parancsot. Vegul a 'quit' paranccsal tudsz kilepni.\n"

def parancsok_fogadasa():

   # Elokeszitjuk a nem pufferelt (realtime) adatbevitelt
   stdinfd = sys.stdin.fileno()
   fd=os.fdopen(stdinfd, "r", os.O_NONBLOCK)
   def sorbeolvasas():
       parancssor=""
       while (1):
           ch=fd.read(1)
           if (ch == '\r'): break
           parancssor+=ch
       return parancssor
   # Elokeszitjuk a regexp-el ellenorzott parancsokat
   cmd={}
   cmd['list']=re.compile("^list"); # A ^ a sor eleji egyezoseget jeloli.
   # A vegtelen ciklus, amely a parancsokat egymas utan hajtja vegre. A quit lep ki belole.
   while (1):
       parancssor = sorbeolvasas()
       
       # A beolvasott parancssorbol a list, quit szavak keresese. Talalat eseten vegrehajtasa.
       # "list" parancs
       if cmd['list'].match(parancssor):  # regexp elonye, hogy kesobb a "list" szo utan
           f=os.popen("ls -l /", "r")     # tetszoleges argumentum is kerulhet.
           while (1):
               sor=f.readline()
               if not sor: break
               print sor,
       # "quit" parancs - csak egyszeruen.
       elif parancssor == "quit":
           fd.close()
           break
       
       # Ha a parancssor nem tartalmazott a fentiek alapjan ervenyes parancsot.
       else:
           print "Hibas parancs: %s"%parancssor+". Hasznalhato parancsok: list es quit."

if __name__ == '__main__': # Foprogram

   ax25d_argumentum_ellenorzes()
   bejelentkezoszoveg()
   parancsok_fogadasa()
   print "Remelem tetszett a pelda!"
   print "73!"

</source>

A fenti program befűzése az ax25d node szoftver alá: A fenti programot a /usr/local/sbin/ax25d-test.py állományba mentjük, majd az ax25d szoftver konfig állományába az alábbi részt írjuk:

# /etc/ax25/ax25d.conf
#
# ax25d Configuration File.
#
# AX.25 Ports begin with a '['.
#
[HG2ECZ-8 via *]
NOCALL   * * * * * *  L
default  * * * * * *  - root   /usr/local/sbin/ax25d-test.py   ax25dtest hg2ecz %S