„Ax25d” változatai közötti eltérés
(+if __name__ == '__main__':) |
|||
(2 közbenső módosítás ugyanattól a szerkesztőtől nincs mutatva) | |||
27. sor: | 27. sor: | ||
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ő. | 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 | #!/usr/bin/python -u | ||
# -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||
44. sor: | 44. sor: | ||
print "Pontos helyi ido: %04d.%02d.%02d %02d:%02d:%02d" % (t[0], t[1], t[2], t[3], t[4], t[5]) | 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" | print "Probald ki a 'list' parancsot. Vegul a 'quit' paranccsal tudsz kilepni.\n" | ||
− | |||
− | |||
def parancsok_fogadasa(): | def parancsok_fogadasa(): | ||
− | |||
− | |||
− | |||
− | |||
# Elokeszitjuk a nem pufferelt (realtime) adatbevitelt | # Elokeszitjuk a nem pufferelt (realtime) adatbevitelt | ||
stdinfd = sys.stdin.fileno() | stdinfd = sys.stdin.fileno() | ||
62. sor: | 56. sor: | ||
parancssor+=ch | parancssor+=ch | ||
return parancssor | 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. | # A vegtelen ciklus, amely a parancsokat egymas utan hajtja vegre. A quit lep ki belole. | ||
69. sor: | 67. sor: | ||
# A beolvasott parancssorbol a list, quit szavak keresese. Talalat eseten vegrehajtasa. | # A beolvasott parancssorbol a list, quit szavak keresese. Talalat eseten vegrehajtasa. | ||
# "list" parancs | # "list" parancs | ||
− | if cmd['list'].match(parancssor): | + | if cmd['list'].match(parancssor): # regexp elonye, hogy kesobb a "list" szo utan |
− | f=os.popen("ls -l /", "r") | + | f=os.popen("ls -l /", "r") # tetszoleges argumentum is kerulhet. |
while (1): | while (1): | ||
sor=f.readline() | sor=f.readline() | ||
76. sor: | 74. sor: | ||
print sor, | print sor, | ||
− | # "quit" parancs | + | # "quit" parancs - csak egyszeruen. |
elif parancssor == "quit": | elif parancssor == "quit": | ||
fd.close() | fd.close() | ||
85. sor: | 83. sor: | ||
print "Hibas parancs: %s"%parancssor+". Hasznalhato parancsok: list es quit." | print "Hibas parancs: %s"%parancssor+". Hasznalhato parancsok: list es quit." | ||
− | # | + | if __name__ == '__main__': # Foprogram |
− | ax25d_argumentum_ellenorzes() | + | ax25d_argumentum_ellenorzes() |
− | bejelentkezoszoveg() | + | bejelentkezoszoveg() |
− | parancsok_fogadasa() | + | parancsok_fogadasa() |
− | print "Remelem tetszett a pelda!" | + | print "Remelem tetszett a pelda!" |
− | print "73!" | + | 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: | '''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: |
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">
- !/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