Porównanie i zamiana.

Tematy związane z LabVIEW pracującym w czasie rzeczywistym.
Awatar użytkownika
Dragonfly
Posty: 27
Rejestracja: 02 mar 2009 12:00
Kontakt:

Porównanie i zamiana.

Post autor: Dragonfly »

Szukam pomysłu jak porównać dane przylatujące jako string z danymi zawartymi w pliku txt, a następnie (jeżeli dane są te same, czyli wynik porównania jest TRUE) zamienić string na numeric.

Do tej pory udało mi się już rozbić przychodzące dane i wyodrębnić to co chce porównywać a potem zamienić, wygląda to tak jak w załączniku.

Teraz problem mam z porównaniem ich i zamianą n.p.:

Dane przychodzące ~ Dane w pliku ~ Numeric na który ma być zamienion
EA57 EA57 89
E458 E458 90
DE58 DE58 91


Potzrebuje je zamienić z tego względu, że chcę w czasie rzeczywistym przedtsawiać stan zbiornika.

Za wszelkie podpowiedzi bymbył wdzięczny.
Umpa umpa studenciach...
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Porównanie i zamiana.

Post autor: jogurt_owocowy »

Dobrze byłoby jakbyś napisał trochę bardziej konkretnie: jak wyglądają dane przychodzące i jak wygląda plik txt. Z rysunku, który zmieściłeś niespecjalnie wiele wynika.
Awatar użytkownika
Dragonfly
Posty: 27
Rejestracja: 02 mar 2009 12:00
Kontakt:

Re: Porównanie i zamiana.

Post autor: Dragonfly »

Dane przychodzące ototrzymuje z szyny CAN i wyglądają one jak w tabeli 1 dodanej do schematu. W kolejnym kroku udaje mi się wyodrębnić te bity, które mnie interesują i wygląda to jak w tabeli 2 (również dołączone do schematu).

W następnym krorku chciałbym porównać dane z Result String z danymi, które znajdują się w pliku txt i wyglądają następująco:

0000
FA00
F401
EE02
E803
E204
DC05
D606
D007
CA08
C409
BE0A
B80B
B20C
AC0D
A60E
A00F
9A10
9411
8E12
8813
8214
7C15
7616
7017
6A18
6419
5E1A
581B
521C
4C1D
461E
401F
3A20
3421
2E22
2823
2224
1C25
1626
1027
0A28
0429
FE2A
F82A
F22B
EC2C
E62D
E02E
DA2F
D430
CE31
C832
C233
BC34
B635
B036
AA37
A438
9E39
983A
923B
8C3C
863D
803E
7A3F
7440
6E41
6842
6243
5C44
5645
5046
4A47
4448
3E49
384A
324B
2C4C
264D
204E
1A4F
1450
0E51
0852
0253
FC54
F655
F056
EA57
E458
DE58
D859
D25A
CC5B
C65C
C05D
BA5E
B45F
AE60
A861

W drugim pliku tekstowym mam kolumnę z liczbami od 0 do 100 (które defakto są "odzwierciedleniem" danych z pierwszego pliku txt, tylko że w formie liczb dziesiętnych). W wyniku porównania Result String z danymi z pierwszego pliku txt (w przypadku zgodności znaków) chciałbym aby nastąpiło podstawienie liczb z Result String na dane znajdujące się w drugim pliku txt.

Mam nadzieje, żę udało mi się to troche rozjaśnić. Na schemacie widać moje próby zralizowania tego za pomocą Read from Text file ale niestety nie moge uzyskać podstawienia.
Umpa umpa studenciach...
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Porównanie i zamiana.

Post autor: jogurt_owocowy »

Teraz lepiej.
Poniżej przykład, który Ci trochę powinien pomóc.

Pozdrawiam
Awatar użytkownika
Dragonfly
Posty: 27
Rejestracja: 02 mar 2009 12:00
Kontakt:

Re: Porównanie i zamiana.

Post autor: Dragonfly »

Wielkie dzięki za pomoc.
Oprócz Twojego sposobu doszedłem do jeszcze jednej metody podmiany danych. Zapewne nie jest to wykonane zbyt profesjonalnie, ale również działa poprawnie, lecz zastanawiam sie jakie mogą być wady mojej metody?
Wpierw ciąg danych dwu bitowych zostaje zapisywany to pliku "dane.txt" (zapisywany jest tylko jeden string, w przypadku nadejścia kolejnego nadpisuje się on na poprzedni). Potem ten sam plik i plik ze zmodyfikowanym kodem ("kody_modyfikacja.txt") zostają otwarte (do kodów dodałem bez spacji wartości liczbowe, którym mają one odpowiadać i tak n.p. 000000, 624369, 5C4470, 564571, 504672 itd.).
W bloczku Search/Split String oba ciągi znaków zostają porównane i w przypadku odnalezienia ciągu z pliku "dane.txt." w pliku "kody_modyfikacja.txt" cały ciąg odnaleziony, wraz z dopisanymi wartościami, zostaje przesłany na jego wyjście. W bloczku Replace Substring 4 pierwsze znaki zostają podmienione na nic w wyniku czego otrzymuje dwa ostatnie znaki, które są wartościa liczbową odpowiadającą stanowi zbiornika. Zostaje jeszcze zamiana z Decimal String to Number.
Umpa umpa studenciach...
Awatar użytkownika
Dragonfly
Posty: 27
Rejestracja: 02 mar 2009 12:00
Kontakt:

Re: Porównanie i zamiana.

Post autor: Dragonfly »

Nasunęło mi się jeszcze jedno pytanie.
Czy jest możliwe zapisanie strumienia danych otrzymanych z bloku CAN Read Net Multi (czyli otrzymanych bitów z szyny CAN) w jakimkolwiek pliku nie zmieniając ich formy, tak aby następnie było możliwe odczytanie ich i po lekkiej modyfikacji przesłanie spowrotem do szyny CAN ?
Umpa umpa studenciach...
folon
Posty: 19
Rejestracja: 03 sty 2008 09:43
Wersja środowiska: LabVIEW 2012
Lokalizacja: Wrocław

Porównanie i zamiana.

Post autor: folon »

Nie wiem dokładnie w jakiej postaci otrzymuje się dane z tego VIjaja, ale jak nie chcesz ich sobie jakoś sformatować i wpisać uporządkowanych do pliku, to spróbowałbym Flatten to string, a przy odczycie Unflatten from string.
Edit: Plik LV8.0 na szybko zrobiony, więc może haczyć:)
Ostatnio zmieniony 21 kwie 2009 17:30 przez folon, łącznie zmieniany 1 raz.
ODPOWIEDZ