A ja dodam jeszcze że kontrolery muszą być traktowane z odpowiednich kwarców w zależności od prędkości transmisji. Zobacz Sobie tabelę błędów Uart w zależności od zastosowanego kwarcu. Nie ma takiej potrzeby, wystarczy, że taktowanie będzie praktycznie identyczne i nastawy USART takie same. Do niczego nie jest w takim wypadku potrzebne precyzyjne ustalanie...
To zamiast Inputbin użyj Inkey.
Jak w BASCOM-AVR zbudować pełny string z INKEY/INKEY$, obsłużyć echo, BACKSPACE, buforowanie i przerwania UART? Interesuje mnie praktyczny algorytm i zabezpieczenia.
Moim zdaniem taka zasada jest jak najbardziej słuszna i to nie tylko w tej dziedzinie, gdy coś nie wychodzi albo się rozsypuje trzeba zrobić rachunek sumienia i wrócić do punktu A. A na seri to gdy coś idzie nie tak to napisałbym kod do testów który zajmuje się krytyczną częścią programu a potem wzbogacał ją o inne składniki. Ponadto obstawiałbym względy...
Taj jak napisałem wyżej. WAITKEY będzie czekało do czasu, aż coś odbierze. Jeśli w tym czasie wystąpi jakieś przerwanie to się ono wykona i wróci do programu wykonywanego wcześniej, czyli do WAITKEY (chyba, że WAITKEY będzie w jakimś podprogramie przerwania - wtedy kolejne przerwanie się nie wykona (wykona się po skończeniu aktualnego), chyba że na...
WITAM według mnie program będzie czekał cały czas (moge sie mylić) może lepiej bedzie uzyć "INKEY"
SERIN i SEROUT to nie jest do RS232. Do tego jest Print/Printbin i Input/Inputbin. Jest jeszcze Inkey.
INKEY i INPUT stricte nie czyszczą bufora. Od tego jest CLEAR SERIALIN. Jednak korzystanie z INKEY i INPUT pobierają dane z bufora i przesuwają wskaźniki, co także powoduje, że bufor jest "opróżniany" - choć dane w pamięci dalej są.
Co będzie jak jednym z kodów przesłanych do mikrokontrolera będzie znak o kodzie 0? Odp: Nie zostanie zauważony. Dlatego INKEY() powinno się poprzedzać operacją sprawdzenia zajętości bufora UDR.
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ą.
Dim B as byte ..... [program] B =waitkey() .......[program] If B = 121 then ..... W sumie wystarczy samo B = waitkey() lub B = inkey() a to if to już chyba wiesz do czego nie?? SZUKAJ!! wszystko jest w helpie bascomu!!
U mnie działa. Dodano po 2 Bo powinno być: K6 = Inkey(#1) ;)
1) Brak deklaracji CONFIG COM w obu programach 2) W odbiorniku wyrzuć TOGGLE i wstaw RESET bo za chwilę napiszesz czemu led się ciągle świeci ale przyciemniony 3) W odbiorniku wykorzystaj ISCHARWAITING i INKEY. Odbierasz tylko A i na podstawie czy jest =10 czy =15 wykonujesz ifa do świecenia ledem
Skorzystaj z Inkey() i IsCharWaiting().
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:("...
Witam. Mam programik napisany w bascomie który potrzebuje do działania danych z RS232 (komenda inkey). Da się to zasymulować w BASCOM 8051? Jest tu jakiś terminal, ale coś nie za bardzo działa.
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...
Może nawet więcej niż dwa, chodziło mi o tą konkretną. Kolego janbernat zmodyfikuj program wg. mojej pierwszej propozycji. Dodano po 4 Już wiem, zmienna Err jest tworzona automatycznie przez kompilator, można ją wykorzystać np. w funkcji Inkey(). Nie wiem czy działa też w przypadku Getatkbd(), ale w przykładowych programach z dokumentacji nie ma takiego...
Zresetować SUB?? Chodzi ci o wyjście z suba? On Urxc Getchar Enable Interrupts Enable Urxc dim x as byte dim znak as byte X = 52 petla_glowna: gosub Wykonaj goto petla_glowna end Wykonaj: Incr Koniec if koniec=x then goto petla_glowna end if return :getchar Znak = InKey() X:=Znak return
moze powinieneś skorzystać z instrukcji inkey() , zobacz w helpie jej zastosowanie.
...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. "Kłaniają się" typy zmiennych. Kiedy do terminala wpiszesz 2 , to po łączu szeregowym do uC , jest wysyłany kod ASCII cyfry 2 , czyli dziesiętnie 50.Instrukcja print , "przetwarza" owe 50 na ciąg znaków ASCII reprezentujących liczbę...
To nie jest dobry sposób na odczyt bufora. [syntax=basic4gl] '------------------------Odczyt UART w przerwaniu------------------------------... Serial0charmatch: Enter = 1 If Ignoracja = 0 Then Input Todczyt Noecho End [/syntax] Zawsze miałem kłopoty ze skompletowaniem linii oraz pojawiało się dużo przekłamań jak używałem Input. Lepszym sposobem jest...
może jakoś tak baud= ..... Config Pin_klawisza = Input Dim N As Byte Dim I As Byte Dim Temp As Byte Dim Znak As String * 2 N = 1 Do Debounce Pin_klawisza , Stan , Generuj , Sub Temp = Inkey() If Temp <> 0 Then Znak = Chr(temp) If Znak = "+" Then Incr N If Znak = "-" Then Decr N Loop Generuj: For I = 1 To...
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...
A po co wogóle kol. Stepel pisze sobie bufor we własnym zakresie, skoro jest coś takiego jak CONFIG SERIALIN, działający na przerwaniach. Potem trzeba tylko umiejętnie wykorzystać INKEY() i ISCHARWAITING().
Chodzi mi o coś takiego że chcę liczbę x typu Long wysłać po RS'ie z delphi do bascoma, lecz potrzebuje rozbicie jej na 4 bajty bo wiem że liczba long jest 32bitowa a w bascomie chce odebrac poprzez Inkey() te 4 bajty i je w jakis sposób złożyć do kupy
Zastosuj bufor: Config Serialin = Buffered , Size = 100 enable interrupts A oczekiwanie na znak zrób: Bufor_flaga = Ischarwaiting() : If Bufor_flaga = 1 Then Gosub Odbierz_uart Następnie procedura odbioru danych: Odbierz_uart: Bufor = "" Do Bufor_znak = Inkey() Bufor = Bufor + Chr(bufor_znak) Bufor_flaga = Ischarwaiting()...
Witam, chce uruchomić transmisje szeregową na podanym w tytule uC i tutaj napotkalem na problem, poniewaz dokumentacja do 48 jest bardzo uboga :/ Zaimplementowalem cos, ale nie dziala. jaka uboga? o czym ty mówisz ? skąd ty takie ubogie dokumentacje bierzesz? wejdź na stronę www.atmel.com i pobierz z tamtąd pełną notę PDF do jakiego zechcesz tylko...
Na Enable Interrupts Enable Urxc On Urxc Odbierz ...... Odbierz: Znak = Inkey()
Zrezygnuj z funkcji Input, znacznie lepsza jest Inkey w pętli. Wtedy masz nad wszystkim kontrolę.
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ż...
Witam Inkey odbiera tylko jeden znak (bajt) przesłanej informacji. Użyj lepiej funkcji – input /zapoznaj się z pomocą Bascoma. Do przesyłania informacji na duże odległości używaj jak najmniejszej szybkości.
Ja robiłem podobnie do twojego tyle że zamiast "waitkey" używałem "inkey" w przerwaniu . Odbior: B = Ischarwaiting() If B = 1 Then C = Inkey() If C = "Q" Then Inputbin Aa(1) , Aa(2) , Aa(3) , Aa(4) , Aa(5) , Aa(6) End If End If Return Czyli Q robi u mnie za bajt startu a resztę danych przypisuję zmiennym . W programie głównym obrabiam te zmienne. ps:...
... Proszę o jakieś sugestie, dodam, że nie mogę niczym innym zastąpić Waitkey().vayo No to uziemiłeś proca na amen , a do odczytu klawiszy lokalnych , pozostały Ci przerwania.Powiedz , dlaczego musisz Waitkey() , a nie np. Inkey ?? Piotrek
Napotkanie Inkey() powoduje zatrzymanie pracy programu aż do odczytu znaku z bufora UART.
powinno byc cos takiego (to tylko fragment kodu) dim znaki(19) as byte dim licznik as byte licznik=0 enable interrupts enable urxc on urxc odbierz 'jak odbierze znak to przerwanie do:loop:end 'glowna petla tu robisz co chcesz odbierz: znaki(licznik)=inkey()'o... znak trafi do tej zmiennej incr licznik if licznik...
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...
Pozbądź się RS'owej transmisji buforowej i innych komend typu Ischarwaiting(), Inkey() na rzecz przerwania od URXCx i wtedy sprawdź działanie programu.
Nie lepiej odczytywać UART za pomocą Inkey() ? Najlepiej jeszcze w przerwaniu. Zamiast Input wykorzystać buforowanie i Bytematch=13
Hmmm ni ewiem jak Ci to napisać bo nie wszystko da się zrozumieć od razu..ale pomysl.. nadajesz telefonem "Zapal" to jest raptem pięć znaków i tam NULL o którym nie koniecznie musisz wiedzieć ..ale... idąc dalej piczesz że "Tekst = Inkey()" procesor wciaga te kilka nadanych znaków..a załóżmy że teraz nadałeś "Zgaś" w pierwszej procedurze "If" sprawdził...
witam. A może by tak więcej danych na temat: w czym piszesz, a przy okazji może tak warto zajżeć do pliku pomocy........... i jeśli to bascom to sprawdź o czym mowa w poleceniach input, inkey(), waitkey().......... pozdro.
A może zamiast input użyjesz inkey ?? Co ci sie na wyświetlaczu wyświetla ?
Komenda Input czeka na znak entera. Jeśli chcesz odbierać pojedyńcze znaki zastosuj Inkey lub Waitkey. Po resztę informacji odsyłam do Helpa Bascoma
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ę.
Mam taki jeden dziewiczy nigdy nie używany, kiedyś kupiony na zapas. Podłączyłem go do przejściówki USB. Przed włączeniem zasilania modułu podłączyłem wejście "KEY" do 5V Musisz uważać - mój moduł ma już w sobie układy dopasowujące i działa z TX RX 5V - nie wiem jak Twój. Kiedy podczas podłaczania zasilania masz KEY w stanie wysokim to prędkość komunikacji...
Oproznij_bufor: Do Kod = Inkey() Bufor = Ischarwaiting() Loop Until Bufor = 0 Return
Możesz użyć Inkey. Tylko funkcja ta ma taką cechę że nawet jak nic nie ma w UDR to zwraca 0. Także najlepiej zrób to w ten sposób że najpierw sprawdzasz czy jest znak (Ischarwaiting) a potem jeśli jest, to odbierasz Inkeyem. Można też zrobić to w przerwaniu. Jeśli początek odbieranego tekstu masz stały to można też zrobić pętlę w któej ciągle pytasz...
A do czego Tobie jeszcze potrzebny ten INKEY ? W helpie Bascoma Masz wszystko dokładnie opisane wraz z działającymi przykładami.Wystarczy zajrzeć.
Wydaje mi się że masz bład w transmisji ze względu na to że masz kwarc 4Mhz i baud 1200. Tak przy okazji zegar masz przestawiony na wewnetrzne 4MHz czy zewnetrzny kwarc? Jesli na zewnetrzny to ustawiles prawidlowo fuse bity?? Podam Ci prosty program który u mnie dziala bez zarzutu przy kwarcu 8MHz i predkosci transmisji 9600: $regfile = "m32def.dat"...
Ten czytnik wysyła poza znakiem końca linii o kodzie 13 kod następnego wiersza o numerze 10 Dane dalej pobieram za pomocą funkcji input, ale po niej w buforze zostaje znak 10, następnego wiersza, który pobieram za pomocą inkey :D Teraz jest już wszystko OK
[syntax=basic4gl]Dim Znak as byte '... Do '... Znak = Inkey() If Znak > 0 Then '... End If '... Loop[/syntax]
W nadajniku użyj polecenia Print "jakiś znak" A w odbiorniku użyj : Jakas_zmienna = Inkey() I już. Albo zobacz do helpa Bascomowego, chyba go masz :D
Czy INKEY() nie zwraca przypadkiem tylko jednego znaku , zamiast całego ciągu ?
1) Warunek jest taki że string zawsze musi mieć taka samą długość 2) Użyj funkcji MID aby powycinać ze stringa kawałki z poszczególnymi temp 3) I tutaj uwaga - konwersje string->liczby są pamięciożerne. Jeśli nie wykonujesz żadnych obliczeń temperatury itp to odebrany string wyświetl na lcd jako string a nie jako bajty. Poprostu funkcją MID porozcinaj...
Nie pisałem nic na Rs485 ale mam kilka uwag do programu. Zacznij najpierw od poczytania w helpie bascoma, co robi dokładnie instrukcja Inkey() a dowiesz się że odbiera 1 bajt (jeden znak) z bufora. Sprawdzanie więc warunku B = "zaswiec" nie ma najmniejszego sensu. Nie wiem też po co przełączasz tyle razy układ w nadajnik <>odbiornik: ...... Reset...
A może bardziej sensowne byłoby: [syntax=basic4gl] If S = 0 And PIND.7 = 0 Then port = portc End If [/syntax] e marcus
To możesz zrobić tak: [syntax=basic4gl] Odczytaj_sprzetowy_uart: Dane = "" Do 'Odbierz znak po znaku Kod = Inkey() Dane = Dane + Chr(kod) 'Zapisz w Dane If Dane = "Obroty1" Then Obroty = 1 If Dane = "Obroty2" Then Obroty = 2 If Dane = "Obroty3" Then Obroty = 3 Bufor = Ischarwaiting() 'Zakoncz jeśli brak znaku Loop Until Bufor = 0 Return [/syntax] i...
do "wyciągania" znaków z bufora służy inkey() lub waitkey() natomiast input stosuje się do wprowadzania ciągu znaków, aż do zakończenia znakiem <CR> wystarczy przeczytać HELP-a
Na początek musisz spiąć atmegę8 z max232, następnie kabelkiem łączysz do komputera. Za pomocą terminala możesz wysyłać różne dane do atmegi.To co chcesz zrobić możesz bez problemu wykonać w bascomie, ale musisz posiadać minimalną wiedzę o tym języku. Dane wysyłane z komputera możesz odczytywać za pomocą funkcji INKEY, WAITKEY, INPUT, INPUTBIN, INPUTHEX,...
Jak pisałem Ci wyżej Inkey nie działa na porcie wirtualnym. Przynajmniej na Atmedze8. Chyba jakiś błąd. Użyj funkcji Inputbin. Będzie hulać.
Błąd - przeczytaj w helpie co zwraca komenda inkey. Zwracam honor, rozpędziłem się. W innych basic-ach jest to znak, w bascom-ie kod ASCII pierwszego znaku. Pozdrawiam
za pomocą Inkey() a wtedy bufor automatyczny konfigurujesz tak: Config Serialin = Buffered , Size = 10 , Bytematch = All
Z koleji Inkey() i Waitkey() jako brak odebranego znaku zwracają #0 i chyba nie będą działać jak w przesyłanej informacji będzie #0
Tych znaków jest trochę więc proponuję bufor wejściowy. Wyświetlacz przyjąłem 16*2: $crystal = 4000000 $baud =4800 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portd.6 Config Serialin = Buffered , Size = 32 Dim Znak As Byte Dim I As Byte Cls Enable Interrupts I = 1 Do Do...
Witam Mam pytanko. W jaki sposób odebrać liczbe dwucyfrową np 11. Jeżeli używa w bascomie funkcji inkey() i chce z komputera przesłać liczbę 11 to uC odbiera tą liczbę jako dwie jedynki a nie jako liczbę 11, co uniemożliwia mi wykonanie instrukcji która znajduje sie pod CASE 11: . Jest na to jakiś sposób? Pytam ponieważ chcę skorzystać później z funkcji...
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
(at)grala1Ten Twój kod jest trochę za prosty i z czasem zgubi synchro niemniej jak wrzucisz ten poprawiony na symulator, albo nawet uruchomisz na żywca z tym co Tobie tam nadaje to na chwile powinien podziałać ;) Lepiej byś odbierał znaki w przerwaniu do bufora. Procesor na nic by nie czekał i miał czas na inne sprawy. Do tego synchro, jakis timeout...
Witam. Uart-em poprzez nadajnik FM lub AM bedzie prościej. Puszczasz np : PRINT 48 Po drugiej stronie dajesz INKEY():D i lcd chr(zmienna). I masz "0" na lcd. Pozdrawiam.
No tak nie zauważyłem w gąszczu innych rzeczy tego PK1=UDR:) (Szkoda, że elka nie koloruje składni:/) 1)Jeśli nic nie wysyłam to od czasu wyskakuje kod 84(T) i potem wraca do 10 A jak odepniesz COM od PCta to też się losuje coś?:> Przyjrzyj się kolego może funkcji CHR ( w połączeniu z LCD:) i tym, że sam te znaczki przeliczasz a niepotrzebnie) Oprócz...
Rezystor np 10k? A jeszcze jedno pytanko. Masz może jakiś przykładowy program w bascomie dla nadajnika który wysyła zawartość zmiennej w pętli do loop (co jakiś tam interwał) do odbiornika? Samo Printbin i Inkey() pewnie nie wystarczy
Tak jak w temcie. Dokładnie chodzi o to, że w po łączu szeregowym dostaję konkretną paczkę danych i z nich chcę wykorzystać tylko część, a dokładnie wyświetlić to na lcd. I teraz mam pytanie jak to zrobić, bo najpierw przechwutyuje do zmiennej dane: zmienna = inkey() LCD zmienna I teraz jak przjęte dane podzielić do różnych zmiennych żeby potem...
Czego tam nie zrozumiałeś? ... A no nie rozumiem w jaki sposób do zmiennej "S" trafiają te trzy znaki ASCII -kod klawisza strzałki. A poza tym komenda Inkey() zwraca tylko kod pierwszego znaku, a wciskając strzałkę w buforze od razu pojawiają się trzy znaki. Według mnie Inkey() nie nadaje się do odebrania kodu strzałki. Sprostujcie mnie, jeżeli się...
Witam, Używam w Bascomie polecenia: Dane_uart1 = Inkey() Gdy chcę wyświetlić dane na LCDku to wyświetla mi liczbę po liczbie. Np. Gdy wysyłam do tego procka za pomocą polecenia PRINT "1234" To otrzymuję kolejno 1, 2, 3, 4 . Chciałem otrzymać 1234 a nie kolejne liczby w stringu. Już trochę się z tym męczę i proszę o pomoc w tej sprawie....
U mnie poszło coś takiego: $regfile "m16def.dat" Config Lcd = 16 * 2 $crystal = 1000000 $baud = 9600 Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portb.1 , Rs = Portb.0 Config Serialin = Buffered , Size = 12 Dim X As Integer , Y As Integer Config Pind.1 = Output Enable Interrupts ' Musisz włączyć...
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()...
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...
Witam. Mam mały problem z przepisaniem wartości z DANE do zmiennej CZAS. Potrzebuję by po odczycie z UART wartość CZAS=DANE. Oczywiście żle to robię bo BASCOM pokazuje błąd. [syntax=vbnet] Config Serialin = Buffered , Size = 4 Enable Interrupts Declare Sub Kas_bufor Dim Uart As String * 1 Dim Buf As Word Dim Dane As String * 4 Dim Czas As Word Cls Locate...
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...
Już chyba wiem. Nie możesz porównywać zmiennej tekstowej B do Chr (0), bo zmienna tekstowa kończy się takim znakiem. Czytaj przez Inkey do zmiennej typu Byte a następnie buduj string tak: A= A + Chr (B) Czyli zmień zmienną B na typ Byte
$regfile = "m8def.dat" $crystal = 8000000 Open "comc.2:4800,8,n,1" For Input As #1 Open "comc.3:19200,8,n,1" For Output As #2 Dim A As Byte Dim S As String * 160 Do Do A = Inkey(#1) S = S + Chr(a) Loop Until A = 13 Print #2 , S Loop End
Echo wyłączyłem ; nic nie pomogło. Wykorzystuję takie coś: Xdane: Odb_txt = "" 'wyczyść odb_txt While Bufspace(1) < 254 'dopóki jest coś w buforze Bajt = Inkey() 'pobierz znak If Bajt <> 13 And Bajt <> 10 Then 'jeżeli nie jest to znak CR lub LF Odb_txt = Odb_txt + Chr(bajt) 'dodaj znak do Odb_txt Else 'w przeciwnym wypadku Odb_txt = Odb_txt...
Próbowałem jeszcze waitkey - efekt ten sam tyle że waitkey jak gsm już nie nadaje wiesza program... INPUT nigdy nie używałem. Wstawiłem teraz na szybko INPUT znak (w miejsce znak =inkey() ) Efekt jest taki że nie czyta nic. Cisza. Zmykam do pracy, może po południu coś jeszcze pogrzebie przed weekendem... Pozdro :)
A spróbuj tak: Dim X As Byte Dim Znak As String * 1 Dim Ramka As String * 20 Do Ramka = "" Gosub Czytaj_znak If Znak = "G" Then For X = 1 To 20 Ramka = Ramka + Znak Gosub Czytaj_znak Next X End If Print Ramka Loop Czytaj_znak: Znak = "" Do Znak = Inkey() Loop Until Asc(znak) <> 0 Return
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...
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 =...
Niestety Jak dam instrukcję ustawienia bufora to już nic nie odbiera (nadawać nadaje). A włączyłeś przerwania :?: Bez bufora(przerwanie RX) , ciężko dogadać się z fonem :( Właśnie zauważyłem że jak zepnę RX z TX uP (wywale printa z głównej pętli i dam wait na 5sek. ) to odbiór też jest na 3 znaki :/ Czy wiesz jak wygląda transmisja asynchroniczna ,...
Nadal nie odpowiedziales jasno czy wyswietla tobie znaki z terminala na lcd. Dawno sie nie bawilem uartem. Ten kod powinien dzialc. Dim X As Byte Dim Znak As String * 1 Echo On Do X = Ischarwaiting() If X = 1 Then Znak = Inkey() Lcd Znak End If Loop End
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 =...
witam programuje w bascomie i nie wiem jak uruchomić drugi UART w Atmega162 zrobiłem to tak jak pisało w helpie, pierwszy uart działa bez problemu natomiast drugi nie $regfile = "m162def.dat" $crystal = 14745000 $baud = 9600 $baud1 = 19200 . . (konfiguracja wyświetlacza i deklaracja zmiennych) . . do A = Ischarwaiting() If A = 1 Then I = Inkey() Locate...
Po odebraniu "setup" wchodzisz w pętlę. Do znak = Inkey() If znak >= 32 Then ' znaki od spacji Select Case X Case 0 : godzJed = znak Case 1 : godzDzies = znak End Select Incr X End If Loop Until znak = 13 'pętla do momentu odebrania ENTER
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 Przepraszam ze długo watek wisiał ale brak czasu z względów rodzinno-służbowych. Z kompa po wysłaniu "^2" do ATMEGI odpowiada ona wartością temperatury, jednak zamiast tylko wartości temperatury mam to co wysyłam do atmegi. I problem jak usunąć to "echoo" delphi kod tx : 2 235 2 235 2 235 2 235 2 235 2 235 2 235
Witam, Mam pytanie, czy jak w procesorze, którym odbieram dane wysyłane przez inny procesor przez układ UART, zrobię tak: zmienna_byte = inkey() to w zmiennej będę miał kod ASCII odpowiadający danemu znakowi? Np. wyślę przez RS232 znak a to będzie w zmiennej liczba 97 zmienna_typu_string = inkey() to mi program zamieni automatycznie...
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...
Zrób sobie 6 element tablicy który będzie np znakiem ENTER (żeby rozpoznawać koniec tablicy) natomiast w Bascomie możesz wtedy użyć nawet polecenia INPUT, które po otrzymaniu znaku ENTER wpisze ci twoich 5 elementów tablicy do stringa (też jakby tablicy) - a ze stringa możesz to przełożyć do normalnej tablicy bascomowej - zrobić z tym co ci się żywnie...
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ę...
Witam. Czy jest może na sali osoba która pomogła by mi w zrozumieniu jak przesłać prawidłowo plik wav (8KHz, 8bits, mono) poprzez UART i odtworzenie go za pomocą PWM? Na początek próbowałem w ten sposób: [syntax=basic4gl]x= inkey() pwm1a = x[/syntax] ...ale oczywiście słychać tylko "pierdzenie". Będę wdzięczny za podanie przykładowego kodu programu...
Takie rozważania: Mam zamiar używać sprzętowego uart do połączenia z PC (czyli PD0 jako RxD i PD1 jako TxD). Jednocześnie pozostałe piny portu D chcę użyć do innych rzeczy - część jako wejścia a część jako wyjścia. I teraz pytanie: Czy muszę starannie omijać dwa najmłodsze bity konfigurując kierunki, pullup'y i zapisując wartości? Czy też nawet jak...
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...
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...
To można rozwiązać na wiele sposobów. Jeśli tylko cześć ramki jest stała a zależy Ci na wartościach odebranych to można użyć bufora kołowego i kiedy wykryjesz koniec ramki to wciągasz z bufora poprzednie siedem bajtów. Tutaj jednak sprawa jest prostsza. Poniższy mikroprogram powinien sprawdzać po kolei nadchodzące bajty. Jeśli się zgadzają to wskaźnik...
inkey bascom rs485 inkey inkey odbiór
farelka wiatrak junkers anoda zimnego nawiewu
pe1091 v28a001434b1 rower elektryczny
Kalibracja wagi ROBINAIR AC690 PRO - brak instrukcji Odbiór Polsatu Cyfrowego w Norwegii - sprzęt i usługi