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



Teraz jest 6 sty 2025, o 21:21


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 19 mar 2016, o 16:25 
Offline
Użytkownik

Dołączył(a): 01 sie 2015
Posty: 40
Pomógł: 0

Wzorując się ma mechaniźmie działania programu P. Mirka z poradnika "WIFI - CLIENT - WWW/PHP" spróbowałem zrobić podobne narzędzie współpracujące bazą danych i skryptem php na mojej stronie sucyn.c0.pl oraz (w późniejszym czasie) aplikacją na androida, której temat poruszałem niedawno na tym forum :)

Problemem stało się napisanie programu na at32, która ma za zadanie:
1)wysłać zapytanie na moją stronę internetową przesyłając w adresie url odpowiednią zmienną do poprawnej reakcji skryptu php
2)ze strumienia danych zwrotnych ze strony ma wyszukać pierwszy znacznik "#", następnie kolejne znaki wpisać do tablicy znaków aż do momentu trafienia na drugi znacznik "#"
3) utworzoną w ten sposób tablicę znaków ma porównać z inna ustaloną w programie tablicą
4)jeśli porównanie nie zwróci wartości "NULL" to program wysyła na stronę kolejną zmienną która zastępuje wyszukiwaną dotychczas w bazie danych

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


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


W bibliotece MK_USART zmieniłem wielkość bufora nadawczego i odbiorczego na 100 oraz ze względu na zastosowany kwarc 16MHz szybkość UART'a na 38400. Moduł WIFI skonfigurowany chyba dobrze bo prawidłowo wysyła zapytania do serwera-sprawdzone.
Problemem jest pierwsza pętla wyszukująca pierwszy znacznik "#" ponieważ nigdy się nie kończy tak jak by nie znajdowała tego znacznika.
Proszę o pomoc w znalezieniu przyczyny tego problemu bo wydaje mi się że nie rozumiem do końca zasady działania funkcji "uart_getc()" i pewnie tu coś pomieszałem....



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2016, o 22:12 
Offline
Użytkownik
Avatar użytkownika

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

Wycinek kody dla innej stronki, ale możesz się wzorować. Zmień tpstr.delim1 i tpstr.delim2 na swoje. Proponuję też na początek odkomentować test

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: 20 mar 2016, o 00:07 
Offline
Użytkownik

Dołączył(a): 01 sie 2015
Posty: 40
Pomógł: 0

Dzięki icer_cmg!
Twój kod nie działał od razu, ale wystarczyło podmienić inicjalizację usarta z przekazaną szybkością "USART_Init(38400);" na "USART_Init(__UBRR);" i teraz wszystko śmiga!!!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2016, o 18:08 
Offline
Użytkownik

Dołączył(a): 01 sie 2015
Posty: 40
Pomógł: 0

Jeszcze mam takie pytanie, dla czego kolejne zapytania do strony internetowej muszą być wysyłane z ok 1500ms przerwą? Czy to wina modułu, mojej sieci, serwera hostingowego czy może programu, obsługi uart? Np: wysyłając dwa zapytania jedno po drugim serwer przetwarza tylko to pierwsze, drugie jest pomijane.



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 2 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO