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



Teraz jest 8 maja 2026, o 15:16


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 21 lip 2016, o 21:29 
Offline
Nowy

Dołączył(a): 15 maja 2016
Posty: 10
Pomógł: 0

Witam,
Mam problem z którym nie umiem sobie poradzić, tzn rozwiązałem to "na około", ale nie bardzo mnie satysfakcjonuje takie rozwiązanie. Otóż potrzebuję odebrać jeden znak, który nie jest jak wszystkie stringi zakończony '0' (nie ma ani CR ani LF) . Próbowałem sobie poradzić modyfikując switch(data) i wpisując tam swój własny case - ostatecznie się udało, ale odebranie interesującego mnie znaku sygnalizuję zmianą flagi, którą odczytuję, a następnie muszą z powrotem ją ustawiać. Jest to nieeleganckie i niepraktyczne, chciałbym aby podobnie jak wszystkie odebranie stringi, odebrany znak wywoływał zdarzenie i był zakończony 0. Jak sobie z tym poradzić? Pewnie najlepiej by było w jakiś sposób lekko zmodyfikować bibliotekę, niestety nie wiem jak. Niestety nie mam również możliwości zmiany tego znaku, bo jest to fragment komendy AT. Z góry dzięki za odpowiedzi i pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lip 2016, o 16:02 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

niekoniecznie możesz do odebranego znaku dodać sobie przecież CR/LF
za mało szczegółów podałeś by coś orzec

komendy AT wysyłam tak że wysyłam komendę bez AT i choć jest to wymagane AT dodaję w procku po odebraniu żądanej sekwencji znaków
czasem też łapię całego stringa do bufora i z niego wydobywam to co mnie interesuje np 5bitów do których podczas parsowania dodaję AT+ i CR/LF i przesyłam dalej do np m560



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lip 2016, o 16:33 
Offline
Nowy

Dołączył(a): 15 maja 2016
Posty: 10
Pomógł: 0

Dzięki SunRiver za odpowiedź. Dodać znaku CRLF nie mogę, ponieważ jest to znak wysyłany przez moduł wifi obsługiwany komendami AT - nie mam możliwości ingerencji w to co odpowiada moduł. Niestety został on przez kogoś tak specyficznie zaprogramowany, że wszystkie komendy kończą się CRLF, natomiast jedna z nich, najbardziej użyteczna, odpowiada pojedynczym znakiem. Chyba, że masz na myśli dopisanie tego "entera" już po odebraniu tego jednego znaku? Jeśli tak, to gdzie to najwygodniej zrobić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lip 2016, o 18:35 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 517
Pomógł: 26

Kolego możesz w case(data) wstawić nie flagę tylko wywoływanie funkcji którą sobie wcześniej zarejestrujesz

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lip 2016, o 22:33 
Offline
Nowy

Dołączył(a): 15 maja 2016
Posty: 10
Pomógł: 0

Dziękuję za sugestie, rozwiązałem to jednak inaczej. Zrobiłem dodatkowy case z kodem ASCII mojego znaku, gdzie zwiększyłem ascii_line. To rozwiązanie działa, jednak nie jestem pewien czy ascii_line nie jest zwiększane dwukrotnie, z racji tego, że nie do końca rozumiem kiedy można pominąć "break" na końcu case'a.

------------------------ [ Dodano po: 25 minutach ]

OK, myślę, że wszystko działa jak należy. Dziękuję za pomoc i pozdrawiam



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