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
Zamiana INT na wartość binarna i tworzenie ramki danych
- 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
[img]http://labview.pl/uploads/veir/number%2 ... 0array.png[/img]Jak zamienić wartość dziesiętna typu INT na wartość binarną?
[img]http://labview.pl/uploads/veir/string%2 ... 0bytes.png[/img]Jak zapisać te dane w postaci ramki 1 bajt|1 bajt|1 bajt (...) i następnie wysłać do mikrokontrolera?
Zamiana INT na wartość binarna i tworzenie ramki danych
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?
- 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
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
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.
Problem z wysyłaniem ramki danych przez RS232
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
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.
Zamiana INT na wartość binarna i tworzenie ramki danych
Naprawde nikt nie wie o co może chodzić? :help:
Zamiana INT na wartość binarna i tworzenie ramki danych
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
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