Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 21 lut 2025, o 14:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 12 sie 2013, o 15:57 
Offline
Nowy

Dołączył(a): 12 sie 2013
Posty: 2
Pomógł: 0

Witam,

Zwracam się z prośbą o pomoc w rozwiązaniu mojego problemu.

Za pomocą ATmegi32 chcę przesyłać co (x)ms do MatLaba wartość z przetwornika ADC (0-1024) mikrokontrolera.



Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.




W Matlabie pobieram te wartości i plotuje.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.






Mój problem polega na tym, że gdy ustawie
serial_port_object.InputBufferSize = 3; i dostaje wartości z przedziału 100-999 to wszystko jest dobrze, tzn. każdą wartość zapisuje w osobnej komórce macierzy. Jednak gdy otrzymuje wartości których liczba cyfr jest różna od 3 (jedno, dwu lub cztero cyfrowe), MatLab łączy je ze sobą tworząc 3 cyfrowe liczby. Np.:

ATmega wysyła 4 liczby:
88
112
789
1023

Chciałbym aby MatLab zapisł je dokładnie w taki sposób.
Niestety, gdy ustawie InputBufferSize = 3; otrzymam:

881
127
891
023

Z góry dziekuję za pomoc.
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sie 2013, o 17:23 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27360
Lokalizacja: Szczecin
Pomógł: 1042

Ludziska ;) wysyłajcie liczby normalnie jako stringi ASCII a nie żadne tam int i tym podobne.

Znakiem końca będzie wtedy ładnie ENTER (0x0d)

po drugiej stronie czym by nie odbierać - to ZAWSZE da radę pięknie to analizować i to z najmniejszymi problemami. A najgorzej jest gdy początkująca osoba wpada na pomysł że lepiej będzie wysyłać liczbę dziesiętnie - wtedy się zaczyna ;) dopiero horror

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sie 2013, o 18:57 
Offline
Nowy

Dołączył(a): 12 sie 2013
Posty: 2
Pomógł: 0

Dzięki za odpowiedź.
W desperacji próbowałem już chyba wszyskiego. Wartości jako stringi wysyłałem w pierwszej kolejności. W Matlabie korzystałem z funkcji str2dec i podobnych. Nawet próbowałem wysyłać liczby binarnie, myślałem, że załatwi to sprawe jeśli zawsze będe miał 8 bitów i ustawie wtedy InputBufferSize = 8 (bin2dec). Jednak nie dziłało to poprawnie.
Sprawę rozwiązałem w następujący sposób:

W MatLabie ustawiłem InputBufferSize = 6


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Domyślam się, że nie jest to zbyt "eleganckie" rozwiązanie. Grunt, że działa :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO