Po prostu nie możesz korzystać z instrukcji Input tylko z instrukcji np. Inkey i odbierać 128 bajtów o dowolnej zawartości (nawet bajtów zerowych) Po odebraniu 128 bajtów sprawdzić sumę kontrolną, tak jak pisał kolega mirekk36. Jeśli odebrałeś wysłasz ack spowrotem np. z sumą crc ramki Instrukcja Input się nie nadaje do tego celu. Tylko odbieranie za...
Dołącz do ramki np znak nowej linii '\n' i odbieraj znaki aż do jego napotkania zapisując ramkę do tablicy potem zostaje tylko ją zinterpretować określając wielkość tablicy.
To jest proste jak świński ogon :D ahahahaha, ale napisz kawałek kodu. Czy masz tam jakiś LCD czy nie, czy masz tam jakiś Timer ustawiony do odmierzania sekundy czy Wait`ujesz :D Czy w dokumentacji czujnika pisze, że nadaje tez na końcu niewidoczne w terminalu znaki 13 lub 10? EDIT: aaa masz tu taki prosty. Napisałem przy śniadaniu więc błąd mógł się...
Napisz sobie funkcję, która jako parametr przyjmie odebrany ciąg, w pętli będzie przeglądać kolejne znaki aż do końca ciągu źródłowego (napotka znak o kodzie 0) i jeśli napotka taki z zakresu "0"-"9" to wtedy taki znak dopisze do zmiennej wynikowej. I na koniec funkcja ją zwróci. Myślę jednak, że Tobie potrzebna będzie znacznie bardziej rozbudowana...
Z rozpędu te sprawdzanie Err = 0 dałem w złym miejscu. Err = 1 będzie zapisane jeśli konwersja z Hextring będzie niemożliwa. Czyli, dla przykładu, jeśli zamiast literek od A do F znajda sie tam jakieś inne "dzikie" typu "Z" Dodałem dla testu literki ZZ i dlatego czwarty WOrd juz nie dostał wartości i nie został wyświetlony ;) http://obrazki.elektroda.pl/8680611600_1...
Ja ci radzę jednak wysyłać hexem stałej długości. Np coś takiego: #F,FFFF(enter) Następnie w obsłudze rs'a sprawdzasz jaki przyszedł znak i jeżeli jest # to reset licznika wejścia i zapisujesz dane do bufora. Jak przyjdzie koniec (czyli enter lub podobne) sprawdzasz sobie adres(odpowiedni znak) i przepisujesz sobie zmienne do innego bufora. Dodatkowo...
Przesiadłem się na arduino więc nie wiem cze mogę pisać w tym temacie bo to BASCOM. Uruchomiłem wyświetlacz OLED na szynie I2C. Powiedzcie mi tylko tą zmienną rx jak wstawić jako zmienna zamiast tekstu ? [syntax=cpp]u8g.drawStr( 0, 32, "TEXT"); [/syntax] A chciał bym tam mieć zmienną rx. Samo wpisanie rx nie działa :(
Waitms 500 dodałem dopiero teraz, jest znacznie lepiej. Jeśli kod c# "nie pyta" o zmienną z RS za szybko (dorzuciłem oczekiwanie w kodzie) wszystko śmiga ładnie i nie wykrzaczył mi się do tej pory :)
Nie wiem na czym polega problem kolegi. Poza tym o porcie RS232 mówimy tylko po stronie komputera, koledze chodzi jak mniemam o to, że z komputera są wysyłane dane do procesora i ten powinien je odbierać. Zatem jak kolega napisał po pierwsze należy użyć bufora (dostępny z poziomu BASCOM - poszukaj w helpie) a potem w danym miejscu programu sprawdzać...
Zmienne tablicowe jak najbardzej są zdefiniowane na poczatku programu ,program poprawnie wysyła dane i urzadzenie odpowiada poprawnie(podsłuchiwane na terminalu) ale z kolei do zmiennej ANS trafia inna wartość bajtu niż widziana terminalu ,moim zdaniem to chyba będzie wina szybkość przełacznia kierunku
Witam Chciałbym odnowić temat ze zbliżonym problemem. O tuż mam Atmegę32 oraz czujnik z RS232 BAUD 38400. Na chwilę obecną próby przeprowadzane są na PC. Aby dokonać pojedynczego pomiaru wysyłam następującą komendę do czujnika /020D0059. po czym czujnik odpowiada np: /0B0D00+020000um18. /0B0D00+020001um19. /0B0D00+019999um1B. /0B0D00+020002um1A. /0B0D00+020003um1B....
Ogólne dostępne moduły radiowe są bardzo proste w obsłudze. Posługujemy się samymi przerwaniami nośnej. To tak jak by na sztywno połączyć ze sobą po RS232 dwa procki z tym że w tym przypadku tym "drutem" jest odbiornik oraz nadajnik radiowy. Do prostych projektów takich jak ten zamiast RS232 można bezpośrednio komunikować się po 1-WIRE. Osobiście wolę...
Witam Mam problem z przesyłaniem kilku zmiennych po RS485, tzn. wartość zmiennych przesyłana jest prawidłowo, ale w odbiorniku zmienne zamienione są miejscami. A mianowicie nadajnik wysyła np. zmienne a=504 b=129 c=292, a odbiornik odbiera je tak a=292 b=504 c=129. I nie mogę dojść dlaczego tak mi się dzieje. NADAJNIK [syntax=basic4gl]$regfile = "m32def.dat"...
Ja sobie zdaję sprawę z tego, że gdy program się rozbuduje to może dać znać o sobie takie traktowanie zmiennych. Dlatego we właściwym programie zadeklarowałem zmienną tekstową o właściwej długości i kontroluję czy tekst wpisywany czy to z EEPROM czy też z RS232 ma właściwą długość. Nie mam zamiaru wykorzystywać tego dziwnego zachowania w finalnym programie...
Witam. jak to podłączyć , to chyba nie muszę tłumaczyć ? (RX<->TX,TX<->RX) :) Co do zmiennej prędkości, to zadeklaruj sobie znacznik, po wysłaniu którego , przez jeden z procesorów, i otrzymaniu odpowiedzi od drugiego, odczekujesz chwilkę zamykasz porty i otwierasz je na innej prędkości.
Widać teraz jakie ludziom siano w głowie bascom robi. 3 diody o zmiennej częstotliwości? Przecież to można zrobić na PWMach, 2 timery mają PWM, do jednego można dorobić programowo, albo wsadzić atmegę88 która ma ich wystarczająco dużo. Nie trzeba robić żadnych pętli, nic nie puchnie... Na 89C2051 powstało tyle złożonych projektów, mam analizator stanów...
Spróbuj z tym programem: $regfile = "m32def.dat" $crystal = 8000000 $baud = 9600 Dim I As Byte Dim Znak As String * 1 Do Input "podaj wartosc I:" , I Print "wartosc I wynosi:" ; I If I = 1 Then Do Znak = Waitkey() Print "odebrano znak:" ; Znak Loop Until Znak = "k" End If If I = 2...
Witam Mam pytanie wysyłam przez RS232 daną typu np. 255$0D lub 0$0D itd.... chodzi mi o to by , po odebraniu w BASCOM-ie ten string widzieć w formie zmiennej o wartości 255 , a nie jaki trzy pojedyncze znaki ASCI wysyłam 255$0D odbieram 2 , 5 , 5 , $0D Jak to ułożyć w 255 i zrobić z tego LICZBĘ 255 "znienną" by ją pobrać ? Proszę o Waszą pomoc 'Przykład...
To banalnie proste w petli głównej sprawdzasz klawiature i wpisujesz do zmiennej po znalezieniu wcisnietego klawisza zatrymujesz skanowanie czekasz np 20 ms (tu ustalisz minimalny czas nacisniecia klawisza i pozbedziesz sie drgania stykow ) i ustawiasz jeszcze raz ten port z kturego zbierasz dane i jeszcze raz odczytujesz wartosc tego klawisza jesli...
J.w jakiej użyć procedury przy X 110592?
Myślę że każdy potencjometr powinien być stereo. Jeden kanał powinien działać z urządzeniem audio a drugi powinien dostarczać informacji do ADC , Uc o pozycji potencjometru. Dane do PC mógł byś przesyłać za pomocą RS232 lub innego. To w programie Uc musisz uwzględnić kiedy i w jaki sposób dane będą przesyłane do PC. No i musisz mieć program który będzie...
Cze. Potrzebuję zrealizować transmisję RS232 o następujących parametrach: 31250 b/s, 1 bit startu, 8 bitów danych, 1 bit stopu , bez parzystości, bez sum kontrolnych, bez potwierdzenia odbioru. Co do prędkości to nie ma problemu wstawiam $baud = prędkość i gotowe ale co z resztą jak wyłączyć sumy kontrolne czy do tego też są jakieś polecenia ma to współpracować...
Witam. Od kilku dni próbuje napisać prosty,jak mi się wydawało kilka dni temu ,programik. Chodzi o to żeby zmieniać stan portu w odstępach czasowych z możliwością ich regulacji. Proszę o jakąś ,na razie drobną podpowiedż .
Witam Starałem się wyjaśnić platforma AVR lub zadania jaki ma wykonać NIE JEST TAK WAŻNE jak zorganizowanie komunikacji na RS232 za pomocą paczek HEX! Mogę wykorzystać dowolną większą kość AT! AT90s2313 Akurat tą kość mam gotową do pracy i kompletną do komunikacji na RS232. Czy jest możliwe zorganizowanie takiej komunikacji.? Potem wykona zadania......
Witam wszystkich. Mam problem gdyż mam do napisania program pt. Opracowanie i implementacja programu służącego do eksportowania danych poprzez interfejs szeregowy RS232 . Jak do tej pory udało mi się stworzyć tylko coś takiego co znajduje się poniżej, ale nie wiem dokładnie jak to można sprawdzić czy to w ogóle działa. A poza tym może ktoś z Was powie...
Wiem do czego jest funkcja stcheck i specjalnie ją tam umieściłem. To za jej pomocą ustalana jest wartość zmiennej error na podstawie której można określić czy stos nie został nadpisany. Niby jak mam sprawdzić czy stos jest ok? "$dbg" jest tu nieprzydatne bo rs232 jest za wolny żeby odebrać co 16ms dane i efekty jego działania w logu są żałosne. Najpierw...
Procesor Atmega8 oscylator wewnętrzny 1MHz w Bascomie stosując instrukcję: print "dowolny znak ASCII" w terminalu na PC otrzymuję znaki przesunięte decymalnie o 64 np: print "01245" otrzymuję "pqrstu". Co może być tego przyczyną? Serdecznie pozdrawiam
Problem polega na tym, że gdy mam ustawione 9600, data bits 8, stop bits 1, parity none jest wszystko w porządku.Ale jeśli ustawie np 4800 lub coś innego np data bits 7 już nie działa i nie wiem co jest grane. Jak używałem komendy input() wszystko pięknie działało a z inkey() nie chce. $regfile = "m162def.dat" 'Kwarc 14,7456MHz $crystal =...
Po wczorajszym, (zamknięcie tematu, i itp) Postanowiłem że postaram się coś samodzielnie wyklecić w bascomie (w końcu to mój projekt) narazie to tylko przykładowy kod, w którym chodzi tylko o wyjaśnienie zagadnienia, i ewentualne poprawki. MASTER : $regfile = "attiny2313.dat" $crystal = 4000000 Config Serialin = Buffered , Size = 15 Const...
Witam Bardzo proszę o pomoc, jak napisać krótki programik w Bascom. Aby dostać się do konfiguracji USR-WIFI232-T należy wysłać po RS232 "+" 20ms "+" 20ms "+" 1000ms "a" w DELPHI tak to wysyłam i to działa. Proszę zedytować post i użyć przycisku SYNTAX. Przykładowo zrobiłem to dla Delphi.
Witaj, Używam programowej obsługi wejściowego bufora FIFO USARTa zaimplementowanego w Bascomie oraz następującej konstrukcji do jego obsługi umieszczonej w głównej pętli programu: 'Konfigurujemy programowy bufor sprzętowy Config Serialin = Buffered , Size = 128 Enable Interrupts ......... 'W pętli głównej: If _rs_bufcountr0 <> 0 Then Do Dana...
Mam takie małe pytanko. Otóż bawie sie juz kilkadni i nie moge sobie poradzic z realizacja komunikacji procesora z portem szeregowym. Czy ktoś wie jak to zrobic aby procesor prawidłowo interpretował dane z poru i wysyłał je. Chodzi o język bascom.
mam 90s8515 zrobiłem układ na max232 układ działa ale wysyła śmieci krzaki odbieram dane w terminalu bascoma i hyperterm ale to samo pomóżcie $regfile = "8515def.dat" $baud = 9600 Do Print "aaaaaaaaaaaaaa" Wait 1 Loop
Cześć Fachowcy! Problem jaki wstrzymuje moje prace polega na niemozliwosci odebrania kolejnych bajtów za pomocą instrukcji INPUTBIN. pierwszy bajt odbieram prawidłowo, drugi niestety jst zawsze 0 bez względu na to jaki jest naprawde. transmisja to 250000,8,n,2 fragment kodu: Toggle Portd.4 wyzwalanie oscyloskopu Toggle Portd.4 j.w. Inputbin S1 odbierz...
Witam, Mam problem z wysłaniem zmiennej Long przez RS232. Wszystkie inne zmienne 2-bajtowe (Word) pięknie przechodzą natomiast Longa już na 1 rejestrze nie wyślę. Rejestry mam 16-bitowe - chciałbym wykorzystać 2 rejestry 16 bitowe żeby wysłać zmienną 4 bajtową. Czy może mi ktoś podpowiedzieć jak rozbić liczbę np 250000 w Bascomie aby przesłać ją na...
Witam, po przesiadce z bascom do winavr piszę przykładowe programy w celu poznania C dla AVR, tym razem chciałbym wysyłać po rs232 odczyt z przetwornika analogowego. Używam a328p i po krótkim zapoznaniu się z dokumentacją układu ustawiłem transmisję i adc [syntax=c] #include <avr/io.h> #include <util/delay.h> int main( void ) { UCSR0B =...
Witam. Mam problem z kodem w bascomie. W skrócie opiszę co ma robić. W pętli głównej bada jaka liczba przychodzi przez RS232 (A = Inkey() ). Jeżeli jest to 87 to wtedy ma wyskoczyć do procedury/podprogramu o nazwie "Lowandslow". Tam na chwilę ustawia piny od B.4 do B.7 na "1" i załączane zostają przekaźniki spuszczania powietrza z czterech poduszek....
Witam! jak zadeklarować w bascom które wejscia do odbioru rs232 ma przymować??np z rxd1 i txd 1??
Z powodu objętości programu musze napisać w asemblerze troche rzeczy, i mam tu problem z transmisją na rs232. Niby cos wysyłą, ale terminal źle odbiera. Potrzebowałbym wyświetlić jakąkolwiek daną, 1 bajtową, w pętli co 1-2 sekundy, i to mi nie dziaą. w bascomie program testowy działą więc to nie wina rsa i max 232. Potrzeba mi w asemblerze odpowiedznika...
Należy "podpisać" przesyłane zmienne tak by mikrokontroler jednoznacznie wiedział z którą ze swoich zmiennych skojarzyć ma przesłaną wartość i w niej ją zapisać. Wiele urządzeń ma swoje własne sekwencje bajtów po których własnie mikrokontroler jest w stanie określić co nadeszło. Takie sekwencje nazywają się "ramką". Na przykład System NMEA 0183 z odbiorników...
Witam, Mam mały problem z komunikacją między uC. Ale od początku. Schemat układu pochodzi z EP http://obrazki.elektroda.net/52_12696388... http://obrazki.elektroda.net/91_12696388... Samą komunikację udało mi się zestawić i działa bardzo dobrze (załączony kod poniżej). Master non stop odpytuje slave i jest git. I teraz mój problem,...
A masz jakiś prosty kod który może sprawdzić czy w ogóle uC wysyła jakieś dane przez rs232 przy wpisaniu np: cat /dev/ttyUSB1 lub read /dev/ttyUSB1 Dodano po 2 Zauważyłem mały problem z programem bascom a mianowicie jak dodam gdzieś w kodzie aby wyświetlało mi jaka jest wartość wpisana do zmiennej czyli print zmienna; to program się kompiluje i zapisuje...
czy nie potrzebna jest tutaj instrukcja INKEY() ? swojego czasu zrobiłem taki układ , że dwa procki atmega8535 przesyłały między sobą zmienną. program zajął dosłownie 3,4 linijki w odbiorczym użyłem instrukcji inkey() tzn , jeżeli było coś w buforze(różne od 0 ) to wyświetlało daną. oczywiście czasy w realizacji pętli były takie same oraz kwarce również...
Nie lepiej zerować przez RS'a zmienną która zlicza impulsy ?
Przy instrukcji Input "odebranie znaku <CR> (kod 13) kończy wprowadzanie danych dla bieżącej zmiennej." A co jeśli znak <CR> nie zostanie nadany? Wtedy program stoi i czeka!
Znaki terminujące - czyli "\r\n", ewentualnie NULL, zazwyczaj kończą zmienne typu string. Nie sądzę, żeby były wysyłane po każdym znaku. Nie programowałem w C#, ale wydaje mi się, że kompilator dodaje Ci te znaki automatycznie. Spróbuj odbierane znaki zapisać do zmiennej innego typu, np "byte" lub "char". Jak wygląda Twoja procedura odbierająca znaki...
Najważniejsze to chociaż troszkę samemu najpierw pokombinować i ew później dopytać co i jak ;) ale po co ten Inkey? toż jak już zajdzie zdarzenie Bytematch - to znaczy, że w twoim buforze jest już co najmniej jedeń łańcuch tekstowy, którzy przyleciał z Rs232 i zakończony znakiem ENTER (13) .... w związku z tym wystarczy dać polecenie Input linia i już...
skoro umiesz wysłać tekst do drugiej atmegi to jak możesz nie umieć wysłać sobie jakichś zmiennych - oj chyba przegrzało przy ubieraniu choinki więc podpowiem ;) .... można to zrobić na milion sposóbów oczywiście i wszystko zależy od tego jakie to są zmienne, ale np załóżmy że masz zmienną typu Byte. 1. dokonujesz konwersji tej zmiennej na postać String...
Jak to nie? 1)$baud = 9600 - predkosc transmiji 2)Pk1 = Udr - rejestr buforu 3)Print "T1 " ; Ss - wysylanie na port do komputera zmiennej ss
Dobrze, że chcesz to przesyłać w trybie tekstowym. Zatem od strony mikrokontrolera poczytaj sobie w Bascomie o poleceniach: Config Seriallin INPUT Config INPUT Ischarwaiting a także do operacji na łańcuchach znaków: MID LEFT RIGHT itp to powinno cię naprowadzić.
jak zadeklarować te zmienne? A np. tak dim Bufor as string * 16 ' 16 - maksymalna długość odebranych danych dim Bufor_znak as byte dim Bufor_flaga as byte
Musisz w Bascomie zmienną wysłać przez RS232 do PC-ta a w PC-cie w języku Basic (Bascom to taki Basic na mikrokontrolery) napisać program który zapisze zmienną do pliku.
Witam. Chciałem połączyć dwa układy 89c51 przez RS232. Program robie w Bascomie. Niby jest to proste ale.... Muszę przesłać z jednego do drugiego zmienną typu WORD. Połączyłem na krzyż TXDi RXD procków i dołączyłem trzeci przewodzik (EN). Celem jego jest zasygnalizowanie początku transmisji. Stan niski wprowadzany przez procek A , procek B wysyła aktualny...
1) Kwarc mają posiadać odbiornik i nadajnik, najlepiej o tej samej częstotliwości 2) Przestań kombinować z baud 9600 i zejdź do 1200 3) Dopisz $crystal na początku programu z odpowiednią liczbą zależnie od kwarcu i zrób to w nadajniku i odbiorniku 4) Przestań kombinować z przepisywaniem zmiennych tylko wprost wyświetl C tak jak napisałem Najprostszy...
jeżeli już uzyjesz procka a dwoma uart'ami to budujesz procedure która odbiera od twojego urządzenia string'i jeżeli wykryjesz odbior pierwszego string'u (czyli nagłówka) np if odebrany="wzór nagłówka jeden" then ustaw flagę że nastepny string to będą pierwsze dane wtedy : if flaga1=1 then pierwsze_dane=odebrana:reset flaga1 z drugim nagłówkiem i drugimi...
mirekk36 Niestety to co koledzy podają nie sprawdza się. Programuje w Bascom już którąś aplikacje i ciągle są problemy po RS'ie przy odbieraniu wiekszej ilości bajtów i przypisywaniu ich do zmiennych
Właśnie z funkcją "Val" również nic nie wychodzi, ale zamieniłem "nm" na zmienną typu "byte" i problem rozwiązany. Nie wiem dlaczego tak czepiłem się tej zmiennej przyjmując ją za tekstową. Problem rozwiązany, dzięki za odpowiedź.
Poleceniem Print jak i przy RS232.
Witam mam pytanie odnosnie programowania transmisji szeregowej w bascomie: 1. prędkość ustawia się za pomocą $baud $crystal 2. jak sprawdzić czy do SBUF coś dotarło czy zostało nadane?? 3. $serialinput -> określa nazwe zmiennej do której trafia zawartość Sbuf?? z poziomu assemblera obsługa uart'u nie stanowi większego kłopotu, ale bascom ciągle jest...
To jest odczyt z UARTu. W pierwszej pętli program czeka na pojawienie się litery "R" Potem w drugiej pętli zapisuje wszystkie odebrane znaki do zmiennej K3 aż do momentu pojawienia się znaku nowej linii CR (czyli chr(13)
Witam, Mam takie pytanie. Mam układ sterujący który zbiera dane i wysyła je do PC. Chciałbym sterować uC także z PC podając mu pewne wartości zadane typu temp, wilgotność. Jakiej procedury lub funkcji użyć żeby uC poprawnie ją zinterpretował. NP. wysyłam takie coś "RHzad=20" przez rsa i chciałbym żeby uC wpisał do zmiennej np. I (tylko) te 20. Pozdrawiam.
Witaj. Delphi nie znam, wiem że jest to program bardzo podobny do VB. Ma wiećej możliwości oczywiście, myślę że jednak nie o to chodzi. DO RZECZY Chodzi Ci o to by np. po naciśnięciu przycisku program wysłał kod (jaki to teraz nie ma znaczenia) , a BasCom ma go odebrać. Poczym uC ma wykonać określoną czynność. Jeśli chodzi co o to ?? , sprawa jest prosta....
Witam W jaki sposób można zmienić w Bascomie zmienną typu WORD na dwie zmienne typu BYTE... Jaki Bascom , 51 czy AVR :?: Dla 51 , to dzielenie , Shift ,High,Low , a jak AVR , to jeszcze dyrektywa Overlay . Piotrek
... b) przez uC mega16 - pierwsza transmisja ok, kolejne tak jakby przesunięte coś w stylu ##001100 A słyszałeś kiedyś o takich dziwadłach jak CR i LF :?: ATMega32 wysyła te "krzaczki" , a ATMega16 je odbiera, upycha w zmiennej Liczba i to Twój cały problem :-P Pozbądź się tych kodów sterujących z nadajnika i masz kłopot z głowy ;)
Dlaczego do bufora 32 znakowego wpisujesz 64 znaki? Lekko zmodyfikowałem funkcję ReadUart, aby wypisywała zmienną buf: Jakbyś jeszcze kończył string w miejscu, gdzie skończyły się dane, to nie wypisywałyby się śmeci. Coś w tym stylu: [syntax=cpp] ret = ReadFile(hPort, buf, len,&retlen, NULL); buf[retlen] = 0; cout << buf; [/syntax] Tak w...
zmiana zmiennej bascom bascom ustawienie zmiennej bascom zerowanie zmiennej
przekaźnik hamulec schemat paliwa filtry volvo silnika
silnik okapu buczy silnik okapu buczy
Skoda Fabia I 1999-2007 – nie działają elektryczne szyby, brak reakcji, diagnostyka usterki Kamera samochodowa: ustawienie 50/60 Hz – do czego służy, jak działa anti-flicker?