Zamiana INT na wartość binarna i tworzenie ramki danych

Sprawy związane z interfejsem użytkownika - kontrolki, wskaźniki, wyświetlacze, wykresy oraz inne zagadnienia tego typu...
dawkaxxl
Posty: 24
Rejestracja: 23 mar 2009 19:00
Lokalizacja: Tarnów
Kontakt:

Zamiana INT na wartość binarna i tworzenie ramki danych

Post autor: dawkaxxl »

Witam!!
Chcę wysyłać trzy wartości napięć do mikrokontrolera ATMEGA32 poprzez RS232. ATMEGA32 jest tak zaprogramowana, że odbiera trzy bajty danych gdzie pierwszy bajt to jest wartość pierwszego napięcia i idzie na port A, drugi bajt to druga wartość i idzie na port B i trzeci bajt to wartość trzeciego napięcia i jest wysyłana na port C.
Moje pytania brzmią:

1. Jak zamienić wartość dziesiętna typu INT na wartość binarną?
2. Jak zapisać te dane w postaci ramki 1 bajt|1 bajt|1 bajt (gdzie każdy bajt to inna wartośc napięcia zapisana na 8 bitach) i następnie wysłać do mikrokontrolera?

Proszę o pomoc
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Zamiana INT na wartość binarna i tworzenie ramki danyc

Post autor: jogurt_owocowy »

Jak zamienić wartość dziesiętna typu INT na wartość binarną?
[img]http://labview.pl/uploads/veir/number%2 ... 0array.png[/img]
Jak zapisać te dane w postaci ramki 1 bajt|1 bajt|1 bajt (...) i następnie wysłać do mikrokontrolera?
[img]http://labview.pl/uploads/veir/string%2 ... 0bytes.png[/img]
dawkaxxl
Posty: 24
Rejestracja: 23 mar 2009 19:00
Lokalizacja: Tarnów
Kontakt:

Zamiana INT na wartość binarna i tworzenie ramki danych

Post autor: dawkaxxl »

Dziekuje za pomoc o to wlaśnie mi chodziło. Zrobiłem według przykładu ale pojawia sie problem gdyż potrzebuje wykorzystywać liczby ze znakiem typu int. Jak mogę rozwiązać ten problem?
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Zamiana INT na wartość binarna i tworzenie ramki danyc

Post autor: jogurt_owocowy »

Nie kombinuj z zamienianiem liczb na tablice booleanów, bo to nie jest konieczne. Za dodawaniem i dzieleniem zrzutuj tylko otrzymaną liczbę na typ I8 (funkcja To Byte Integer) i otrzymane liczby podaj na wejście Build Array i dalej Byte Array To String...
Możesz sobie gdzieś na boku przekonwertować liczby do tablic booleanów, ale tylko w celach kontrolnych (choćby po to, żeby się upewnić czy kolejność bitów jest taka jakiej oczekuje Atmega) - nie używaj ich podczas wysyłania.
Pozdrawiam
Ostatnio zmieniony 27 kwie 2009 10:59 przez jogurt_owocowy, łącznie zmieniany 1 raz.
dawkaxxl
Posty: 24
Rejestracja: 23 mar 2009 19:00
Lokalizacja: Tarnów
Kontakt:

Problem z wysyłaniem ramki danych przez RS232

Post autor: dawkaxxl »

Cześć!
Podczas wysyłania ramki danych podglądam sobie ją co w niej idzie i zaciekawiły mnie te kwadraty, wiec postanowiłem zobaczyć ramkę na oscyloskopie i się okazało, że dla każdej wartości dla ktorej pojawia się taki kwadracik ramka wygląda tak samo, tylko dla wartości -5, -3, -2, -1 wychodzą prawidłowe wartości. Dodam, że zakres jest od -5 do 5. Co może być tego przyczyną?

Pozdrawiam
Ostatnio zmieniony 12 cze 2009 05:51 przez dawkaxxl, łącznie zmieniany 1 raz.
dawkaxxl
Posty: 24
Rejestracja: 23 mar 2009 19:00
Lokalizacja: Tarnów
Kontakt:

Zamiana INT na wartość binarna i tworzenie ramki danych

Post autor: dawkaxxl »

Naprawde nikt nie wie o co może chodzić? :help:
Awatar użytkownika
Cuspy1
Posty: 39
Rejestracja: 12 cze 2009 09:31
Lokalizacja: Warszawa
Kontakt:

Zamiana INT na wartość binarna i tworzenie ramki danych

Post autor: Cuspy1 »

Witam,

Dawkaxxl te kwadraty to symbol zastępczy znaków ASCII, których LabView nie wyświetla. Jeśli chcesz mieć podgląd na wartości to zastosuj indykator zamiast sondy i zmień wyświetlanie na Codes lub Hex display.
Błędne nastawy być może spowodowane są konwersją I8 na U8.
Unsigned jak sama nazwa wskazuje nie ma znaku +/- więc LabView wartość powiedzmy I8 = -5 zamieni na U8 = 251.
Skoro możesz nastawiać wartości ujemne za pomocą pojedynczych bajtów to musisz mieć dla nich jakiś przelicznik (może coś w instrukcji).
Mam nadzieję, że to pomoże.

Pozdrawiam
ODPOWIEDZ