Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 24 lis 2024, o 05:42


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 25 wrz 2016, o 08:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 55
Lokalizacja: Wrocław
Pomógł: 0

Witam mam problem ze sformatowaniem danych.

Dostaje po RS232 stringa zawierającego liczbę.
Składnia: [ Pobierz ] [ Ukryj ]
język delphi
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W sposób przedstawiony wyżej przerabiam stringa do longint, wartość wrzucam na progressbar1, następnie dzielę na 1024 czyli max wartość jaką może przyjąć liczba i mnożę x100 żeby mieć wynik w %. Niestety nie umiem sformatować procentów do postaci ##.# %.
Szukałem w Delphi 4programmers różnych sposobów formatowania i longinta i stringa ale nic nie działa, za każdym razem wywala błąd.
A postać jak na obrazku jest nie do zaakceptowania
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 wrz 2016, o 09:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 kwi 2014
Posty: 438
Lokalizacja: Zambrów
Pomógł: 22

Składnia: [ Pobierz ] [ Ukryj ]
język delphi
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Obrazek

W twoim przypadku wypadałoby użyć to tak zamiast:
Składnia: [ Pobierz ] [ Ukryj ]
język delphi
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to tak
Składnia: [ Pobierz ] [ Ukryj ]
język delphi
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jeżeli chcesz, aby mimo np. całkowitych procentów wyświetlało Ci się np 1.00% zamiast 1%. Jak chcesz inaczej to według tabelki dobierz odpowiednie formatowanie.


Autor postu otrzymał pochwałę

_________________
.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 15:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 55
Lokalizacja: Wrocław
Pomógł: 0

Mam jeszcze jedno pytanie, nie mogę ogarnąć takiej sytuacji:

Dostaję po rs232 jakąś ilość znaków, odczytuję je za pomocą :

Składnia: [ Pobierz ] [ Ukryj ]
język delphi
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Do zmiennej Revs ładowane są wszystkie Stringi wysłane przez Avr, wyglądają one tak #abc#def#ghi
Chciałbym stworzyć procedurę która wpisze do pierwszego elementu tablicy ciąg znaków między znakami # tak naprawde seperatory są dowolne, no tu taki przykład
czyli żeby Tablica[1] = abc , Tablica[2] = def, Tablica[1] = ghi , następnie żeby do labela albo panelu wstawiała ten string.
Czyli Label1.caption:=tablica[1];
Jeszcze lepiej ale to chyba nie realne żeby dało się to zautomatyzować powiedzmy 3 labele i 3 tablice

Składnia: [ Pobierz ] [ Ukryj ]
język delphi
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

taki zapis nie zadziała ale może da się to zorganizować w podobny sposób.
Proszę o pomoc i pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 16:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

tu zasada jest prosta ... stosuję ją przy obrabianiu danych ze zdania GPGA w GPS

czyli:

sprawdzasz czy masz znak # pobierasz właściwą ilość bajtów do znaku # i potem następną i td.. i pakujesz do tablicy

w C na uC robie to tak ... ale zasada ta sama ...
żeby łatwiej ci było załapac co kiedy się dzieje tu masz przykładowe zdanie GPGGA

$GPGGA,121934.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*61

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 16:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 55
Lokalizacja: Wrocław
Pomógł: 0

Sunriver, mógłbyś podrzucić pod to kod ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 16:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

już masz w poście wyżej :)

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 16:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 55
Lokalizacja: Wrocław
Pomógł: 0

o ludzie, za głupi na to jestem.
Napisz ktoś jak krowie na rowie ;/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 17:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

popatrz jakie to proste :)

odebrałem ciąg z uarta: $GPGGA,121934.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*61
sprawdzam czy jest w nim znak $ while((temps[0] = GPS_Start() )!=’$’); // oczekiwanie znaku $
jeśli jest to pobieram 5 znaków po nim : for (i=0;i<5;i++) // pobieramy 5 znaków po $
temps[i] = GPS_Start ();
i sprawdzam czy te 5 znaków to GPGGA if( strncmp(temps, GPGGA, 5)) // sprawdzamy czy nadeszło zdanie GGA

jeśli tak pobieram 10 znaków ...for (i=0; i<10; i++) //pobieramy następne 10 znaków

temps[0] = GPS_Start(); // oczywiście z bufora gdzie trzymam ramkę
następnie pobieram kolejne 10 znaków -- wiem że to czas i dalej ... do znacznika N itd ...
znam budowę ramki więc w ten sposób uzyskuję odpowiednie dane wpisując je do tablicy i wyświetlając na LCD w e właściwym czasie

to samo uzyskasz ty ładująć ramkę do bufora i pobierając ilosc danych miedzy znacznikami

czyli sprawdzasz czy masz # jak tak pobierasz 3 znaki , potem pobierasz następne i następne ....

ja w przykładzie sprawdzam czy odebrałem GPGGA bo zdań na uart leci sporo , a nie wszystkie są mi potrzebne :)

celowo ci pokazałem jak się to odbywa po stronie procesora .... na kompie masz tak samo :)


Autor postu otrzymał pochwałę

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO