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



Teraz jest 8 maja 2026, o 23:54


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 29 maja 2014, o 22:19 
Offline
Nowy

Dołączył(a): 18 maja 2014
Posty: 9
Pomógł: 1

Szanowni Koledzy, jestem początkującym i próbuję napisać wydawałoby się prosty program, który ma za zadanie odebrać dane z jakiegoś urządzenia, łańcuch max 500 znaków (przeznaczony na drukarkę) i wysłać to samo, ale 2 razy na drukarkę. Używam ATmegi 8, port Rx odbiera dane bezpośrednio z innego procka, a port Tx wysyła to 2 razy na drukarkę, tak to sobie wymyśliłem. Korzystam z biblioteki MKUART z niebieskiej książki.
Proste, a jednak okazuje się, że jak znam ilość odebranych znaków „listing 1” to wszystko działa poprawnie, ale gdy ich nie znam „listing 2”to w 1 części wydruku program dopisuje na początku część znaków będących początkiem wydruku, a w 2 części wydruku (kopii) tyle samo znaków na początku zabiera. Liczba dodanych znaków zależy od długości bufora TX, im większy bufor tym więcej znaków. W przypadku, kiedy w linii „uart_putc(Znak);” postawię komentarz „listing 3”, to instrukcja if działa właściwie. Próbuję na różne sposoby i sam już nie wiem jak mam sprawdzić kiedy następuje koniec odebranych danych, żeby można było wysłać 2 część. Proszę o pomoc.


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

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

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: 30 maja 2014, o 14:12 
Offline
Użytkownik

Dołączył(a): 02 lut 2014
Posty: 38
Lokalizacja: Jaworzno
Pomógł: 2

interson napisał(a):
(...) w 1 części wydruku program dopisuje na początku część znaków będących początkiem wydruku, a w 2 części wydruku (kopii) tyle samo znaków na początku zabiera. Liczba dodanych znaków zależy od długości bufora TX, im większy bufor tym więcej znaków.


500 bajtowy bufor to sporo. Na pewno nie masz problemów z przepełnianiem stosu ?
Jeśli każdy tekst kończy się zerem to można nieco uprościć pętlę, np. tak:

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: 30 maja 2014, o 16:45 
Offline
Nowy

Dołączył(a): 18 maja 2014
Posty: 9
Pomógł: 1

Nie pomogło. Próbowałem podobnie, a także z buforem 100 bajtów i ciągle to samo. W przypadku wpisania właściwej ilości znaków (listing 1), wydruk jest ok. Jeżeli zmniejszę wielkość bufora Tx w pliku mkuart.h, to liczba bajtów dopisywanych i ujmowanych się zmniejsza. Sugerując się listingiem 3 próbowałem bez echa, tylko po odczytaniu całego stringu wydrukować 2 razy, ale jest jeszcze większa maniana. Nie wiem co jest grane.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2014, o 17:24 
Offline
Nowy

Dołączył(a): 18 maja 2014
Posty: 9
Pomógł: 1

Problem rozwiązałem, temat uważam za zakończony.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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