www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Froling - branje in obdelava podatkov

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
satelitko
Član
Član



Pridružen-a: Pon 19 Apr 2004 13:27
Prispevkov: 1753
Aktiv.: 7.86
Kraj: Radovljica

PrispevekObjavljeno: Tor Dec 20, 2016 8:30 pm    Naslov sporočila:  Froling - branje in obdelava podatkov Odgovori s citatom

Iz kotla na polena Froling S4 iz COM 2 stalno špricajo podatki v smislu:

$ Ogenj ugasnjen;0005;1;1;zst;Kesseltemp.;0050;2 ;2;°C;Abgastemp.;0031;3;1;°C;Abgastemp S;0041;11;1;°C;Kesselstrg ;0100;4;1;%;Primärluft ;0100;5;1;%;Rest O2 ist;0019;6;10;%;O2 Regler ;0000;7;1;%;Sekundärluft;0000;8;1;%;Sau gzug Soll;0000;9;1;%;Saugzug Ist;0000;10;1;U;Einschub Ist;0000;12;1;%;O2 Regler Pell ;0100;13;1;%;Füllstand: ;0000;14;207;%;Ansauggeschw.;0000;15;100 ;m/s;Strom Austrags;0000;16;1000;A;Fühler 1;0254;17;2;°C;Kesselsoll ;0000;18;2;°C;Pufferoben ;0123;20;2;°C;Pufferunten ;0092;21;2;°C;Pufferpumpe ;0000;22;1;%;Boiler 1;0096;23;2;°C;Vorlauf 1;0053;24;2;°C;Vorlauf 2;0050;25;2;°C;HK Pumpe 1;0000;26;1; ;HK Pumpe 2;0000;27;1; ;Aussentemp;0039;28;2;°C;Kollektortemp; 0000;29;2;°C;Betriebsstunden;0009;30;1; h;Fehler;Kein Fehler ;99;1; ;$ Ogenj ugasnjen;0005;1;1;zst;

.......pa spet enako naprej.

Kako bi bilo najenostavneje te podatke stalno osvežene "ujeti" in sortirati v pregledno obliko na monitorju da recimo dobim takole obliko:

Ogenj ugasnjen; 1;zst;
Kesseltemp.; 2;°C;
Abgastemp.; 1;°C;
Abgastemp S; 1;°C;
Kesselstrg ; 4;1;%;
Primärluft ; 5;1;%;
Rest O2 ist; 10;%;
O2 Regler ; 1;%;
Sekundärluft; 1;%;
Saugzug Soll; 1;%;
Saugzug Ist; 1;U;
Einschub Ist; 1;%;
O2 Regler Pell ; 1;%;
Füllstand: ; 207;%;
Ansauggeschw.; 100 ;m/s;
Strom Austrags; 1000;A;
Fühler 1 ;2;°C;
Kesselsoll ; 2;°C;
Pufferoben ; 2;°C;
Pufferunten ; 2;°C;
Pufferpumpe ; 1;%;
Boiler 1; 2;°C;
Vorlauf 1; 2;°C;
Vorlauf 2; 2;°C;
HK Pumpe 1; 1; ;
HK Pumpe 2; 1; ;
Aussentemp; 2;°C;
Kollektortemp; 2;°C;
Betriebsstunden; 1; h;
Fehler;Kein Fehler ; 1;

Seveda bo naslednji korak shranjevanje odčitkov in risanje grafov...

Debata o tem je sicer pred leti tekla na enem drugem forumu, pa je tam vse zamrlo, linki ne delujejo več in bo očitno treba začet od nule.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
frenki
Moderator
Moderator



Pridružen-a: Ned 23 Feb 2003 21:26
Prispevkov: 6555
Aktiv.: 29.40
Kraj: Ljubljana (JN76GB)

PrispevekObjavljeno: Tor Dec 20, 2016 9:17 pm    Naslov sporočila:   Odgovori s citatom

Tole tvojo obliko si že malce predelal? Če prav vidim, imaš za posamezno obvestilo podatke v petih poljih ločeno s podpičji?
Koda:
1A2420
Ogenj ugasnjen;0005;1;1;zst;
Kesseltemp.;0050;2 ;2;°C;
Abgastemp.;0031;3;1;°C;
Abgastemp S;0041;11;1;°C;
Kesselstrg ;0100;4;1;%;
Primärluft ;0100;5;1;%;
Rest O2 ist;0019;6;10;%;
O2 Regler ;0000;7;1;%;
Sekundärluft;0000;8;1;%;
Sau gzug Soll;0000;9;1;%;
Saugzug Ist;0000;10;1;U;
Einschub Ist;0000;12;1;%;
O2 Regler Pell ;0100;13;1;%;
Füllstand: ;0000;14;207;%;
Ansauggeschw.;0000;15;100 ;m/s;
Strom Austrags;0000;16;1000;A;
Fühler 1;0254;17;2;°C;
Kesselsoll ;0000;18;2;°C;
Pufferoben ;0123;20;2;°C;
Pufferunten ;0092;21;2;°C;
Pufferpumpe ;0000;22;1;%;
Boiler 1;0096;23;2;°C;
Vorlauf 1;0053;24;2;°C;
Vorlauf 2;0050;25;2;°C;
HK Pumpe 1;0000;26;1; ;
HK Pumpe 2;0000;27;1; ;
Aussentemp;0039;28;2;°C;
Kollektortemp; 0000;29;2;°C;
Betriebsstunden;0009;30;1; h;
Fehler;Kein Fehler ;99;1; ;
1A2420
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
satelitko
Član
Član



Pridružen-a: Pon 19 Apr 2004 13:27
Prispevkov: 1753
Aktiv.: 7.86
Kraj: Radovljica

PrispevekObjavljeno: Tor Dec 20, 2016 10:17 pm    Naslov sporočila:   Odgovori s citatom

Ja, hotel sem pokazat, da bi rad podatke, ki priletijo "v kepi" nekako razrezal, ločil in jih prikazoval vsakega posebej, sproti osveženega.
Bo držalo, vsak podatek ima 5 polj.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tom_II
Član
Član



Pridružen-a: Pon 03 Dec 2007 14:08
Prispevkov: 71
Aktiv.: 0.36
Kraj: Primorska

PrispevekObjavljeno: Sre Dec 21, 2016 8:50 am    Naslov sporočila:   Odgovori s citatom

Mogoče bo koristilo.
Na tem forumu je bilo govora o branju podatkov in op programu.
https://www.ingenium.si/prometej/index.php?action=forum&tid=118&page=22
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
satelitko
Član
Član



Pridružen-a: Pon 19 Apr 2004 13:27
Prispevkov: 1753
Aktiv.: 7.86
Kraj: Radovljica

PrispevekObjavljeno: Sre Dec 21, 2016 8:57 am    Naslov sporočila:   Odgovori s citatom

Ne bo koristilo, ker o tem pišem v prvem postu, pa je vse mrtvo... Očitno vsem vse dela...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
blay44
Član
Član



Pridružen-a: Ned 19 Dec 2010 18:17
Prispevkov: 603
Aktiv.: 3.71

PrispevekObjavljeno: Sre Dec 21, 2016 1:54 pm    Naslov sporočila:   Odgovori s citatom

Zanimivo je tole.
Verjetno ima pec kako softverski (xon/xoff) ali pa strojni protokol.
Sicer je potrebno paziti na zabitost seriskega medpomnilnika.

Malo sem se med malico poigral z razbijanjem podatka.

Koda v basicu pa je taka:
Koda:

Public Class Form1
    ' postavitev odvisno od projekta
    Dim podatek As String
    Dim kontrolnaDolzina As Integer
    Dim start As Integer
    Dim pozicija As Integer
    Dim dolzina As Integer
    Dim vrsta As String
   
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       
        ' mimo grede postavi sprejemljivke
        start = 1
        podatek = "$ Ogenj ugasnjen;0005;1;1;zst;Kesseltemp.;0050;2 ;2;°C;Abgastemp.;0031;3;1;°C;Abgastemp S;0041;11;1;°C;Kesselstrg ;0100;4;1;%;Primärluft ;0100;5;1;%;Rest O2 ist;0019;6;10;%;O2 Regler ;0000;7;1;%;Sekundärluft;0000;8;1;%;Sau gzug Soll;0000;9;1;%;Saugzug Ist;0000;10;1;U;Einschub Ist;0000;12;1;%;O2 Regler Pell ;0100;13;1;%;Füllstand: ;0000;14;207;%;Ansauggeschw.;0000;15;100 ;m/s;Strom Austrags;0000;16;1000;A;Fühler 1;0254;17;2;°C;Kesselsoll ;0000;18;2;°C;Pufferoben ;0123;20;2;°C;Pufferunten ;0092;21;2;°C;Pufferpumpe ;0000;22;1;%;Boiler 1;0096;23;2;°C;Vorlauf 1;0053;24;2;°C;Vorlauf 2;0050;25;2;°C;HK Pumpe 1;0000;26;1; ;HK Pumpe 2;0000;27;1; ;Aussentemp;0039;28;2;°C;Kollektortemp; 0000;29;2;°C;Betriebsstunden;0009;30;1; h;Fehler;Kein Fehler ;99;1; ;"
        podatek = Trim(podatek)
        kontrolnaDolzina = Len(podatek)
        TextBox1.Text = podatek
     
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        'moja rutina     
        Dim stevnik As Byte
        If pozicija < kontrolnaDolzina Then  'vzame vrsto
            For stevnik = 1 To 5            'zajemanje petih podatkov
                pozicija = InStr(start, podatek, ";", 1)    'izracun pozicije zajema
                dolzina = pozicija - start  'izracun dolzine posameznega podatka
                'izluscitev posameznega podatka in priprava za vpis  TextBox
                vrsta = vrsta & Mid(podatek, start, dolzina) & "  "
                TextBox2.Text = vrsta   'vpis v TexBox
                start = pozicija + 1    'kazalec naslednje pozicije iskanja
            Next stevnik
            vrsta = vrsta + vbCrLf  'priprava za vpis nasljednijih petih posameznih
            'podatkov v novo vrsto
        End If
        'cela vrsta je prebrana

    End Sub
End Class


Seveda se zadeva prilagodi po svojih potrebah. To je spisano na hitro.
V kakšnem javi, c, itd.. pa zdajle nimam casa. Je prevec vejic, oklepajev, knjiznic.

LP



kontrolaPeci.png
 Opis:
 Velikost datoteke:  126.11 KB
 Pogledana:  15 krat

kontrolaPeci.png


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
frke
Član
Član



Pridružen-a: Ned 18 Sep 2005 14:41
Prispevkov: 212
Aktiv.: 0.95
Kraj: Logatec

PrispevekObjavljeno: Sre Dec 21, 2016 11:51 pm    Naslov sporočila:   Odgovori s citatom

Jaz bi se lotil tega z regex izrazom.
".*?;.*?;.*?;.*?;.*?;" - pet izrazov, ločenih z vejico je ena vrstica

Ravnotako potem razrežeš besede znotraj vrstice, nato jih spraviš v bazo itd,itd

Primer v php:


Koda:

<?php
$string='Ogenj ugasnjen;0005;1;1;zst;Kesseltemp.;0050;2 ;2;°C;Abgastemp.;0031;3;1;°C;Abgastemp S;0041;11;1;°C;Kesselstrg ;0100;4;1;%;Primärluft ;0100;5;1;%;Rest O2 ist;0019;6;10;%;O2 Regler ;0000;7;1;%;Sekundärluft;0000;8;1;%;Sau gzug Soll;0000;9;1;%;Saugzug Ist;0000;10;1;U;Einschub Ist;0000;12;1;%;O2 Regler Pell ;0100;13;1;%;Füllstand: ;0000;14;207;%;Ansauggeschw.;0000;15;100 ;m/s;Strom Austrags;0000;16;1000;A;Fühler 1;0254;17;2;°C;Kesselsoll ;0000;18;2;°C;Pufferoben ;0123;20;2;°C;Pufferunten ;0092;21;2;°C;Pufferpumpe ;0000;22;1;%;Boiler 1;0096;23;2;°C;Vorlauf 1;0053;24;2;°C;Vorlauf 2;0050;25;2;°C;HK Pumpe 1;0000;26;1; ;HK Pumpe 2;0000;27;1; ;Aussentemp;0039;28;2;°C;Kollektortemp; 0000;29;2;°C;Betriebsstunden;0009;30;1; h;Fehler;Kein Fehler ;99;1; ;';

preg_match_all("/.*?;.*?;.*?;.*?;.*?;/", $string, $output_array);

var_dump($output_array);


?>


rezultat:
Koda:

array(1) {
  [0]=>
  array(30) {
    [0]=>
    string(28) "Ogenj ugasnjen;0005;1;1;zst;"
    [1]=>
    string(25) "Kesseltemp.;0050;2 ;2;░C;"
    [2]=>
    string(23) "Abgastemp.;0031;3;1;░C;"
    [3]=>
    string(25) "Abgastemp S;0041;11;1;░C;"
    [4]=>
    string(23) "Kesselstrg ;0100;4;1;%;"
    [5]=>
    string(23) "Primńrluft ;0100;5;1;%;"
    [6]=>
    string(24) "Rest O2 ist;0019;6;10;%;"
    [7]=>
    string(22) "O2 Regler ;0000;7;1;%;"
    [8]=>
    string(24) "Sekundńrluft;0000;8;1;%;"
    [9]=>
    string(25) "Sau gzug Soll;0000;9;1;%;"
    [10]=>
    string(24) "Saugzug Ist;0000;10;1;U;"
    [11]=>
    string(25) "Einschub Ist;0000;12;1;%;"
    [12]=>
    string(28) "O2 Regler Pell ;0100;13;1;%;"
    [13]=>
    string(26) "FŘllstand: ;0000;14;207;%;"
    [14]=>
    string(31) "Ansauggeschw.;0000;15;100 ;m/s;"
    [15]=>
    string(30) "Strom Austrags;0000;16;1000;A;"
    [16]=>
    string(22) "FŘhler 1;0254;17;2;░C;"
    [17]=>
    string(25) "Kesselsoll ;0000;18;2;░C;"
    [18]=>
    string(25) "Pufferoben ;0123;20;2;░C;"
    [19]=>
    string(26) "Pufferunten ;0092;21;2;░C;"
    [20]=>
    string(25) "Pufferpumpe ;0000;22;1;%;"
    [21]=>
    string(22) "Boiler 1;0096;23;2;░C;"
    [22]=>
    string(23) "Vorlauf 1;0053;24;2;░C;"
    [23]=>
    string(23) "Vorlauf 2;0050;25;2;░C;"
    [24]=>
    string(23) "HK Pumpe 1;0000;26;1; ;"
    [25]=>
    string(23) "HK Pumpe 2;0000;27;1; ;"
    [26]=>
    string(24) "Aussentemp;0039;28;2;░C;"
    [27]=>
    string(28) "Kollektortemp; 0000;29;2;░C;"
    [28]=>
    string(29) "Betriebsstunden;0009;30;1; h;"
    [29]=>
    string(27) "Fehler;Kein Fehler ;99;1; ;"
  }
}
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
blay44
Član
Član



Pridružen-a: Ned 19 Dec 2010 18:17
Prispevkov: 603
Aktiv.: 3.71

PrispevekObjavljeno: Tor Jan 03, 2017 8:05 pm    Naslov sporočila:   Odgovori s citatom

Dobra Frke. Podobna je SPLIT funkcija v bejziku.
Če pa se gre na server, pa itak php zmaga.
LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 75 dni


Powered by phpBB © 2001, 2005 phpBB Group