Komunikacja działa prawidłowo jednak odebrane dane chcę mieć w formie BYTE lub WORD Kod Bascom dim a as byte a = inkey print a Gdy z terminala wysyłam 2 to procek zwraca mi 50 gdy 1 to 49 gdy 3 to 51 itd Pewnie gdyby a była single to by było O.K. Co zrobić by wysłane 2 z terminala = 2 w procku /zmienna BYTE/??
Bart : Dziękuję za podpowiedz z Config input. Faktycznie teraz nie ma że widze w prawym stringu gdy jego wartość jest wysyłana jako 4 miejscowa. Inkey niepotrzebny nie widać LF czy CR ( te 3 poziome kreseczki). Ale odbiornik potrafi zamienić lewo na prawo i tak wyświetla ( czasami 4 krotny reset trzeba wykonać aż załapie odpowiednio ramke)-- nie znam...
witam i dziękuję za pomoc. Jednak temat już załatwiłem zastępując instrukcję print zamieniając na inkey działa poprawnie na wszystkich portach poprawnie. Dziękuję.
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 =...
Spróbuj zamiast INKEY uzyć INPUTBIN a zamiast PRINT uzyć PRINTBIN u mnie to zawsze działało i nie zapomnij otworzyc portu za pomocą instrukcji OPEN bo tego brakuje w progamie- otwórz sobie helpa i wyszukaj "OPEN" tam jest dokładnie opisane A co do INPUTBIN i PRINTBIN to uart programowy
Witam Mam problem z komunikacją pomiędzy dwoma mikrokontrolerami Atmega8. Chciałbym między nimi przesyłać dane a dokładnie jedną zmienną pochodzącą z mojego dalmierza ultradzwiękowego do mikroprocesora obsługującego sterowanie robotem. Byłbym wdzięczny jesli otrzymałbym propozycję działającego programu nadawania i odbioru. Moje próby niepowiodły się...
RS232 i konwerter na RS485 Od strony uP standardowo zaczynam od: $crystal = 11059200 $baud = 9600 Odbiór danych przez instrukcje inkey a potem setest case Wysyłanie instrukcja Print . Nie korzystam z przerwań. Od strony PC zależy w czym piszesz program. W VB odbiór i wysyłanie przez MSComm1. (output lub input ) Jest sporo przykładów na elektrodzie....
"bierzesz w ręce" zwykłe polecenia do nadawania jak PRINT , lub do odbierania jak: INPUT czy INKEY i lecisz :) Od razu trzeba napisać, że należy użyć PRINTBIN i INPUTBIN bo kolega będzie przez 10 postów znów pytał jak wysłać tym ciąg bitów i że znów nie działa.
433 lub 868 różnią się długością antenki :) 433 teoretycznie jest też bardziej zajęta. W TME mają stan magazynowy 0, więc nie wiadomo kiedy je dostaniesz, w Seguro mają od reki - wersja SMD jest IMHO lepsza, bo mniejsza, a lutuje się ją banalnie - rozstaw metalizowanych wcięć do lutowania to 2,54mm, czyli standardowo tak jak DIL. Soft producenta oczywiście...
Witam, od jakiegoś czasu opracowuję urządzenia komunikujące się po RS485 w protokole PELCO-D. Urządzenia komunikują się albo jedno albo dwukierunkowo-tutaj to nie istotne... Wszystko działa wyśmienicie i komunikuje się bez najmniejszego błędu gdy nadaje jedno z urządzeń. Urządzenie to nadajnik i odbiornik. Gdy nadają 2 nadajniki jednocześnie (jednocześnie...
mylisz się. Samo inkey zwraca jeden znak ale tam jest wazna cała pętla a nie pojedyńcza komenda. Masz dołączyć całe to od s="" do loop. s="" ' wyzerowanie bufora do 'rozpoczęcie pętli która będzie aż do loop lob exit do a=inkey 'oczekuje na znak przychodzący if a=0 then exit do 'jezeli przyjdzie tzw znak zero to opuszczana jest petla s=s+chr(a) ' dodaje...
hyper termynal lub inny darmowy program do komunikacji ustawiasz go na np com1 9600 8n1 i w bascomie musisz zadeklarowac maly program <zobacz w helpie komenda baud , inkey albo input> $regfile = "m8def.dat" $crystal = 4000000 $baud = 9600 wait 1 Print "Hello" to tak w ramach wstepu.... wszystko co musisz wiedziec jest w helpie...
Witam, na poczatku chcialbym uprzedzic ze moja zabawa z uP zaczela sie b. niedawno :) Moj problem polega na tym, ze chcialbym uruchomic modem gsmowy na tej atmedze. Jednak mam pewne problemy z komunikacja. Ktos poradzil mi, zebym zwarl tx i rx po wyjsciu z max232 zeby sprawdzic ustawienia transmisji (odbior - wysylanie). I faktycznie uczynilem tak jak...
RETURN służy do zakończenia podprogramu a nie procedury. Nie pamiętam czy jest jakieś polecenie do wyjścia z procedury, ponieważ nigdy na pewno nie używałem nawet jeśli istnieje. Zawsze tak tworzę procedury aby program dochodził do końca i sama się kończyła. Ja całą procedurę przerobiłbym tak: Dim Koniec As Byte Sub Program Address = 0 Tcls Tlocate...
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...
Eh ten rs-232 + przerwania to juz mnie o bóle głowy przyprawia. Mam programik: $crystal = 11059200 ' czestotliwosc kwarcu $baud = 1200 ' predkosc transmisji Dim X As Byte , Znak As Byte Enable Interrupts ' wlaczenie przerwan Enable Serial ' wlaczenie przerwania portu RS232 On Serial Port ' na przerwanie z portu wykonaj procedure "port" Do ' poczatek...
wymienilem konwerter przy pccie i to samo przy atmelu mam 75176 gdzie r oraz d idzie na tx1 i rx1 na atmege re i de sa zwarte i leca na pd7 zrobilem tak $regfile = "m128def.dat" $crystal = 16000000 '$baud = 9600 $baud1 = 38400 Config Portd.7 = Output Config Spi = Soft , Din = Pinb.4 , Dout = Portb.2 , Ss = None , Clock = Portb.1 'Config Com1...
Witam, próbuję wykorzystać UART1 do odbioru danych przy użyciu bufora ponieważ w docelowym układzie nie mogę czekać na odbiór przez input. Zmienna _rs_tail_ptr1 określa gdzie znajduje się ostatni znak w buforze. Postanowiłem ją wykorzystać, po odebraniu mojej ramki chciałem wyczyścić bufor. Według helpa można do tego wykorzystać komendy inkey lub input,...
Wykożystam okazję i dołączę się do wątku gdyż mam podobny problem. Ja wykożystuje AT89C2051, MAX232 (schemat aplikacyjny, podstawowy z dokumentacji) i kabelkiem do COMa. Od tygodnia z tym walcze i nic. Transmisje dla odmiany mam ale jaką. Jak klikam '=' na terminalu PC to na wyświetlaczu LCD dowiaduje się że procek otrzymał 'a', dla wysłanego 'a' dostaje...
Witam Mój problem wiąże się z zaprogramowaniem "Echa" które obijało by sygnał w standardzie RS. Układ buduję w celu sprawdzania poprawności działania konwertera USB-RS485. Aby nie programować układu dla każdej szybkości transmisji chcę użyć pinów PB0-PB3 gdzie za pomocą zworki możliwy byłby wybór jednej z 4 przygotowanych szybkości transmisji: 921600,...
w nadajniku masz użytego watchdog'a , ja się jeszcze nim nie bawiłem - ale czy on ci nie resetuje przypadkiem za szybko układu? może powyłączaj wszystkie inne gadżety i spróbuj z samym przekazywaniem i transmisją tekstu żeby to doprowadzić do porządku poza tym chyba powinieneś pozostać przy instrukcji INPUT a nie Inkey - bo ona odczytuje po jednym znaku...
Witam mam taki problem potrzebuję wysyłać przez port com danie w taki sposób, aby były one traktowane jako znaki ASCII bo tylko takie mogę poprawnie odebrać mikroprocesorem. Z tego co zauważyłem jedynym działającym w przerwaniu od UARTa poleceniem odbioru, w bascom AVR jest inkey a to odbiera tylko znaki ASCII :/ No i tu pojawia się problem bo o ile...
Config Serialin = Buffered , Size = 80 Enable Interrupts Dim _Flaga_1s as Bit _Flaga_1s = 0 Config Timer1 = Timer , Prescale = 64 Enable Timer1 : On Timer1 Co1s Cls Do If Ischarwaiting() = 1 Then Znak = Inkey() Print Chr(znak) ; End If if _Flaga_1s = 1 then ' ------> a tutaj wyświetlaj już sobie spokojnie co chcesz co...
Taki dziwny problem: Mega8 na płycie ewaluacyjnej połączona przez rs232 do pc. Terminal wyświetla to co wysyłam przez print, natomiast avr nie reaguje na nic wysłanego przez pc. Testowy kod (wzięty prawie na żywca z sampla inkey.bas): $regfile = "m8def.dat" $crystal = 8000000 $baud = 19200 $hwstack = 32 ' default use 32 for the hardware stack...
W telegraficznym skrócie - w "nadajniku" wysyłasz znaki komendą PRINT, np "A" dla pierwszego LEDa i "B" dla drugiego. W odbiorniku odbierasz dane z UARTu (inkey) i jeśli jest "A" to zapalasz jedną diodę, jak doszło "B" drugą.
Jak bascomem odczytac &h00 z uarta ? Gdy napisze do aa=inkey() print cjr(aa) loop wywala ciąg zer. Procedura IsCharWaiting rowniez nie dziala na &h00 Zeby nie bylo ciagu zer, musze trzecia linijke zamienic na if aa<>0 then print chr(aa) Gdy wysylam do uarta ciag np: FF F0 A1 00 01 00 00 02 program odczyta go jako FF F0 A1 01 02. Jest jakis...
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...
Po małym urlopie, powracam do tematu,problem częściowo rozwiązałem, użyłem jednak polecenia input dane ładnie przelatują ,jednak jak nastąpi z jakiś przyczyn przerwa program wstrzymuje swoje działanie i czeka na wszystkie dane ale już nie jest źle:) od strony 1 procka leci komenda: dim te as byte dim tx as byte dim tmp as byte print te print tx print...
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ż...
Masz tu prosty, sprawdzony, działający program do sterowania portami. $regfile = "m16def.dat" $crystal = 1000000 ' przelicz u siebie te zera :) Dim B As Byte Config Portb = Output Portb = &HFF Waitms 100 Open "comd.1:9600,8,n,1" For Output As #1 Open "comd.0:9600,8,n,1" For Input As #2 Do B = Inkey(#2)...
Witam, Komunikuje się miedzy dwoma atmegami i gdy używam (Atmega8) Print #1 ----> Input #2 (Atmega16) jest wszystko ok ale gdy próbuje zrobić (Atmega8) Print #1 ----> inkey(#2) (Atmega16) to wywala śmieci. Chce wysłać pojedynczy znak np M wysyłam jako chr(77), a zamiast tego wyczytuje inne znaki. Gdy używam inkey(#2) ale wprowadzam z terminala jest...
Witam, zanim zabierzesz się za pisanie własnej obsługi przerwań do RS232 w Bascomie, to może najpierw spróbuj zrobić to w oparciu o dobrodziejstwa jakie daje ci Bascom. nie znasz poleceń INPUT , INKEY czy PRINT ???? do tego jeszcze może Config Serialin bo w powyższym kodzie odstawiasz niezły "miszmasz" i nie ma co się dziwić, że ci nie działa. Oczywiście...
To nie jest konfiguracja sprzętowego UARTu tylko programowego. Sprżetowego nie trzeba konfigurować. Użycie Print,Inkey,Input bez numeru kanału domyślnie używa sprzętowego Uart. Jedynie można sobie ustawić bufor wejściowy i wyjściowy poleceniami Config Serialin/Serialout
zgodnie z pomoca do bascoma w atmegach8 nie trzeba konfigurowac uart bo jest automatyczne konfigurowany po uzyciu print/input/inkey/waitkey itp
Do $timeout = 1000000 Input "Czekam 100000 Cykli jesli bedzie ich własnie tyle no chyba że wcześniej będzie chr(13):" , zmienna Print "To bede tu :) " ; zmienna $timeout = 0 Input "Tu będę czekał wieczność jeśli nie bedzie chr(13): " , zmienna Print "I tego napisu już nie zobaczysz:("...
Nie wiem czy dobrze zrozumiałem - myślę , że dobrze :D Master: Print Chr(49) ; Chr(0) ; Chr(0) ; Chr(13); 'niech slave o adresie 49 zmieni stan PORTA.0 na przeciwny Print Chr(49) ; Chr(3) ; Chr(7) ; Chr(13); 'niech slave o adresie 49 zmieni stan PORTD.7 na przeciwny 'itd Slave: $regfile...
Witam, Czy ktoś ma doświadczenia w postawieniu serwera na EPS 8266 w Bascomie , napisałem krótki program ale coś nie działa, moduł sprawdziłem za pomocą programu z strony [syntax=html] https://esp8266.ru/[/syntax] i działa [syntax=vbnet] $regfile = "m644pdef.dat" $crystal = 16000000 $baud = 19200 $hwstack = 32 ' rozmiar stosu sprzętowego $swstack =...
Sprawa jest prosta. Trzeba zaglądnąć tu: http://www.mcselec.com/index.php?option=... Na dole strony są dwa pliki, które trzeba ściągnąć - jeden to terminal z plikiem źródłowym programu w VB, a drugi to kontrolka do VB pozwlająca na komunikację przez RS. Trzeba to przestudiować i zastosować w swoim programie do PC....
Nareszcie udało mi się rozwiązać problem (po przeczytaniu mądrej książki). Słowa kluczowe: UART sprzętowy - do którego podpiąłem HC-05 i to nie działało !!! UART wirtualny - ręczne zdeklarowanie portów w kodzie. Te porty są oczywiście inne niż te, które obsługują UART sprzętowy. Po podłączeniu HC-05 poprawnie działa komunikacja: wyślij(print) <=>...
No dobra. Wywal wszystko na linii Tx telefonu do Rx procesora. Ma być połączenie bezpośrednie. Na drugim kierunku zostaw tak jak masz. Poniżej kod do testów. Powinien działać. [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $baud = 19200 Config Lcd = 16 * 2 Config Serialin = Buffered , Size = 100 Enable Interrupts 'Declare Sub Oproznij_bufor...
Ex=0 DO SLEEP K = INKEY$ If K = CHR$(13) THEN PRINT "Nacisnieto Enter" If K = CHR$(48) THEN PRINT "Nacisnieto zero" If K = CHR$(27) THEN PRINT "Nacisnieto ESC i petla konczy dzialanie" Ex = 1 END IF LOOP UNTIL Ex=1
SERIN i SEROUT to nie jest do RS232. Do tego jest Print/Printbin i Input/Inputbin. Jest jeszcze Inkey.
Program z Visual Basic: Private Sub Command2_Click() MSComm1.CommPort = 4 MSComm1.Settings = "9600,n,8,1" Debug.Print "----------" MSComm1.RThreshold = 1 End Sub Private Sub Command3_Click() MSComm1.PortOpen = True End Sub Private Sub MSComm1_OnComm() ' procedura odbioru z koma Select Case MSComm1.CommEvent...
Witam Mam pytanie dotyczące transmisji RS232 w atmedze8 do komputera. Chodzi o wielkość bufora w USART. Realizuje komunikacje z komputerem w sposób: wysyłam w petli znak, mikroprocesor w odpowiedzi wysyła ciag znaków po 10, po odebraniu w komputerze wysyłam nastepny znak i tak 10 razy obecnie. Z moich obserwacji wychodzi na to ze bufor moj musi miec...
Witam W zasadzie już zbliżam się ku koncowi stacji meteorologicznej z wykorzystaniem atmegi8 i PC. Z uwagi na funkcje jakie musze wykorzystać a wiec timer i USART wystapił problem. Wykorzystując timer1 generuje przerwanie co sekunde i licze czas aktualny. Podczas połączenia z komputera wysyłam na zasadzie: 1 znak z PC, a w odpowiedzi z Atmegi string...
Wywal wszystko od: Ch = Ischarwaiting() do clear serialin w podprogramie "Serial0bytereceived:" ustawiaj sobie jakąś flagę np. Serial0bytereceived: Flaga = 1 Return Następnie w pętli głównej sprawdzaj tą flagę: If flaga = 1 then If Ch = 1 Then U = Inkey() If U = 60 Then Portb.2 = 0 End If If U = 62 Then Portb.2 = 1 End If If U = 64 Then...
Proponuję zrobić taki eksperyment: Kod: Print "a" Print Chr(97) Print Chr(&H61) Print Chr(&B1100001) to zawsze zostanie wysłany kod ASCI - 97... Acha, czyli jak w procesorze, którym odbieram dane zrobię tak: zmienna_byte = inkey() to w zmiennej będę miał kod ASCII odpowiadający danemu znakowi. Natomiast jak zrobię tak: zmienna_typu_string =...
aktualnie tak zrobiłem - zawsze na 1 pozycji jest krzak zatem MID i odcięcie pierwszego i jest w miarę dobrze - najgorsze jest tylko to, że wysyłając: (poniżej kod odbioru już trochę zmieniony (kanał 2 uarta m128 idzie w celach monitorowania na RX PCta)) Print #2 , "AT" Print "AT" Waitms 10 If Ischarwaiting() = 1 Then Znak...
Poopuszczałeś trochę, a do tego literówki i dlatego wyrzucało błędy. Ten program kompiluje sie poprawnie. $regfile = "attiny2313.dat" $crystal = 11059200 $hwstack = 32 $swstack = 10 $framesize = 20 'DEKLARACJA ZMIENNYCH I PROCEDUR Dim Flaga As Bit , Flaga1 As Bit Dim Wylacz As Byte , Znak As Byte , Adres As Byte , Licznik As Byte Dim Znak1...
Skorzystaj z instrukcji INKEY( ), WAITKEY , ISCHARWAITING. Do 'jakaś pętelka A = Inkey() 'odczytujemy znak If A > 0 Then 'czy był jakiś (> 0)? Print A 'jeśli tak to piszemy End If Loop 'to będzie pętelka nieskończona 'Powyższy przykład dotyczy SPRZĘTOWEGO układu UART! 'Program zapisany jako OPEN.BAS zawiera przykład użycia INKEY()...
inkey bascom bascom inkey inkey input
pikanie radia citroen ładowanie ogniwa lifepo4 pasek zawilgocenia
Toyota 4E-FE autoadaptacja zaworu IACV – procedura resetu i uczenia biegu jałowego Oznaczenie niebieskiego potencjometru Alps Alpine z blokadą środka