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



Teraz jest 9 lut 2025, o 21:50


Strefa czasowa: UTC + 1





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

Dołączył(a): 02 cze 2014
Posty: 123
Pomógł: 0

Witam
Chciałem napisać programik do pomocy przy testach z komendami AT. Napisałem go w Delphi 7. Nie działa mi jednak prawidłow odbieranie tekstu z AVR. Problem na pewno leży w mojej procedurze odbiorczej w aplikacji na PC. A AVR jest wszystko ok i tej alternatywny nie rozpatrujmy.
Jakie są objawy?
Gdy AVR przysyła mi do PC tekst o długości 32 bajtów lub dłuższy zaczyna występować dziwne zjawisko dzielenia odebranej wiadomości przedstawiłem to na poniższym zdjęciu:

Obrazek

A tutaj kawałek procedury odbiorczej (taką znalazłem w internecie jako przykładową dla ComPorta)

Obrazek

Z moich obserwacji zachowuje się to tak że komputer wykrywa nadlatujące dane ale procedura odbierająca z 2 zdjęcia zostaje wywołana za wcześnie gdy dane jeszcze nadlatują i odczytanie ich zachodzi jak gdyby w dwóch krokach. Najpierw np 12 bajtów a potem 20. Zmienna Count informuje procedure mam już cześć danych a potem znowu koleją porcję.
Oczywiście mogę zrobić takie sklejanie dopóki nie będę miał 32 bajtów to sklejam dane ale gdy nadlecą inne dane o innej długości to już tego nie będę wiedział musiał bym znowu dodawać kolejne uwarunkowania.
Mnie zależy na uniwersalności czyli tak jak w standardowym Puty kolejne nowe dane w nowej linii.

Ma ktoś jakieś doświadczenia z Delphi i odbieraniem przez Rs jak to robicie?
Jak ktoś chce przetestować do niech w AVR da po prostu prosta pętle wysyłającą jakiś napis a na tym programie odbiera tylko. Problem też będzie widoczny.

Pozdrawiam miłej zabawy.

_________________
http://mojekonstrukcje.pl/



Ostatnio edytowano 7 cze 2015, o 20:10 przez TomekTomek55, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 cze 2015, o 15:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 sie 2013
Posty: 795
Lokalizacja: Poznań
Pomógł: 59

Nie wiem jak w delphi, ale w C# miałem podobny problem, a rozwiązaniem było użycie funkcji readline do obsługi portu com. Różnica jest taka, że funkcja ta zwraca odebrany string dopiero po odebraniu \r\n. Może to coś podpowie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 cze 2015, o 15:29 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 123
Pomógł: 0

No właśnie to coś w tym stylu by musiało być, ale nie chce robić jakichś dziwnych własnych rozwiązań bo chciałem jakieś sprawdzone. Wcześniej już też walczyłem z tym tematem i w jednym programie sobie poradziłem ale tak jak wspomniałem nie było to uniwersalne.

_________________
http://mojekonstrukcje.pl/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 cze 2015, o 16:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 sie 2013
Posty: 795
Lokalizacja: Poznań
Pomógł: 59

Nie wiem dokładnie jak jest w delphi, może ktoś inny się wypowie, ale w C# walczyłem z urządzeniem, które w różny sposób potrafiło kończyć nadawanie. Polegało to na odbieraniu znak po znaku, parsowaniu i doklejaniu do odebranego stringu lub jeśli nadszedła znak końca nadawania - przekazanie stringa dalej. Czasem mówi się trudno



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 cze 2015, o 21:02 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 123
Pomógł: 0

Witam
udostępniam wszystkim zainteresowanym programik przydatny przy realizacji ćwiczenia L21 UART ASCII AT.

Szczegolnie w fazie testowania programu w mikrokontrolerze gdy robimy pierwsze ruchomiania i cos nam nie dziala.Wtedy wlasni
e nie wiemy czy moze mamy zle skonfigurowany terminal. W ten sposob jedna niewiadoma mamy wyeliminowana.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.

_________________
http://mojekonstrukcje.pl/



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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