obróbki danych HEX/kod U2/RS23

Witajcie,

Jest sobie pewne ustrojstwo, które wyniki pomiarów wypluwa przez RS232 w postaci paczki kilkunastu bajtów co 10ms przy prędkości 115200. Zanim stworzę programik na PC, który te dane będzie odbierał i rysował piękne wykresy "real time" chciałbym zobaczyć czy w ogóle te dane mają sens. Na razie radzę sobie tak: odpalam jakiś TeraTerm (słynny bray-terminal nie ogarnia takiego natłoku danych), zapisuję odebrane dane do pliku. Żeby to importować do Calca, najpierw muszę czymś notatnikopodobnym za pomocą znajdź/zamień powstawiać znaki nowej linii na końcu każdej paczki danych - ok, to idzie przeżyć, idzie szybko. Masakrą jest obróbka danych w Calcu - moje ustrojstwo wynik pomiaru z jednego kanału zapisuje na 16-bitowej liczbie w kodzie U2 (wyniki są także ujemne!). Calc i jemu podobne może i mają funkcje konwersji między systemami liczbowymi, ale z ograniczeniem do liczb 10-bitowych... więc muszę tworzyć jakieś makabryczne formułki żeby np. z 0x76a9 zrobić

30377. Dla 7 takich liczb przy 2500 próbkach już Calc zamula, a będę potrzebował poobserwować co się dzieje przez ok. 10 razy dłuższy czas... Pytanie - znacie jakiś programik, którym można szybciutko i przyjemnie obrabiać takie dane zapisane w pliku tekstowym jako log z RS232? Znalazłem jakiś darmowy Smath, ładnie mi zaciągnął dane z pliku, ale już przekonwertowanie hex-to-dec go przerosło. Nie chcę się pchać w Matlaba, w którym pewnie bym to zrobił szybko, ale to wielka kobyła do ściągnięcia i jeszcze większa po instalacji.
Reply to
Jakub Rakus
Loading thread data ...

Daj przykładowy krótki plik wejściowy i wyjściowy.

pzdr bartekltg

Reply to
bartekltg

Jakub Rakus snipped-for-privacy@op.pl napisał(a):

Skoro potrafisz stworzyć programik rysujący, to dlaczego problemem jest napisane programiku konwertującego te dane?

Reply to
Grzegorz Niemirowski

Dnia Wed, 04 Jun 2014 23:37:26 +0200, Jakub Rakus napisał(a):

TeraTerm ma makra. Mierne bo mierne, ale moze wystarcza.

formatting link
J.

Reply to
J.F.

Mysle, ze w pythonie zrobisz to w miare szybko.

Reply to
pgw

Przecież wyraźnie napisałem już w drugim zdaniu: Zanim stworzę programik na PC, który te dane będzie odbierał i rysował piękne wykresy "real time" chciałbym zobaczyć czy w ogóle te dane mają sens. Ni będę się pie... z pisaniem programu dopóki nie zobaczę, że cokolwiek da się z tego uzyskać, nie mam czasu na pisanie aplikacji for fun.

Reply to
Jakub Rakus

W dniu 05.06.2014 o 17:00 Jakub Rakus snipped-for-privacy@op.pl pisze:

A masz czas uczyć się programu do bróbki tego? jak tak to masz "awk", ale łatwo nie bedzie, szybciej program napiszesz niż się go (awk) nauczysz.

>
Reply to
janusz_k

Jakub Rakus snipped-for-privacy@op.pl napisał(a):

Widziałem tamto zdanie, ale nadal nie rozumiem. Przecież to roboty na 15 minut. Jak nie masz 15 minut, to mogę Ci napisać.

Reply to
Grzegorz Niemirowski

W dniu środa, 4 czerwca 2014 23:37:26 UTC+2 użytkownik Jakub Rakus napisał:

Napisałem sobie programik, a raczej przepisałem przykład, w celu weryfikacji czy dane po R232 maja sens ;)

#!/usr/bin/env python

import serial import sys import select import struct import math

ser = serial.Serial('/dev/ttyS5', 115200, timeout = None) ser_data = []

while True: ser_data.append(ser.read()) if any('\x04' == val for val in ser_data) == True: print ser_data ser_data[:] = []

Tak na marginesie, fascynuje mnie tendencja do używania arkusz kalkulacyjnego przez inżynierów gdy dostępne są kombajny obliczeniowe typy Matlab czy opensourcowy Octave.

Reply to
jerzdy

Użytkownik napisał w wiadomości grup

Kombajnu trzeba sie nauczyc, a Excela kazdy zna :-)

Latwosc zmian danych nie przemawia za Excelem ?

J.

Reply to
J.F.

Bo trzeba się ich uczyć, a arkusz obsługujesz w zasadzie w biegu.

Reply to
janusz_k

Sam sobie odpowiedziałeś: kombajny. Instalka matlaba zajmuje "niecałe"

4GB, oczywiście program darmowy nie jest, a kosztuje krocie jeśli ktoś chce go używać legalnie i jak każdy taki kombajn ma pierdylion funkcji, których nigdy nie użyjesz jeśli nie projektujesz promu kosmicznego. Octave - sorry, używałem Matlaba/Simulinka i jak zobaczyłem tego niestabilnego sypiącego błędami potworka to szybko mu podziękowałem. Jak sobie wezmę darmowy pakiet LibreOffice (instalka waży 200MB) mam wszystko to samo co w nietanim MSOfficie, jest w nim Calc, odpowiednik Excela, w którym wykonam 99% obliczeń potrzebnych w codziennej inżynierskiej pracy.
Reply to
Jakub Rakus

W dniu piątek, 6 czerwca 2014 14:56:10 UTC+2 użytkownik janusz_k napisał:

Mniej wiecej te same odpowiedzi uzyskalem w pracy na wiekopomne odkrycie iz wiekszsc inzynierow "hardwarowych" korzysta z Exela jako platformy obliczeniowej mimo iz wiekszosc programuje w C.

1) Excela tez trzeba sie nauczyc z jego milionem nikmu nie potrzebnych funkcji ukrytych w ciągle zmieniającym sie menu. Potrzebowealem zrobic tabelke z kilkoma wartoscami oraz obliczeniem rownania z tymi zmiennymi. Horrendum. 2) Matlab/Octave ze swa skladnia sa zblizone sa do C i mowienie iz jest skomplikowany raczej wskazuje na niechec do programowanie np: Potrzebowalem odczytac z wykresu pewna wartosc zamiast znalezc wzor funkcji linowej opisanej ponizszymi wartoscami

Skrypt dla Octave: x = [2, 3, 3.6]; y = [38, 57, 68]; plot (x, y);

Skomplikowane? Raczej nie.

3) Jezyki skryptowe jak Python czy Matlab/Octave daja ogromne biblioteki do obrobki zebranych danych. Ja wiem iz mozna obliczyc RMS itp takze w Excelu a FFT tez? ;) 4) W wiekszosci dystrybucji Linuksowych Octave jak i Python sa spakietowane i nic nie trzeba instalowac oraz dzialaja stabilnie.

A tak ku przypomnieniu, to nie ja pytalem jak w prosty sposob zebrac i zaprezentowac dane z portu szeregowego. Na pewno nie Excelem ;)

Reply to
jerzdy

W dniu środa, 4 czerwca 2014 23:37:26 UTC+2 użytkownik Jakub Rakus napisał:

Do orginalnego pytacza:

Twoje dane sa specyficzne tak wiec oczekiwanie iz uniwersalny program bedzie je w stanie "obrocic" jest co nieco dziwne.

Jedynie sluszna opcja w Twoim przypadku jest programowanie w dowolnym, znanym Ci jezyku. Osobiscie polecam Pythona.

Ps. Wyswietnie dynamicznego przebiegu (dane zebrane w kontrolerze i przeslane do PC przez ethernet) z danych obrobionych w tym skrypcie (tak jak u Ciebie konwersja z 16-bitowych na float) to bylo kilka linijek kodu. Co do wydajnosci - bylem w stanie na relatywnie starym laptopie, wyswietlic przebieg skladajacy sie z 2500 probek, co 100ms przychodzi paczka 100 probek.

Reply to
jerzdy

W dniu 06.06.2014 o 20:37 snipped-for-privacy@gmail.com pisze:

No i normalne, w C źle się liczy i na dodatek wynik trzeba jeszcze jakoś wyświetlić, każda poprawka to czas bo trzeba kompilować program,a w excelu poprawiasz w komórce i od razu masz wynmik.

Guzik prawda, wystarcza kilka podstawowych, resztę szukasz w wstaw funkcję, mozliwości ci te daje najprostrzy darmowy pakiet nap libreoffice.

Bez przesady, podstawy arkusza są naprawdę proste.

Matlab jest płatny a octave to bubel.

Próbowałem sie nauczyć Python-a i dałem sobie spokój, zbyt popierniczony.

Pewnie, na pewno łatwo nie będzie ale da się.

Reply to
janusz_k

W dniu piątek, 6 czerwca 2014 21:30:36 UTC+2 użytkownik janusz_k napisał:

Jesli znasz C to znasz tez Matlaba. Obliczenia numeryczne w C nie sa najwygodniejsze stad prosty kierunek czego uzyc.

Dokladnie. Guzik prawda. Tak jak zaprezentowałem, wykres funkcji w Octave to 3 liniki.

Oczywiscie bo jak nazywa sie w Calcu funkcja zaokrąglenia to dzieci w przedszkolu wiedza natomiast nie wiedza co to wektor;)

Ten bubel do Twoich zastosowań jest aż nadto dobry.

Patrz wyzej. Programowanie w proceduralne w Pythonie jest zbliżone do C.

Czekam z niecierpliwością na implementacje.

A w windzie sie jezdzi a nie programuje. Pretensje do wielkiego Bila iz nie dostarcza zadnych narzedzi poza Notatnikiem i Excelem.

Pozdrawiam, jerzy

Reply to
jerzdy

W dniu 06.06.2014 o 22:10 snipped-for-privacy@gmail.com pisze:

Znam C, matlaba nie, i nie mam zamiaru sie go uczyć.

Obliczenia numeryczne w C nie sa

No i? daje tylko wykres, a mowa była o obliczeniach, czasami skomplikowanych.

ZAOKR.DO.CAŁK()

to dzieci w

Dziadowsko chodący program? weź nie żartuj. Poza tym kolejna kobyła na dysku, a libre ma raptem 200M i robi z nadatkiem to czego potrzebuję.

Zbliżone, ale nie takie same. Poza tym ma swoje niuanse których trzeba się uczyć.

Po co? to że można nie oznacza że się tak normalnie robi, a poza tym mowa była o prostych obliczeniach w pracy inżyniera.

Śmieszny jesteś, pod windą matlab jest płatny a octave chodzi jak chce, dziękuję za taką pomoc, wolę libreofice.

Reply to
janusz_k

A czas na siedzenie dobę na usenecie to masz;>

#include <iostream>

using namespace std; int main() { long long int n; while (cin>>hex>>n) { cout<<n<<endl; } return 0; }

:~/pierd/hex-Release$ cat wej.txt c8 FF C8 100 10000

:~/pierd/hex-Release$ ./hex < wej.txt >wyj.txt

:~/pierd/hex-Release$ cat wyj.txt

200 255 200 256 65536

Czy to dokładnie to, nie wiem, bo nie raczyłeś odpisać na moją prośbę o przykład.

5 min łącznie z przeszukaniem dokumentacji jak się czyta szesnastkowy i sprawdzeniem wyniku. Pewnie te posty dłużej pisałeś.

pzdr bartekltg

Reply to
bartekltg

Przecież dopiero co powiedziałeś, że nie potrzebujesz projektować promu kosmicznego, a octave jako kalkulator daje rade. Masz wybór, lepszy program ale drogi, albo darmowa zapchajdziura.

Niektórzy polecają też np pythona z pakietami numpy i scipy. Trochę mniej wygodne niż matlab, ale ma więcej niż octave.

Nikt nie broni używać grabi do kopania dołu. Pytanie, czy nie ma w życiu ciekawszych rzeczy do roboty niż spędzanie czasu nad narzędziami zaprojektowanymi do prowadzenie księgowości.

pzdr bartekltg

Reply to
bartekltg

Dnia Fri, 6 Jun 2014 11:37:09 -0700 (PDT), snipped-for-privacy@gmail.com

Szybko znajdziesz jedna potrzebna.

No nie, raz sie zmienilo istotnie, niech im ziemia ciezka bedzie. No i ten polski jezyk - kto slyszal funkcje spolszczac.

Mozliwe. Tym niemniej ma ku temu narzedzia.

Nie, tylko trzeba sie doszukac. Tu akurat nie trzeba, bo to pewnie pierwszy przyklad z dokumentacji, ale jak chcesz przeczytac dane z pliku, opisac osie, zapanowac nad skala ... to ile to potrwa ?

Tez, jest biblioteka. Co prawda troche smieszna, bo liczby zespolone to on chyba tekstowo przechowuje, tym niemniej jest.

Liczby zespolone w C/C++ to temat na dluzsza dyskusje ... o wyzszosci Fortranu :-)

Ale my niestety mamy windows na pokladzie :-P

J.

Reply to
J.F.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.