Sziasztok.
Ádáz problémám támadt (ráadásul meg is fáztam miatta).
Van egy adatfolyam, ami egy /dev/ttyUSB0-ra kötött eszközről érkezik, minden másodpercben ilyen sorokat produkál:
$GPRMC, 135426.000, A, 5310.6108, N, 00833.4541, E, 0.98, 205.20, 270215,,,A*6A
$GPGGA, 135427.000, 5310.6105, N, 00833.4545, E, 1, 05, 1.6, 9.7, M, 46.4, M,,0000*5D
$GPGSA, A, 3, 05, 30, 15, 13, 28,,,,,,,,4.0, 1.6, 3.7*3F
(..igen, egy GPS antenna NMEA mondatai)
Ez az -F kapcsolóval át van adva az awk-nak, majd a sor elején RMC adatokat tartalmazó
sorokat szűri. Ezután teszek kísérletet azok feldolgozására, amit így végzek:
135427.000
helyett másodperc elhagyásával
1354-et iratok ki. Ez sikeres.
Ezután következne ezek fájlba vagy csővezetékre küldése egy másik szkriptnek, na ez nem megy.
Azt szeretnem elérni, hogy minden egyes file csak egy sort tartalmazzon, mindig az utolsó értekkel. Elméletileg a > jel awk-ban is a felülírás jele, a >> pedig a hozzáírásé. Valahogy nem akarja...
Így fest a script jelenleg:
awk -F, '/\$GPRMC/ \
{print substr($2, 1, 4)"UTC" > "utc"} \
{print $4$5 > "LAT"} \
{print $6$7 > "LON"} \
{print $8, $9, $3} \
' /dev/ttyUSB0
exit 0
Egy másik izgalmas kérdés az, hogy a /dev/ttyUSB0 egyszeri ovasása mellett hogyan lehetne megvalósítani azt, hogy mondjuk egy
/\$GPGGA/
sor eleji illesztés segítségével onnan is kiszedjek adatokat?
Gondoltam ezzel kapcsolatosan a tee-re, de az csak file-ba ír, arra kellene egy másik script, én meg minimálisan szeretném ezt megírni.
- 2589 megtekintés
Hozzászólások
a code kapcsolo nem mukodott az elobb.
Talan most:
awk -F, '/\$GPRMC/ \
{print substr($2, 1, 4)"UTC" > "utc"} \
{print $4$5 > "LAT"} \
{print $6$7 > "LON"} \
{print $8, $9, $3} \
' /dev/ttyUSB0
exit 0
...most sem.
- A hozzászóláshoz be kell jelentkezni
A dokumentacioban is szerepel, hogy a > az *ugyanazt* a fajlt jelenti, amit nyitva tart. Azaz ha neked ez nem jo akkor zard be :-)
awk -F, '/\$GPRMC/ \
{print substr($2, 1, 4)"UTC" > "utc" ; close( "utc" );} \
{print $4$5 > "LAT"; close( "LAT");} \
{print $6$7 > "LON"; close( "LON");} \
{print $8, $9, $3} \
' /dev/ttyUSB0
A masodik kerdesedre meg az a valasz, hogy egy masodik muveletsorral azt is megoldhatnad.
Szoval a feladatot en inkabb igy csinalnam:
awk -F, '/\$GPRMC/ {
print substr($2, 1, 4)"UTC" > "utc" ; close( "utc" );
print $4$5 > "LAT"; close( "LAT");
print $6$7 > "LON"; close( "LON");
print $8, $9, $3
}
/\$GPGGA/ {
ide ;
meg ;
az ehhez ;
tartozo ;
parancsok
johetnek
direkt
irom
igy
}' /dev/ttyUSB0
- A hozzászóláshoz be kell jelentkezni
Koszonom szepen!
Ott vesztem el, hogy mi van akkor, ha az awk-nak is meg kell nyitni egy filet, ha van close().
Vadul olvastam itt:
http://hup.hu/old/gawk/tobb/gawk_toc.html
Vegul a kod ez lett:
awk -F, '/\$GPRMC/ {
print substr($2, 1, 4)"UTC" > "utc" ; close( "utc" );
print $4$5 > "lat"; close( "lat");
print $6$7 > "lon"; close( "lon");
print $8 > "cog"; close( "cog");
print $9 > "brg"; close( "brg");
print $3 > "val"; close( "val");
}
/\$GPGGA/ {
print $8/1 > "fix"; close("fix");
}' /dev/ttyUSB0
echo :)))))))
exit 0
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Ja meg egy megjegyzes, valamiert az elobb elsiklottm felette. Nem kell a \ a $ ele *ha* aposztrofok koze teszed az egeszet, ahogy irod is. A $ ugyan specialis karakter regexp-ben, de csak a minta vegen allva, te viszont nem oda tetted, szoval folosleges. Boven eleg siman /$GPGGA/ formaban irni.
- A hozzászóláshoz be kell jelentkezni
ok.
Erdekes, hogy igy ezzel a koddal a catot grepet el lehetett felejteni.
Az awk nagyon eros, jobban, mint hittem.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
awk -F, '/\$GPRMC/ \
{print substr($2, 1, 4)"UTC" > "utc" ; close( "utc" );} \
{print $4$5 > "LAT"; close( "LAT");} \
{print $4 | latconvert} \
{print $6$7 > "LON"; close( "LON");} \
{print $8, $9, $3} \
' /dev/ttyUSB0
nos, itt a negyedik sornal tettem egy probat, hogy atadjam csovezeteknek a latitude szamot. Parancssorban tokeletes. Eleresi utvonalakban benne van a file. De nem megy.
A latconvert meghiv bashban egy c-ben irt programot (gps-angle) a neki atadott paramterrel, majd a kimenetet fajlba irja.
a c kod itt van, kicsit modositva, letiltva azon sorokat, melyek nem kellettek:
cat gps-angle.c
/* http://www.silmor.de/files/angle.c */
/* forditas: */
/* gcc gps-angle.c -o gps-angle -lm */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc,char**argv)
{
double d,m=0,s=0,t;
char*np;
/*check argc*/
if(argc<2||argc>4){
fprintf(stderr,"Usage: %s degree [minutes [seconds]]\n",*argv);
fprintf(stderr,"Kiir mindent percekben.\n",*argv);
fprintf(stderr,"\n",*argv);
fprintf(stderr,"pl.: lat2min 47.234563\n",*argv);
return 1;
}
/*convert to float*/
d=strtod(argv[1],&np);
if(*np){
fprintf(stderr,"Degree parameter is not a floating point number.\n");
return 1;
}
if(argc>2){
m=strtod(argv[2],&np);
if(*np){
fprintf(stderr,"Minutes parameter is not a floating point number.\n");
return 1;
}
}
if(argc>3){
s=strtod(argv[3],&np);
if(*np){
fprintf(stderr,"Seconds parameter is not a floating point number.\n");
return 1;
}
}
/*convert to degree only*/
d+=m/60.0+s/3600.0;
// printf("degrees: %.5lf deg\n",d);
/*convert to degree plus minutes*/
t=floor(d);
m=(d-t)*60.0;d=t;
//eredeti printf("minutes: %.0lf deg %06.3lf'\n",d,m);
printf("%.0lfdeg%06.3lf'\n",d,m);
/*convert to seconds*/
t=floor(m);
s=(m-t)*60.0;m=t;
// printf("seconds: %.0lf deg %02.0lf' %04.1lf\"\n",d,m,s);
return 0;
}
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Csak jelzem, hogy a 4. sorban
{print $4 | latconvert} \
a latconvert (így, ahogy szerepel) egy AWK-változó neve lesz, amit kihelyettesít, majd a helyettesítés eredményét fogja programként elindítani az AWK. Mivel ilyen AWK-változód nincs, ennek parancssorból sem lenne szabad működnie. Tedd ugyanúgy idézőjelbe, ahogy az átirányításokat:
{print $4 "| latconvert" } \
És ha a PATH-on a latconvert megtalálható, akkor van esélyed.
- A hozzászóláshoz be kell jelentkezni
valahogy igy?
awk '{ print $1 > "kiindulas"
command = "latconvert > vegcel"
print $1 | command }' forras
Holnap kiprobalom, ma mar nem van agyam hozza.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Ja így, de vigyázz, mert cső esetén érhetnek meglepetések:
$ awk 'BEGIN { cmd = "tail -1 > lo" } /^a/{ print $0 | cmd } END { print NR }'
alma
asztal
szilva
barack
ajtó
szék
6
$ cat lo
ajtó
$
Ez eddig jónak tűnik. Cseréljük ki a tail parancsot head-re (akinek nem nagyon van oka, hogy az első sor után tovább olvasson a csőből)!
$ awk 'BEGIN { cmd = "head -1 > lo" } /^a/{ print $0 | cmd } END { print NR }'
alma
asztal
$
Itt nem én fejeztem be, hanem bezárt a cső, ezért befejeződött az awk futása. (És ami külön szép, hogy az END mintában levő műveletre tett nagy ívben.)
Fenti viselkedés a rendelkezésre álló 3-féle AWK megvalósításból kettő esetén látható; az originál, Kerningan-féle One-True-AWk-nál (nawk) és a GNU-AWK-nál (gawk), míg a Mike Brennan-féle mawk szépen megcsinálja a dolgát. (A gawk még jelzi is, hogy mi a baj:
gawk: cmd. line:1: (FILENAME=- FNR=2) fatal: print to "head -1 > lo" failed (Broken pipe)
És hogy a dolog még izgalmasabb legyen, ha az adat nem a billentyűzetről jön (tehát pl awk < file , parancs | awk , vagy éppen awk << EOF formában hívom meg), akkor szépen működik mind a 3 awk. Szóval a tesztek nem minden esetben ugyanúgy viselkednek, mint az éles környezet :-D
- A hozzászóláshoz be kell jelentkezni
Na, akkor 1-2 dolog:
Nemtom mi lesz a vege, de erre vagy valami komolyabb scriptnyelvvel (vagy akar C-vel) jobban jarsz. Gondolom nem csak annyit szeretnel, hogy 1-1 file-ba beleirod a koordinatakat, hanem utana valamit csinalnal is vele. (amugy meg ha az RPi-d kartyajan futtatod, eleg hamar bedoglik tole a flash, szoval ramdisk is kelleni fog - attol fuggoen mi a vegcel)
Altalaban a GPGGA elobb jon 1-1 blokkban, a GPRMC meg a vegen szokott lenni, szoval a koordinatakat inkabb onnan szedd!
Ha mar a koordinataknal tartunk, NMEA-ban eleg hulye formatumban jon, at kell szamolnod:
DDMM.MMMM az eszak-deli DDDMM.MMMM a kelet-nyugati irany. Nehany vevonel a tizedesjegyek hossza elter, 3-8 kozott lattam mar peldat (a 4 a leggyakoribb).
A checksumot ellenorizd mielott elhinned amit talaltal benne, es felulirnad az utolso biztos ertekeket!
A vesszok utani space tenyleg ott van, vagy csak te masoltad igy be? (tippre nincs ott, egyreszt meg nem lattam ilyen space-es valtozatot, masreszt igy a checksum nem jo)
Minimalis modositassal menni fog GLONASS-os vevovel is: GPGGA helyett G[PLN]GGA kell, ill. RMC-re ugyanez.
Ne kodolj, inkabb nezz korul Bremaban!
--
What's worse than finding a worm in your apple?
Finding a U2 album on your iPhone.
- A hozzászóláshoz be kell jelentkezni
Sorban valaszolok.
Kulonben legutolso mondatodbol kikovetkeztetve nem tudom honnan jottel ra, hogy ki vagyok :)
>Nemtom mi lesz a vege,
egy gps-logger, ami neha egy nokia kijelzore kuldi a jelet ha akarom. De nem mindig akarom.
>de erre vagy valami komolyabb scriptnyelvvel (vagy akar C-vel) jobban jarsz.
a szogkonverziot egy c-ben irt program vegzi, az lcd meghajtasat egy python kod. A tobbit a bash.
Gondolom nem csak annyit szeretnel, hogy 1-1 file-ba beleirod a koordinatakat, hanem utana valamit csinalnal is vele. (amugy meg ha az RPi-d kartyajan futtatod, eleg hamar bedoglik tole a flash, szoval ramdisk is kelleni fog - attol fuggoen mi a vegcel)
a nehany file, amibe a dumpolasnal irok, az ramdrive. 50 MB mindenre eleg /dev/shm
>Altalaban a GPGGA elobb jon 1-1 blokkban, a GPRMC meg a vegen szokott lenni, szoval a koordinatakat inkabb onnan szedd!
Ezt nem figyeltem.
Azon kivul hogy hany muhold latszik, gyakorlatilag minden ott van, ami az lcdre kell neha. A gpx fileformatum nem erdekel, sima nyers NMEA-kat akarok loggolni. Szerintem kisebb a file es tobb az info.
>Ha mar a koordinataknal tartunk, NMEA-ban eleg hulye formatumban jon, at kell szamolnod:
DDMM.MMMM az eszak-deli DDDMM.MMMM a kelet-nyugati irany. Nehany vevonel a tizedesjegyek hossza elter, 3-8 kozott lattam mar peldat (a 4 a leggyakoribb).
Igen, ahany antenna annyifele. de tudok modulo szamolni. Legalabbis remelem.
>A checksumot ellenorizd mielott elhinned amit talaltal benne, es felulirnad az utolso biztos ertekeket!
A Valid ertek nem eleg mondjuk az RMC-bol? (igen, gyanum szerint nem, de checksum ellenorzesre nem talaltam csak weblapokat. Semmi bash kod vagy c)
>A vesszok utani space tenyleg ott van, vagy csak te masoltad igy be?
Ott van, egy usb-s regi vacakot raktam ra, erosen arnyekolva.
>Minimalis modositassal menni fog GLONASS-os vevovel is: GPGGA helyett G[PLN]GGA kell, ill. RMC-re ugyanez.
L80-as antenna lesz (60 keresocsatorna) az rpire forrasztva, melle egy rtc oraval ami mar megy.
>Ne kodolj, inkabb nezz korul Bremaban!
4 honapja vagyok itt..
Rajottem kozben, hogy honnan tudod, hol vagyok. En magam irtam le! :)))
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
off
Gyanítom, a témaindítóban lévő koordinátákból jött rá, merre vagy.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
nekem is leesett
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Tippre az 5110 kijelzoje eleg keveset fogyaszt, a GPS modul sokkal tobbet. A RPi meg plane. (de persze sporolhatsz az arammal ettol meg)
Ezzel a C+python+bash komboval kicsit elbonyolitottad, de vegulis mukodhet.
Minden NMEA mondat igy epul fel:
$szoveg*XX/r/n
Namost, a $ es * kozti szoveget byte-onkent xor-olod egymassal, akkor a vegen levo XX hexa erteket kell, hogy kapd. Ha hibas, akkor jelzed+eldobod. (a beszurt space-ek miatt az 1. es 3. sorod hibas, a kozepsoben paros space van, ugyhogy az pont kiejti egymast - ebbol is latszik, hogy azert a checksum sem biztos)
Ha validnak jelzi, az azt jelenti, hogy van GPS fixed. Ha a checksum nem stimmel, az meg azt, hogy akar volt fix akar nem, kommunikacios hiba volt a GPS vevo es a RPi kozott. Azert a 8N1 nem a legbiztosabb dolog, foleg TTL jelszinten (vagy pl. 3V-on).
Az NMEA valoban jobb valasztas a GPX-nel, mert sokkal tobb info van benne. Viszont nem lesz kicsi, sot!
Az adatok jelentos reszet a GSV adja, illetve a nem szabvanyos mondatok (ez persze vevotol fugg), ami nincs benne a GPX-ben.
Azert valami tomoritoprogramot meg tartalek SD kartyat/pendrive-ot vigyel magaddal szerintem. Az NMEA nagyon jol tomoritheto. Viszont van 256MB-ot meghalado NMEA logom, szoval figyelned kell majd.
Egyebkent a datumot+idot beallithatod a GPS alapjan is (root joggal), akkor csak arra az idore kell az ora amig nincs fix. Ha jol emlekszem, korabban valami kajakkal foglalkoztal, vizen nincsenek alagutak meg felhokarcolok, szoval jo lesz a vetel.
(Egyebkent egy leselejtezett Androidos telefonnal mar reg keszen lennel. :) )
Ja, es igen, a koordinatakbol tudtam. A kornyekbeli orszagokat tobbe-kevesbe megtippelem koordinatakbol, de Bremat mar terkep alapjan tudtam:
nyos@hex:~$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 53+10.6108/60.0
53.17684666666667
>>> 8+33.4541/60.0
8.557568333333334
>>>
Aztan Gugli mapsbe bemasoltam a 53.176846 8.557568 reszet. (tudom, konkurencia, de most gyorsabb volt, mint iGOval :) )
Osszedobtam egy checksum ellenorzot (majd a hibaertekeket talald ki):
http://pastebin.com/y0f4JDqm
Itt meg egy gyors teszt:
http://pastebin.com/AmGciqJa
--
What's worse than finding a worm in your apple?
Finding a U2 album on your iPhone.
- A hozzászóláshoz be kell jelentkezni
Az rtc oranak kulon aramforrasa van, az nem ront a dolgokon. Tudom, hogy ntp mukodhet gpsd segitsegevel is, de akkora szivasom volt vele egy honapig, hogy rendeltem 500 ft-ert kinabol egy rtc orat.
Ha az nmea sentences satellitekre vonatkozo sorait dobom, a GSA-t is, a megmaradt nmea dump mar kellemes meret szerintem. Amugy a gpx xml kodja, az a rengeteg <>formazas szinten nagy meret.
Nincs androidos telefonom, abban agps van, itt meg egy durvabb antenna figyel. Azt szeretnem, hogy kizarolag azt csinalja amit kerek tole, ne tobbet.
Neztem mit csinaltal a python parancssoraban, aszem nekem is osztanom kell 60-nal, ugy kell atadnom a c programnak. Tulajdonkeppen a gpsd altal adott szambol perceket akarok kapni pl. igy:
53.176846666 N
helyett:
53 deg 10.611' N
A hajosoknal a radioforgalmazasban ez a standard.
A c kodot nem sikerult forgatnom:
# gcc checksum.c -o checksum -lm
checksum.c: In function ‘main’:
checksum.c:60:3: error: expected declaration or statement at end of input
Kosz az infokat :)
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
[code] vs. <code> ?
Hopsz, nem ide akartam, de mostmár itt marad.
-----
(&%;_98\<|{3W10Tut,P0/on&Jkj"Fg}|B/!~}|{z(8qv55sr1C/n--k**;gfe$$5a!BB]\.-
- A hozzászóláshoz be kell jelentkezni
gf4rg4g
g4g4
5t43t5
54t
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Hat, akkor most javaslok egy kilon sort az elonezet es bekuldes gomb folotti 3 sor folytatasahoz:
"Ha forraskodot akarsz bekuldeni..." kezdettel.
Nem tudom hanyan szivtak ezzel, de en lenni feledekeny, amugy meg javitani sem tudom, mert ha hozzaszoltak, mar nincs jogosultsagom.
Igy meg a python kod amit beirtam hasznalhatatlan.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
"Hat, akkor most javaslok"
Hajaj, rázod itten a trey pofonfáját felelőtlenül...
Majd böngészőpluginként megírja valaki ezt.
Is.
- A hozzászóláshoz be kell jelentkezni
A GPS-es idot azert irtam, mert - az RTC oraval ellentetben - biztos nem maszik el idovel. De gondolom neked nem kell akkora pontossag.
Az nmea tarolas elotti szurese jo gondolat ha nem kell csak egy resze. Igy valoban kordaban tarthato.
Ha deg+min formatum kell, akkor nem kell semmit alakitanod, az NMEA-ban pont igy jon. En mondjuk nem szeretem ezt a format.
$GPRMC, 135426.000, A, 5310.6108, N, 00833.4541, E, 0.98, 205.20, 270215,,,A*6A
ez ugye pont 53 deg 10.6108 min north, 008 deg 33.4541 east
Egyebkent nem meglepo, hogy ha a hajozasban ez a megszokott, ok is ezt hasznaljak, ugyanis az NMEA-ban az M a marine-t jelenti.
A checksum.c 60. soraban egy return 0; van, plusz egy komment. Esetleg megnezheted, hogy a komment nelkul lefordul-e (nehany nagyon regi fordito nem szerette a // kommentet csak a /*...*/ format).
Furcsa egyebkent, mert nalam pont GCC-vel fordul. Warning nelkul.
--
What's worse than finding a worm in your apple?
Finding a U2 album on your iPhone.
- A hozzászóláshoz be kell jelentkezni
Akkora orapontossag nem kell, igy is levagtam a masodperceket. Ha quadrokoptert vezerelnek, akkor kellene...
Kiszedtem a kommentet a c kodbol, igy lefordult warning nelkul.
Gondolom '' koze zerva kell beadnom neki az ebedet, aztan kiirja van-e baj vele.
2 perc alatt nem jottem ra, mit ir ki ha a mondat jo, de meg van egy napom ra.
Aztam valahogy beepitem az awk-s scriptbe, ebed utan kitalalom hogyan.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
^^"Itt meg egy gyors teszt:
http://pastebin.com/AmGciqJa "
Ha jo, akkor semmit nem iratok ki vele, viszont 0 lesz a visszateresi erteke (scriptbol igy a legjobb talan). Persze betehetsz valami szoveget.
--
What's worse than finding a worm in your apple?
Finding a U2 album on your iPhone.
- A hozzászóláshoz be kell jelentkezni
ugy igazsagos, hogy kiirom azt a teljes kodot is, ami kidobja a kijelzore a kinyert adatokat.
Meg szepitem, nem igy fog kinezni. Egyelore annak orulok, hogy 3 lepesen tul vagyok.
1. kiirok az lcdre
2. megmondom neki hogy ezt honnan tegye
3. azt a konyvtarat amibol a mar csinositott adatokat szedi, elo is tudom allitani a gpsd-bol
Szoval itt a kod:
////////////////
#!/usr/bin/env python
# ez a script mar egy (/dev/shm-be linkelt)
# konyvtarbol olvassa az adatokat.
# de meg nem tud sortorest
# es csak akkor ir az lcdre adatot,
# ha a fileok tartalma nem ures.
# A kod ronda, de nekem tetszik :)
# -*- coding: utf-8 -*-
import pcd8544.lcd as lcd
import httplib, time, os, sys, json
if not os.geteuid() == 0:
sys.exit('Script must be run as root')
ON, OFF = [1, 0]
try:
lcd.init()
lcd.cls()
# lcd.backlight(ON)
lcd.set_contrast(40)
fname='./gps-log/val'
for a in open(fname, 'r').readlines():
a=a.rstrip() # sorvegi \n levagasa
print "GPS-logger:",a
lcd.text("GPS-logger:")
lcd.text((a))
lcd.define_custom_char([0x00, 0x06, 0x09, 0x09, 0x06])
lcd.text("\x7f ")
fname='./gps-log/lat'
for b in open(fname, 'r').readlines():
b=b.rstrip() # sorvegi \n levagasa
print "LAT:",b
# lcd.text("LAT:")
lcd.text((b))
lcd.text(" ")
fname='./gps-log/lon'
for c in open(fname, 'r').readlines():
c=c.rstrip() # sorvegi \n levagasa
print "LON:",c
# lcd.text("LON:")
lcd.text((c))
lcd.text(" ")
fname='./gps-log/utc'
for d in open(fname, 'r').readlines():
d=d.rstrip() # sorvegi \n levagasa
print " at ",d," UTC "
lcd.text(" at ")
lcd.text((d))
lcd.text(" ")
fname='./gps-log/cog'
for e in open(fname, 'r').readlines():
e=e.rstrip() # sorvegi \n levagasa
print "COG:",e
lcd.text("COG: ")
lcd.text((e))
lcd.text(" knots")
fname='./gps-log/brg'
for f in open(fname, 'r').readlines():
f=f.rstrip() # sorvegi \n levagasa
fname='./gps-log/fix'
for g in open(fname, 'r').readlines():
g=g.rstrip() # sorvegi \n levagasa
print "BRG:",f," FIX:",g
lcd.text("BRG:")
lcd.text((f))
lcd.text("FIX:")
lcd.text((g))
# lcd.text(sys.argv[1])
# time.sleep(1);
except KeyboardInterrupt:
pass
finally:
# lcd.cls()
lcd.backlight(OFF)
- A hozzászóláshoz be kell jelentkezni
a forum forraskod-idezese nem megy megint :(
- A hozzászóláshoz be kell jelentkezni
Nézd csak, mim van? ;)
#!/bin/bash
AWK_SCRIPT='
BEGIN {
spaces=" ";
sp=length(spaces);
FS="";
print "<code>";
}
{
linestr="";
for (i=1; i<=NF; i++) {
if ($i=="\t") {
splen=length(linestr)%sp;
linestr=linestr substr(spaces, ++splen);
} else {
linestr=linestr $i;
}
}
gsub(/\&/, "\\&", linestr);
gsub(/ /, "\\ ", linestr);
gsub(/</, "\\<", linestr);
gsub(/>/, "\\>", linestr);
print linestr;
}
END {
print "</code>";
}
'
if [ $# -gt 1 ]; then
echo 'Too many input parameters' >&2
exit 1
fi
{
if [ $# -eq 1 ]; then
if [ -r "$1" ]; then
awk "$AWK_SCRIPT" "$1"
else
echo "File '$1' not readable" >&2
exit 1
fi
else
xsel -pol /dev/null | awk "$AWK_SCRIPT"
fi
} | xsel -bil /dev/null
exit 0
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Offtopic de nagyon: mi a fene a -pol / -bil opciók az xsel -nél? A saját manuálomban ebből csak a -p opciót találtam meg egyedül.
- A hozzászóláshoz be kell jelentkezni
Ez talán közelebb visz a megfejtéshez.
============================================
"Share what you know. Learn what you don't."
- A hozzászóláshoz be kell jelentkezni
Mint az ls-nél a -lda.
- A hozzászóláshoz be kell jelentkezni
Nem az a baj, hogy nincs ilyen nevű (-pol / -bil ) opcióm. Hanem az, hogy nincsenek meg az összetevői; -p épp van, de a többi - -o, -l, -i, -b - már nincsenek . (De Légrádi linkje megvilágosította az elmémet. Abban az xsel-ben vannak ilyen opciók. Csak épp az én X-emben levő xsel-t teljesen más írta, teljesen - no jó - jelentősen eltérő opciókészlettel. De legalább a funkciója ugyanaz. Kár, hogy eddig azt hittem, azért ilyen szinten nincs különbség Linux és FreeBSD között.) De most tényleg, mi a fenéért van (legalább) két xsel parancs ennyire eltérő szintaxissal?
- A hozzászóláshoz be kell jelentkezni
Jaaaaa...
- A hozzászóláshoz be kell jelentkezni
komolyan csinalok egy videot arrol, hogy hova irom be a
print "";
-nek megfelelo reszeket a hozzaszolasban.
Van amikor megy, van amikor nem. Amikor szerkesztesre megnyitom, persze megvannak a space-ek.
Ezert nem ertem.
////////////
kozben rajottem a [] zarojelek elonyere a <> helyett..
Trey: kosz a javitast a forraskod-idezeteknel
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Én a kacsacsőrös code tag-et használom a fenti scriptemmel. HTML-ben az egynél több szóköz eltűnik, szóval marad az megoldásnak. ;)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Viszont van a témához is gondolatom. Az a gyanúm, nem file-t kellene írnod, mert az csak hízik, de minek. Sokkal inkább named pipe-ot - avagy fifo - volna jó használni. Az egyik végén tunkolod bele az adatot, a másik végén szeded ki, és ez mehet a végtelenségig.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
A nyers NMEA eleve kell maradektalanul, a koztes dumpok meg allandoan egysorosak es mindig felulirodnak, ezert van ramdrive nekik. Meg persze hogy ne legyenek sehol fizikailag kikapcsolaskor.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Szép topik, gratulálok! (Én ezt biztos, hogy nem scripttel
oldottam volna meg.)
> Sol omnibus lucet.
- A hozzászóláshoz be kell jelentkezni