Wczytywanie pliku tekstowego

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Wczytywanie pliku tekstowego

Post autor: rexio1988 »

Witam.
Z LabView zabawę dopiero zaczynam no i już na początku napotkałem na pewnie drobny problem. A mianowicie z wczytaniem pliku tekstowego do programu. Struktura programu:
prog.png
prog.png (10.43 KiB) Przejrzano 18253 razy
Poniżej struktura pliku tekstowego:

Kod: Zaznacz cały

28-11-11 13:24	8,1	65	3,6	W	-5,2354	1025,6	1,9	3,6	-				
28-11-11 13:25	8,1	66	2,7	W	-11,4131	1025,6	2,1	5,2	-				
28-11-11 13:26	8,1	66	3,8	W	-27,5899	1025,5	2,1	3,3	-				
28-11-11 13:27	8,2	65	4,3	W	-52,9655	1025,5	2	2,7	-				
28-11-11 13:28	8,1	65	4,4	WSW	-16,936	1025,4	1,9	2,4	-				
28-11-11 13:29	8,1	65	2,9	W	-37,2621	1025,3	1,9	4,9	-				
28-11-11 13:30	8,1	65	2,1	W	-11,2412	1025,4	1,9	6,6	3,286				
28-11-11 13:31	8	65	4,8	WSW	-10,2661	1025,4	1,8	1,8	-				
28-11-11 13:32	7,9	65	6,8	W	-12,2718	1025,3	1,7	-0,3	-				
28-11-11 13:33	7,9	66	4,3	W	-17,5473	1025,5	1,9	2,3	-				
28-11-11 13:34	7,9	66	3,9	WNW-17,9152	1025,5	1,9	2,9	-
Problem polega na tym, że wyrzuca mi błąd typu: "scan from string: too many format specifiers",
a format ustawiłem taki: "%<%d-%m-%y %H:%M>T %f %d %f %s %f %f %f %f %f".
Kombinowałem na wiele sposobów, niestety żadne nie zadziałał ;/ Jak sobie z tym poradzić? Za wszelkie wskazówki będę bardzo wdzięczny.
Awatar użytkownika
smiga
Administrator
Posty: 823
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Wczytywanie pliku tekstowego

Post autor: smiga »

Złap za dolną krawędź bloczka i rozciągnij w dół aż do ostatniego DBL ... i wszystko zadziała.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Re: Wczytywanie pliku tekstowego

Post autor: rexio1988 »

Dzięki za szybką odpowiedź! Jednak mam jeszcze pytanie. Czy w tym pliku tekstowym wartości mogą być porozdzielane tabulatorem czy muszą być tylko spacją? Bo program po odpaleniu wyrzucił jeszcze błąd:
"error 1 occurred at Scan From String (arg 1) in prog.vi

Possible reason(s):

LabVIEW: An input parameter is invalid. For example if the input is a path, the path might contain a character not allowed by the OS such as ? or @."

W załączniku plik .vi i plik .txt, może tak będzie lepiej.
Załączniki
prog.rar
(5.01 KiB) Pobrany 560 razy
may
Posty: 96
Rejestracja: 20 lut 2012 12:30
Wersja środowiska: LabVIEW 2014
Lokalizacja: Katowice / Ruda Śląska

Re: Wczytywanie pliku tekstowego

Post autor: may »

Odpowiedź kolegi smiga to właściwie to czego szukasz, poza tym, że z plikiem jest jeszcze kilka innych problemów.

Po pierwsze: LabVIEW lubi żeby symbolem dziesiętnym była kropka, nie przecinek. Jeżeli masz liczbę np. 7,9 to bloczek scan from string uważa, że to są dwie liczby 7 i 9. Dobrze zamienić wszystkie przecinki na kropki, bo inaczej wydaje mu się, że tych liczb jest tam więcej niż podałeś w stringu formatujacym i wyrzuci błąd: "Error 85 occurred at Scan From String (arg 3) in zpliku.vi".

Po drugie: W ostatniej kolumnie masz "-" (rozumiem, że to wtedy gdy dla danego pomiaru nie ma tej danej). Widzę, że chciałbyś żeby tą kolumnę przeczytał Ci jako liczby. Znaku "-" oczywiście nie można przeczytać jako liczby. Możesz przeczytać to jako string i jeżeli w stringu znajdziesz wartość "-" to zwracasz 0 a w innym przypadku konwertujesz string na liczbę (tak, wiem, że zmierzenie wartości 0 to nie jest to samo co nie wykonanie pomiaru, ale na tej zasadzie jakoś tą ostatnią kolumnę można przeczytać i wyciągnąć użyteczne wartości). Patrz: Załączony snippet.

Po trzecie: w ostatniej linie nie ma spacji w "WNW-17,9152". Jeżeli to pojedynczy błąd to łatwo naprawić, ale jeżeli masz wiele godzin takiego zapisu i trzeba by sprawdzać setki linii, to chyba łatwiej przeczytać całą linię jako string i szukać pierwszej cyfry lub "-" po tym znaczniku kierunku (bo te W NW itd. to kierunek, tak?) i wstawić tam spację.
Załączniki
zpliku.png
Obrazek
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Re: Wczytywanie pliku tekstowego

Post autor: rexio1988 »

may pisze:Odpowiedź kolegi smiga to właściwie to czego szukasz, poza tym, że z plikiem jest jeszcze kilka innych problemów.

Po pierwsze: LabVIEW lubi żeby symbolem dziesiętnym była kropka, nie przecinek. Jeżeli masz liczbę np. 7,9 to bloczek scan from string uważa, że to są dwie liczby 7 i 9. Dobrze zamienić wszystkie przecinki na kropki, bo inaczej wydaje mu się, że tych liczb jest tam więcej niż podałeś w stringu formatujacym i wyrzuci błąd: "Error 85 occurred at Scan From String (arg 3) in zpliku.vi".

Po drugie: W ostatniej kolumnie masz "-" (rozumiem, że to wtedy gdy dla danego pomiaru nie ma tej danej). Widzę, że chciałbyś żeby tą kolumnę przeczytał Ci jako liczby. Znaku "-" oczywiście nie można przeczytać jako liczby. Możesz przeczytać to jako string i jeżeli w stringu znajdziesz wartość "-" to zwracasz 0 a w innym przypadku konwertujesz string na liczbę (tak, wiem, że zmierzenie wartości 0 to nie jest to samo co nie wykonanie pomiaru, ale na tej zasadzie jakoś tą ostatnią kolumnę można przeczytać i wyciągnąć użyteczne wartości). Patrz: Załączony snippet.

Po trzecie: w ostatniej linie nie ma spacji w "WNW-17,9152". Jeżeli to pojedynczy błąd to łatwo naprawić, ale jeżeli masz wiele godzin takiego zapisu i trzeba by sprawdzać setki linii, to chyba łatwiej przeczytać całą linię jako string i szukać pierwszej cyfry lub "-" po tym znaczniku kierunku (bo te W NW itd. to kierunek, tak?) i wstawić tam spację.
Dzięki bardzo za te wszystkie wskazówki!
ad.1 Zamienię przecinki na kropki.
ad.2 No właśnie w "całościowym" pliku (to co zamieściłem to tylko bardzo krótki wycinek, ale chodziło mi o pokazanie struktury pliku) znak "-" występuje na różnych pozycjach, nie tylko w ostatniej kolumnie, ale zawsze zamiast liczb nie stringów ;/ Jak nazywa się ta kontrolka do konwersji stringa na liczbę?
ad.3 Cały plik z pomiarami ma prawie 20tys. linii przeglądanie całości jest bez sensu, a to co tutaj wrzuciłem na forum to musiałem usunąć tę spację, bo w moim skróconym pliku ona jest :) Poza tym nie mogę wyszukiwać po znaku "-", ponieważ niektóre wartości po znaczniku kierunku wiatru są dodatnie.

Jutro się za to zabieram, w razie problemów napiszę jeszcze, ale póki co wielkie dzięki za odpowiedzi!
Ostatnio zmieniony 05 maja 2012 23:24 przez rexio1988, łącznie zmieniany 1 raz.
may
Posty: 96
Rejestracja: 20 lut 2012 12:30
Wersja środowiska: LabVIEW 2014
Lokalizacja: Katowice / Ruda Śląska

Wczytywanie pliku tekstowego

Post autor: may »

To co wkleiłem to jest code snippet. Zapisz go na dysk (normalnie jako png) i przeciągnij na block diagram LabVIEW a on stworzy z niego kod.
Użyty tam bloczek do konwersji to "Fract/Exp string to Number".

ad ad3. Mówiłem o szukaniu znaku "-" lub pierwszej cyfry :) Ale jeżeli to jest 20k liniowy plik stworzony automatycznie, to raczej takich błędów w nim być nie powinno.
Obrazek
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Re: Wczytywanie pliku tekstowego

Post autor: rexio1988 »

may pisze:To co wkleiłem to jest code snippet. Zapisz go na dysk (normalnie jako png) i przeciągnij na block diagram LabVIEW a on stworzy z niego kod.
Użyty tam bloczek do konwersji to "Fract/Exp string to Number".
Trzeba coś w ustawieniach programu zmieniać, żeby odczytało tego snippet'a? Zrobiłem tak jak napisałeś, ale nie zadziałało.
Ostatnio zmieniony 06 maja 2012 19:23 przez rexio1988, łącznie zmieniany 1 raz.
Awatar użytkownika
smiga
Administrator
Posty: 823
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Wczytywanie pliku tekstowego

Post autor: smiga »

Najpierw kliknij na obrazek na forum, następnie jak się otworzy w osobnym okienku kliknij prawym myszy i zapisz jako ... gdzieś na dysku i wtedy przeciągnij na Block Diagram.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Re: Wczytywanie pliku tekstowego

Post autor: rexio1988 »

smiga pisze:Najpierw kliknij na obrazek na forum, następnie jak się otworzy w osobnym okienku kliknij prawym myszy i zapisz jako ... gdzieś na dysku i wtedy przeciągnij na Block Diagram.
W tym co wrzuciłeś dało się odczytać te dane z pliku? U mnie dalej wyrzuca błąd: "An input parameter is invalid." Co jest nie tak?
MicMac89
Posty: 122
Rejestracja: 05 wrz 2011 20:40
Wersja środowiska: LabVIEW 2011

Wczytywanie pliku tekstowego

Post autor: MicMac89 »

Który plik masz na myśli?
Certified LabVIEW Associate Developer
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Re: Wczytywanie pliku tekstowego

Post autor: rexio1988 »

Ten który wrzuciłem w archiwum w trzecim poście.
Awatar użytkownika
smiga
Administrator
Posty: 823
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Wczytywanie pliku tekstowego

Post autor: smiga »

Ja miałem na myśli obrazek wklejony w tym wątku, kolegi May'a z czwartego postu.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Re: Wczytywanie pliku tekstowego

Post autor: rexio1988 »

MicMac89 chyba pyta o plik tekstowy.
may
Posty: 96
Rejestracja: 20 lut 2012 12:30
Wersja środowiska: LabVIEW 2014
Lokalizacja: Katowice / Ruda Śląska

Wczytywanie pliku tekstowego

Post autor: may »

A rzeczywiście. Nie działa. Ale dałbym głowę, że wczoraj działało. No przecież nie wrzuciłbym kodu bez odpalenia go:P Pomyślę nad tym jutro, bo naprawdę nie widzę na czym się wysypuje. Poza tym że w tym twoim pliku jest jakieś dziwne kodowanie, albo jakiś błąd i w niektórych linijkach przed datą LabVIEW widzi jeszcze jakiś krzak (˙ţ tak dokładniej). Naprawdę dałbym głowę, że tego wczoraj nie było. Magia.

Może zmiana kodowania tego pliku pomoże.
Ostatnio zmieniony 07 maja 2012 08:10 przez may, łącznie zmieniany 1 raz.
Obrazek
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Wczytywanie pliku tekstowego

Post autor: rexio1988 »

Ok zmieniłem kodowanie pliku tekstowego na utf-8 (bez BOOM) i działa.
ODPOWIEDZ