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



Teraz jest 12 gru 2024, o 15:53


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 5 sty 2015, o 17:15 
Offline
Użytkownik

Dołączył(a): 27 sty 2014
Posty: 73
Pomógł: 0

Witam,

Mam problem z wyświetlaniem pomiaru odległości który wykonuje za pomocą czujnika SHARP podłączonego do mikrokontrolera Atmega16. Pomiar w postaci wartości ADC wysyłany jest przez RS232 do aplikacji napisanej w C# otóż pomiar wykonuje na odległości od 40[mm] do 310[mm] wartości ADC z Atmega16 i odpowiadająca im wartość odległości mam zapisane w tablicach. Wszystko jest w porządku z pomiarami od 310[mm] do 100[mm] tak jak na zdjęciu poniżej:

https://www.dropbox.com/s/8pvtn6xpq2qv1b3/20150105_164455.jpg?dl=0

niestety gdy pomiar wyniesie poniżej 100[mm] dane wyświetlane w aplikacji zaczynają "szaleć" coś jak na zdjęciu poniżej:

https://www.dropbox.com/s/uj5811adg0bmb7f/20150105_164515.jpg?dl=0

Poniżej wklejam fragment kodu z C# za pomocą którego wyświetlam dane:

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


Czy może ktoś się spotkał z podobnym przypadkiem? Czy jest to problem z kodem w C# czy może w programie w mikrokontrolerze? Do wysyłania danych korzystam z bibliotek Mirka. Będę wdzięczny za wszelką pomoc.

Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2015, o 17:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

To co pokazałeś to tylko odebranie i wyświetlenie informacji, nie wykonujesz tutaj żadnych obliczeń. Pokaż jak w uC przeliczasz wartość ADC na dane końcowe i sposób konstruowania i wysyłania ramki.

Najprawdopodobniej nie wykrywasz poprawnie początku i końca ramki i dane są źle interpretowane (wartości przypisywane do nie swoich pól)

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2015, o 19:55 
Offline
Użytkownik

Dołączył(a): 27 sty 2014
Posty: 73
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2015, o 20:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

Na podstawie screenów widać, że to co wysyłasz to nie zawsze jest odczytywane w całości w C#

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

a w tym czasie dane jeszcze lecą z uC. Nie zdążył wysłać całości, więc odczytałeś część, a reszta trafiła do bufora wejściowego C#.
Jeśli wykonasz kolejny odczyt danych to tych informacji odczyta więcej (spóźnione dane) niż oczekujesz i stąd ten bałagan.

Zdefiniuj sobie proste pola start/stop ramki i będziesz mógł wtedy zweryfikować czy ramka nadleciała poprawnie. Może to wyglądać np.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2015, o 20:41 
Offline
Użytkownik

Dołączył(a): 27 sty 2014
Posty: 73
Pomógł: 0

Hmm jeżeli chodzi o mikrokontroler to rozumiem ale jak to sprawdzić w C# kodem który podesłałeś to nie łapię za bardzo :(

------------------------ [ Dodano po: 7 minutach ]

Chociaż chwila chyba już złapałem o co chodzi ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2015, o 20:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

Próbuj próbuj, jak coś to pomogę.

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2015, o 21:08 
Offline
Użytkownik

Dołączył(a): 27 sty 2014
Posty: 73
Pomógł: 0

Jest postęp już poniżej 100 mi wyświetla dane ;) ale nie jestem przekonany czy dobrze napisałem kod w C#:

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


No i wyświetla mi teraz jeszcze te dwa znaki "<>"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2015, o 21:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

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


zdebuguj sobie taki kawalek kodu "na sucho" i zobacz ja to działa

Dodam, żebyś dane z portu dopisywał do zmiennej dane zamiast inicjalizować ją zawsze na nowo, wtedy będziesz "obrabiał" wszystkie dane które nadlecą (będzie ciągłość zamiast sieczki)


Autor postu otrzymał pochwałę

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 sty 2015, o 20:13 
Offline
Użytkownik

Dołączył(a): 27 sty 2014
Posty: 73
Pomógł: 0

Dzięki wielkie za pomoc :) działa jak trzeba :) Trochę to buforowanie zwolniło mi odczyt tych pomiarów ale po zastosowaniu opóźnienia za pomocą Timera w kodzie mikrokontrolera + twoj kod rozwiązał całkowicie problem :) Jeszcze raz WIELKIE DZIĘKI :)



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: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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