„Ax25d” változatai közötti eltérés
(Első verzió) |
|||
| 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é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ő. | ||
| + | |||
| + | <HIGHLIGHTSYNTAX language="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" | ||
| + | |||
| + | # Egy parancssor beolvasasa. Ne modositsd, mert igy a jo. | ||
| + | |||
| + | def parancsok_fogadasa(): | ||
| + | # Elokeszitjuk a parancsokat | ||
| + | cmd={} | ||
| + | cmd['list']=re.compile("^list"); | ||
| + | |||
| + | # 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 | ||
| + | |||
| + | # 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): | ||
| + | f=os.popen("ls -l /", "r") | ||
| + | while (1): | ||
| + | sor=f.readline() | ||
| + | if not sor: break | ||
| + | print sor, | ||
| + | |||
| + | # "quit" parancs | ||
| + | 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." | ||
| + | |||
| + | # Főprogram | ||
| + | ax25d_argumentum_ellenorzes() | ||
| + | bejelentkezoszoveg() | ||
| + | parancsok_fogadasa() | ||
| + | |||
| + | print "Remelem tetszett a pelda!" | ||
| + | print "73!" | ||
| + | </HIGHLIGHTSYNTAX> | ||
| + | |||
| + | '''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 2007. augusztus 30., 22:16-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ő.
<HIGHLIGHTSYNTAX language="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"
- Egy parancssor beolvasasa. Ne modositsd, mert igy a jo.
def parancsok_fogadasa():
# Elokeszitjuk a parancsokat
cmd={}
cmd['list']=re.compile("^list");
# 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
# 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):
f=os.popen("ls -l /", "r")
while (1):
sor=f.readline()
if not sor: break
print sor,
# "quit" parancs
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."
- Főprogram
ax25d_argumentum_ellenorzes() bejelentkezoszoveg() parancsok_fogadasa()
print "Remelem tetszett a pelda!" print "73!" </HIGHLIGHTSYNTAX>
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