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



Teraz jest 3 lis 2024, o 13:35


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 
Autor Wiadomość
PostNapisane: 24 lut 2015, o 10:53 
Offline
Nowy

Dołączył(a): 18 gru 2014
Posty: 8
Lokalizacja: Jastrzębie
Pomógł: 0

Witam.
Mam mały zgryz panowie, otóż od jakiegoś czasu próbuje stworzyć komunikację dwukierunkową między dwoma mikrokontrolerami.
Nie umie sobie z tym poradzić,zadanie pewnie proste ale ja nie potrafię i nie mam już sił :)
Komunikacja ma wyglądać tak:
wysyłam 6 danych 0-255 ---> odbiera 6 danych przetwarza i odpowiedź.
Nie wiem nawet już skąd ściągnąłem ten kod ale niby to działa,ale jak napisałem wcześniej niby.
Może któryś z kolegów podpowie jak by to można prościej zrobić.


Nadajnik:

Źle wstawiony listing - Różowo-zielony J.

Odbiornik:

Źle wstawiony listing - Różowo-zielony J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lut 2015, o 21:44 
Offline
Nowy

Dołączył(a): 18 gru 2014
Posty: 8
Lokalizacja: Jastrzębie
Pomógł: 0

Nic nie rozumie z wątku który zapodałeś,chyba nawet rozmowa gdzieś poszła bokiem.

Mikrokontrolery to Atmega8 połączone sprzętowymi RS, nie wiem od czego zacząć a widzę że to chyba mnie przerasta.
nic kompletnie nie rozumie,na jakimś forum przeczytałem że niema co się zabierać za komunikację binarną bo to dopiero problem opanować.
link do tego postu gdzie to przeczytałem :
http://forum.atnel.pl/topic1021.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lut 2015, o 23:48 
Offline
Nowy

Dołączył(a): 18 gru 2014
Posty: 8
Lokalizacja: Jastrzębie
Pomógł: 0

Dziękuję Ci bardzo za okazaną pomoc ale ja jestem zbyt "" żeby nie używać wulgaryzmów.
Przerobiłem to co napisałeś:


Źle wstawiony listing - Różowo-zielony J.

Odbiornik:


Źle wstawiony listing - Różowo-zielony J.

No i dostaję same śmieci które o dziwo mają swoją powtarzalność.
Na domiar złego po zastosowaniu w nadajniku funkcji :"Config Serialout = Buffered , Size = 20" mamy piękny zawias.
Programy testuję na innych procesorach bo wygrzebałem płytki z wyświetlaczami żeby widzieć co się dzieje docelowo będą to
dwie Atmega8.
Nadajnik to Atmega644 taktowana zewnętrznym 8Mhz / Baud=9600
Odbiornik to Atmega32 taktowana zewnętrznym 8Mhz / Baud=9600

Aż mam chęć nakręcić film o tym co się dzieje na LCD odbiornika :)
Pozostaje na dziś już mi tylko odkręcić conieco i się ululać :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2015, o 00:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Stefan zagadnienie jest w miarę proste i Bartek podał Ci linki do postów zobacz na to co napisałem i przeanalizuj, głwnie robimy to na dwa sposoby ASCII albo binarnie.
Ja uważam że binarnie jest prościej i szybciej przesyła i mniej klepania na klawiaturze minus taki ze niedoświadczeni maja problemy.
Tu przykład ASCII
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tu jest krótki kod który odczytuje położenie anteny i wysyła przez uart do modułu LAn i do sterownika głownego.

Zobacz na moje wpisy z linku który podał Bartek.
Jeśli nie ogarniesz do weekendu to się odezwij, chętnie pomogę, dziś niestety jestem po 14 godzinnej dniówce mam dość idę spać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2015, o 11:05 
Offline
Nowy

Dołączył(a): 18 gru 2014
Posty: 8
Lokalizacja: Jastrzębie
Pomógł: 0

Witam.
Panowie jest mały sukces, mały dlatego że udało się wysłać jedną cyfrę
Nadajnik:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


Teraz Moje pytanie:
W odpowiedzi dostaję taki oto ciąg "49 13 10"
49 - ASCII "1"
13 - ASCII "Enter"
10 - ?? No własnie co to jest i poco to leci już za znakiem końca linii ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2015, o 11:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 sty 2014
Posty: 446
Lokalizacja: DKL
Pomógł: 53

@stefan_25, 10 to w ASCII LF, czyli znak przejścia do nowej linii.
Tu masz tabelkę z opisami http://pl.wikipedia.org/wiki/ASCII

_________________
Migracja z punktu B do punktu C
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2015, o 10:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Witam Stefan jakieś postępy??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2015, o 15:21 
Offline
Nowy

Dołączył(a): 18 gru 2014
Posty: 8
Lokalizacja: Jastrzębie
Pomógł: 0

Witam.
Wybaczcie panowie że nie odpisywałem z powodu braku czasu ale niestety nie umie tego opanować.
Gdzieś robię błąd,aplikację miałem zamiar docelowo wykorzystać przy sterowaniu kilku urządzeń ale niestety.
Po podłączeniu 3 po RS-485,czyli "1-Master" / "2-Slave" wszystko przestaje działać.
Wykorzystałem kod znaleziony gdzieś tam w internecie i podany na samym początku ale gdzieś mi się to wiesza.
Napisałem na początku że komunikacja miedzy 2 uP bo zwykle od czegoś trzeba zacząć i tu już małe problemy się pojawiły,
jak to ogarnąłem mniej więcej (z akcentem oczywiście na mniej :)) to kolejne problemy.
Przy odpytywaniu urządzeń czy są i o status jego pracy wszystko idzie w łeb.
Jeśli mógłbym prosić o jakąś prostą komunikację to będę wdzięczny bo ja wysiadam,wysłać 6 danych wszystko to cyfry żadnych liter
6 x Data x (0-255) o potem to odebrać.

Na razie nie mam zbytnio czasu bo jeszcze mam budowę domu i trzeba pilnować fachowców a przy okazji jak to w Polsce trzeba
być samemu fachowcem :) Bo przecież wezwałem fachowców :)

Dziękuję za zainteresowanie tematem i wszelaką pomoc a i ja postaram się odpisywać jak do czegoś dojdę i będę miał czas,
jest pogoda więc muszę ją wykorzystać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2015, o 21:54 
Offline
Nowy

Dołączył(a): 18 gru 2014
Posty: 8
Lokalizacja: Jastrzębie
Pomógł: 0

Nie mam "wait'ów" w sensie że jest malutki wygląda to tak:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Myślę że on temu nie szkodzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2015, o 22:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Stefan właśnie coś dla Ciebie piszę czekaj cierpliwie zaraz to wyślę

------------------------ [ Dodano po: 43 minutach ]

Pomińmy na moment rs485 i sterowanie kontrolą przepływu skupmy się na przesyłaniu danych pomiędzy dwoma układami i tylko TTL żeby było łatwiej i bez sprzętowych błędów.
Jak wiadomo transmisja przy użyciu ASCII jest łatwiejsza, ale jest dużooooo więcej pisania nie będę się tu powtarzał wiec pozwolę sobie przekleić parę przykładów.
Na początek transmisją binarna przy użyciu co ważne tablicy.
Parę lat temu robiłem testy z których wynikło że binarnie najlepiej jest wysyłać całe tzw paczki danych jako tablice. Bo prawdopodobieństwo wystąpienia błędu było najmniejsze.
Buforowanie portu szeregowego to podstawa.
dla zrozumienia zagadnienia przykład z bascomowego helpa:
Zwróć uwagę na "'first compile and run this program with the line below remarked
Config Serialin = Buffered , Size = 20
"
Możesz test przeprowadzić w symulatorze zmień wait 1 na waitms 100 nie dodaj $sim na początku programu.
Uruchom program i wciskaj kolejno ale szybko klawisze 12345678.
Co zobaczysz?
Program zdąży odczytać tylko np klawisz 1,2 później w oknie terminala wyświetli się np tylko 6,7.

Teraz skompiluj program z linią nie za remarkowaną
Config Serialin = Buffered , Size = 20

Wykonaj te same kroki jak powyżej wciskaj szybko cyfry od 1 do ....

Obserwuj okno terminala, kiedy ty już skończyłeś wciskać klawisze cyfry nadal pokazują się w terminalu.

Tak właśnie działa buforowanie. W przykładzie poniżej procesor był zajęty tylko bezczynnym czekaniem waitms 100 ale może to być coś innego czy w danym momencie będzie zajęty nasz układ.

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



Co potrzebujemy do wysyłania danych ?
Potrzebujemy tablice w której te dane będą umieszczone, na pewno bufor, przydała by się jakaś flaga że są już nowe dane do wysłania, co ważne nie będziemy wysyłać bez sensu tych samych danych.

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


Obowiązkowo konfiguracja portów a w naszym przykładzie jeszcze przetwornik ADC i timer
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jakieś tam zmienne w tym przypadku będzie to oś X oraz oś Y
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Na potrzeby naszego testu pominę uśrednianie wyników z ADC nie che mi się tego pisać i nie jest to tematem rozmowy.
Standardowo zaczynamy od właczenia przerwań
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I zaczynamy naszą część główną.
Zanim nasz nadajnik zacznie nadawać dane pobrane z wejścia ADC musimy go jakoś zsynchronizować czyli czekamy na sygnał gotowości od odbiornika w tym wypadku może to być ASCII 13 czyli enter
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Teraz gdy wartość zmiennej przetwornik będzie różna od wartości zmiennej osy wtedy przypisujemy wartość zmiennej przetwornik do zmiennej osy
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ustawiamy naszą flagę_TX rozbita na 8 bitów
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Korzystając z tablicy Serial_tx(1) , 1 = Osy przypisujemy wartość zmiennej osy do pierwszej komórki naszej tablicy.
Składnia jest następująca serial_tx(komórka tablicy), ilość bajtów, my przypisujemy jeden bajt od pierwszej komórki tablicy.

Podobnie dla zmiennej osx ale tym razem zaczynamy od drugiej komórki Serial_tx(2) , 1 = Osx i oczywiście zmieniamy bit flagi Flag_tx.1 = 1
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W ten sposób możesz przypisywać wartości zmiennych do twoich komórek w tablicy

Całość można zamknąć w select case
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Teraz jeśli jedn z naszych flag flag_tx jest ustawiona lub jak kto woli flag_TX <>0 jest różna od zera. Wysyłamy całą tablice:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

I koniecznie resetujmy flagę aby nie wysyłać bez sensu tych samych danych.

Składnia jest prosta: Printbin Serial_tx(od której komórki zaczynamy wysyłać) ; ile bajtów wysyłamy

Kolejny raz muszę się powtórzyć, ponieważ nie uśredniam danych pobranych z ADC następują spore wahania wartości zmiennej przetwornik.
Co powoduje przypisanie wartości zmiennej przetwornik do osy oraz osx

To by było na tyle w części nadawczej w dużym uproszczeniu przy użyciu tablicy i printbin
w kolejnym poście część odbiorcza przy użyciu inputbin
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Zapewne znajdę tu parę błędów postaram się je poprawić w miarę ponownego czytania.



Ostatnio edytowano 7 mar 2015, o 17:57 przez pikczu, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 mar 2015, o 00:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Cześć odbiorcza przy użyciu inputbin i tablicy.
Będziemy kręcić serwem modelarskim w zależności od wartości ADC
Tak samo jak w części nadawczej mamy konfigurację poru szeregowe, dodatkowo konfiguracje serw i timera oraz zmienne.
A także przerwania.

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


Zaraz przed wejściem w pętle główna wysyłamy naszą wiadomość o gotowości do odbioru czyli drukujemy enter Print Chr(13); co ważne z średnikiem na końcu.
Średnik na końcu standardowego Print coś tam ; nie wysyła ASCII 13 czyli enter i LF ASCII 10 czyli line feed.

przechodzimy do pętli głównej naszego odbiornika.
Będziemy używać komendy ischarwaiting co dosłownie oznacza "że jakiś znak czeka w buforze"
Jak już wspomniałem powyżej bardzo ważne jest buforowanie wejściowe jak i wyjściowe.
Dlatego musimy użyć Config Serialin = Buffered , Size = 120 tym razem zwróć uwagę jest tam serialIN ale wróćmy do naszego odbioru.

Wcześniej tworzymy zmienną serial_flag która będzie przyjmowała wartość jeden za każdym razem jak w buforze będzie jakiś znak gotowy do odczytu.
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak to dział za każdym razem kiedy w buforze odbiorczym są jakieś dane flaga Serial_flag przyjmuje wartość 1 po czym zapalamy led podpięty do portb.0 i przypisujemy zawartość bufora do tablicy serial_rx zaczynając od pierwszej komórki naszej tablicy.
Składnia jest taka Inputbin Serial_rx(do której komórki zaczniemy zapisywać ) , ile bajtów czyli w naszym przykładzie Inputbin Serial_rx(1) , 6 od pierwszej komórki zapisujemy sześć kolejnych.

To była najważniejsza część odbiór przy użyciu INPUTBIN i przypisanie do tablicy, co ważne robimy to "ciurkiem" a nie:
Obrazek
Później wykorzystujemy odebrane dane w dowolny sposób.
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



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


Teraz już idę spać jutro opiszę nadawanie i odbiór w ASCII.
--------------------------------Edit ---10:05 07.03.2015

Wrócę jeszcze na moment do wysyłania przez printbin, ponieważ powyższy przykład jest tylko dla dwóch urządzeń można go rozbudować o adres co pozwoli na komunikacie z wieloma urządzeniami przy użyciu rs485. jeśli korzystasz z układów bez automatycznej zmiany kierunku użyj wspomniane przez Bartka Config Print0
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Rozważ jeszcze jedną możliwość, a mianowicie użycie dwóch linii rs485 jedna do nadawania druga do odbioru sprawdza się to bardzo dobrze.


Jak zapewne zauważyłeś tablica miała rozmiar 6 bajtów a dane były zawarte tylko w pierwszym i drugim, kolejne 4 były puste.
Nic nie stoi na przeszkodzie aby dodać tam adres i sumę kontrolną dla naszych 5 komórek crc8 a wręcz jest to konieczne.
wysyłanie ramki danych z adresem i suma kontrolna mogło by wyglądać tak:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Do testów polecam program ze strony Pololu Serial Transmitter utility for Windows
https://www.pololu.com/docs/0J23



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 mar 2015, o 12:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Przejdźmy teraz do odbioru za pomocą ASCII
Kluczowe fragmenty kodu są takie same mam na myśli ischarwaitg
Na początek przykład z Bascomowego helpa który w prosty sposób rozwiązuje adresowanie naszych urządzeń na magistrali rs485 czyli BYTEMATCH
Oczywiście buforowanie jest wymagane i niech to będzie swego rodzaju nawyk, zawsze buforujemy uart wejściowy jak i wyjściowy.

Tak ja w poprzednich przykładzie z helpa najpierw uruchom w symulacji bez linii
Config Serialin = Buffered , Size = 20 , Bytematch = 65
Zachowanie jest identyczne jak w przykładzie powyżej bez bufora.

Teraz dodaj linię z ustawieniami bufora i dopasowaniem bajtów czyli Bytematch = 65
Bytematch = 65 rozpoznaje nam duża literę A jeśli teraz uruchomisz symulację wciskając klawisze jak poprzednio zauważysz że są one buforowane a dodatkowo po wysłaniu dużej litery A mamy proste i skuteczne rozpoznawanie np naszego adresu lub jakiegoś specjalnego znaku.
Proste a zarazem bardzo skuteczne.
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


cdn.



Ostatnio edytowano 7 mar 2015, o 15:51 przez pikczu, łącznie edytowano 1 raz

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

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Piszemy poprawne rozwiązanie przy użyciu ASCII
Standardowo ustawienia konfiguracyjne, zmienne i przerwania:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Deklarujemy zmienne dla przykładu zmienne dla uart 0 i uart 1

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

Będziemy używać komendy split która rozbije przychodzące znaki po znaku spacji.

Standardowo zaczynamy od sprawdzania czy znak jest w buforze
przykład dla uart0:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Sprawdzamy czy znak jest w buforze czyli If Ischarwaiting() > 0 Then pobieramy znak z bufora do zmiennej Znak_.
Teraz jeśli nasza zmienna Znak_ zawiera 13 ASCII czyli enter lub Len(uart_komenda) > 20 Then ilość odebranych znaków jest większa niż 20 to Call Uartrx
Ilość znaków musisz dobrać według swoich upodobań nie wiem jak długie będą twoje komendy.

Teraz przechodzimy do uartrx wspomniane na początku split będzie znajdować się właśnie w tym miejscu.
Tniemy nasze komendy żeby można było je rozróżnić
Ile_elementow = Split(uart_komenda , Getcommands(1) , " ")
Zmienna Ile_elementow zawiera jak sama nazwa mówi ilość pociętych elementów.
Zmienna uart_komenda to nasza źródłowy string do którego dodawaliśmy znaki podczas odbioru i pobierania z bufora Uart_komenda = Uart_komenda + Chr(znak_) 'kluczowe budowanie bufora
Zmienna Getcommands(1) to nasza tablica o rozmiarze 10 na 9 znaków, zapewne zauważyłeś po przecinku cudzysłów to właśnie znak spacji miedzy cudzysłowiem będzie naszym punktem w którym będzie następowało cięcie i umieszczanie kolejno w komórkach tablicy Getcommands(1).

Po uzyskaniu już pociętych komend reszta jest już z górki. musimy tylko zdecydować jak reagować na nasze komendy.
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Przejrzystym narzędziem do tego będzie select case, wiec piszemy:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

W łatwy przejrzysty sposób możemy umieszczać komendy jedna pod druga, używanie stałych jeszcze ułatwi nam zadanie raz napisane select case będziemy mogli edytować w szybki sposób.
Wracamy na początek naszego programu i dodajemy stałe:

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


Dla lepszej zabawy wybieramy w opcjach bascoma emulowanie terminala vt100 i teraz możemy korzystać z własnych kolorów oknie terminala.
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


To by było na tyle nie będe omawiał select case i zawartych komend zaprogramuj układ sparwdź sam jak to działa.
Obsługa drugiego uarta jest zrobiona podobnie ale nie identycznie porównaj sam.
dla testu wpisz w terminalu "kot" sprawdź tez co robi "kon paszcza"
Pozdrawiam
Pikczu

Ps: błędy i literówki poprawie później.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2015, o 14:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Stefan jakieś postępy, jakieś pytania ??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 mar 2015, o 18:14 
Offline
Nowy

Dołączył(a): 18 gru 2014
Posty: 8
Lokalizacja: Jastrzębie
Pomógł: 0

Witam.

Dziękuję wszystkim za podpowiedzi,można tak powiedzieć że Wspólnymi siłami się coś udało i nawet to działa :)

Nie myślałem że tylu ludzi się udzieli do rozmowy i przyznam iż jestem w szoku że mogą być tak przychyli ludzie :)

Naprawdę bardzo dobre forum i wspaniali użytkownicy :)

Pozdrawiam wszystkich i jeszcze raz dziękuję za podpowiedzi a nawet gotowe programy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 mar 2015, o 22:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Jesli tych pare linii kodu przydaly sie do czegos wystarczy ze klikniesz pomogl
Pozdrawiam
Pawel



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 mar 2015, o 07:52 
Offline
Nowy

Dołączył(a): 18 gru 2014
Posty: 8
Lokalizacja: Jastrzębie
Pomógł: 0

Witam.
Nie zauważyłem tegoż guziczka :) Odpowiednim osobom już poleciały Pochwały :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2015, o 19:06 
Offline
Użytkownik

Dołączył(a): 19 lip 2013
Posty: 760
Pomógł: 37

Witam!
Wroce do tego wątku bo mam pytanie.
Cytuj:
Ile_elementow = Split(uart_komenda , Getcommands(1) , " ")

jak zapisać jak znak rozdzielający to właśnie cudzysłów ( " )
Kod:
Getcommands(1) , "chr 34")
?



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

Dołączył(a): 19 lip 2013
Posty: 760
Pomógł: 37

a wielkie dzięki o takim nawiasie nie pomyślałem :)
Proszę bacznie obserwować temat, bo pewnie jeszcze będę miał pytania:)
Pisze obsługę GSM do włączania wabasto i może alarmu w samochodzie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 cze 2015, o 14:30 
Offline
Użytkownik

Dołączył(a): 19 lip 2013
Posty: 760
Pomógł: 37

Właśnie na SIM900 sie bawię.I tez chce zrobić żeby reagował ,tylko na moje dzwonki i sms ,a resztę ignorował.
Trochę z problemami ,ale posuwam sie naprzód.Na razie nie będę Cie prosił o gotowca :).Chce trochę sam pomyśleć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 cze 2015, o 19:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Proponuję założyć nowy wątek a ten trzymać możliwie jak najbardziej na temat komunikacji przez uart miedzy procesorami.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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