Strona 1 z 2
Wczytywanie pliku tekstowego
: 05 maja 2012 21:42
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 (10.43 KiB) Przejrzano 18259 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.
Re: Wczytywanie pliku tekstowego
: 05 maja 2012 22:22
autor: smiga
Złap za dolną krawędź bloczka i rozciągnij w dół aż do ostatniego DBL ... i wszystko zadziała.
Re: Wczytywanie pliku tekstowego
: 05 maja 2012 22:52
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.
Re: Wczytywanie pliku tekstowego
: 05 maja 2012 22:59
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ę.
Re: Wczytywanie pliku tekstowego
: 05 maja 2012 23:23
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!
Wczytywanie pliku tekstowego
: 05 maja 2012 23:38
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.
Re: Wczytywanie pliku tekstowego
: 06 maja 2012 19:22
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.
Re: Wczytywanie pliku tekstowego
: 06 maja 2012 20:00
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.
Re: Wczytywanie pliku tekstowego
: 06 maja 2012 21:17
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?
Wczytywanie pliku tekstowego
: 06 maja 2012 21:19
autor: MicMac89
Który plik masz na myśli?
Re: Wczytywanie pliku tekstowego
: 06 maja 2012 21:28
autor: rexio1988
Ten który wrzuciłem w archiwum w trzecim poście.
Re: Wczytywanie pliku tekstowego
: 06 maja 2012 23:20
autor: smiga
Ja miałem na myśli obrazek wklejony w tym wątku, kolegi May'a z czwartego postu.
Re: Wczytywanie pliku tekstowego
: 07 maja 2012 00:25
autor: rexio1988
MicMac89 chyba pyta o plik tekstowy.
Wczytywanie pliku tekstowego
: 07 maja 2012 02:01
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.
Wczytywanie pliku tekstowego
: 07 maja 2012 11:25
autor: rexio1988
Ok zmieniłem kodowanie pliku tekstowego na utf-8 (bez BOOM) i działa.