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ą.
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.
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...
A może zamiast input użyjesz inkey ?? Co ci sie na wyświetlaczu wyświetla ?
Witam. Zamiast input spróbuj użyć inkey lub waitkey, i zajrzyj do helpa. pozdrawiam.
No dobrze. A co to za parametr bytematch? A czy ta metoda nie będzie się gryzła z poleceniem inkey? Tzn kiedy nawiążę połączenie, input odbierze "CONNECTED" wyświetlę to na lcd i później będę nadawał komórką inne pojedyncze znaki i odbierał je poleceniem inkey to czy polecenie input tego nie odbierze i znów nie wyświetli mi się pojedynczy znak? Sprawdziłem....
mam odblokowane zobaczy wyżej w kodzie. Winą był Timer1 który generował przerwania. Zastosowałem do skanowania klawiatury zamiast Timera i przerwań pętle Doo i Loop oraz Inkey() jesli Inkey >0 to Input itd. Teraz działa jednak nadal jestem zmartwiony bo drugie urządzenie które buduje musi korzystać z Timera gdyż odlicza w sekundach czas 5 trybów w których...
"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.
Dzięki za podpowiedzi, wykorzystałem polecenie inkey() i to wystarczyło w zupełności. Kodu nie podaję, gdyż wystarczy wpisać w helpie inkey i wszystko jasne jak na dłoni :)
Czemu korzystasz z programowego uarta? Używaj sprzętowego jak w przykładzie poniżej. Zauważ też że będziesz odbierał znaki ASCII, a ty potrzebujesz liczbę dziesiętną do wyświetlenia. Na początek wgraj program i wpisuj w terminal liczby od 0 do 9 czyli w ascii od 48 do 57. Wpisanie czegos innego prawdopodobnie wysypie ci program bo lookup nie znajdzie...
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
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...
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...
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...
$regfile = "m128def.dat" $crystal = 16000000 $baud1 = 38400 Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Dim Znak As String * 5 Open "com2:" For Binary As #2 Print #2 , "start" Wait 1 Pg: Input #2 , Znak Waitms 500 Print #2 , "Odebrano znak : " ;...
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....
Jeszcze inne pytanie. Jak odebrać ok 70bajtów przez szeregowe łącze na sprzętowym uart'cie. Input sie nie sprawdza bo te polecenie czeka na enter na końcu a stąd skąd pobieram dane nie ma entera. Polecenie inkey pobiera tylko jeden bajt więc też sie nie nada. a więcej nie znam i nic w helpie od bascoma nie moge znaleźć, jakaś pomoc ?
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...
Mam taki oto problem. Stworzyłem programowy UART, ale nie wiem jak sprawdzić czy dostałem jakiś znak. Przerwania i rejestry odpadają jak wiadomo, IsCharWaiting mimo, że w pomocy ma w nawiasie możliwość podania kanału to gdy użyję np. IsCharWaiting(#2) to dostaję błąd nr 328, czyli że funkcja nie jest dostępna dla software'owego uartu. Jakie jest zatem...
Witam serdecznie! Chciałbym poprosić kolegów o rozwiązanie pewnej kwestii. Ischarwaiting() zwraca wartość 1 gdy w buforze coś jest a 0 jak nie ma. Dana wejściowa (Znak) z RS232 na postać 5 znaków + enter czyli 6 znaków. Config Serialin=Buffered, Size=6. Zmienna Znak jest wartości String*6. Dane z RS-a odbierane są w pętli: Dodano po 3 powstał mały byk...
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...
Sądzę że prościej jest użyć INKEY() niż INPUT Dim pełnyciąg As String * 100 Dim zmienna As Byte do zmienna=inkey() pełnyciąg=pełnyciąg+zmienna incr a if a>100000 then a=0 exit do end if if zmienna>0 then a=0 loop until zmienna= 13
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,...
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...
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
Dlatego, że wysyłasz dane z ATmega8535 ciągle proponuję odczytywać przy pomocy poleceń WAITKEY() lub INKEY(). INPUT akurat do tego nie jest najlepsze. Proponuję też skonfigurować bufor UARTA. Config Serialin = Buffered , Size = 8 O tych wszystkich poleceniach znajdziesz w pomocy.
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....
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ż...
zgodnie z pomoca do bascoma w atmegach8 nie trzeba konfigurowac uart bo jest automatyczne konfigurowany po uzyciu print/input/inkey/waitkey itp
Nie lepiej odczytywać UART za pomocą Inkey() ? Najlepiej jeszcze w przerwaniu. Zamiast Input wykorzystać buforowanie i Bytematch=13
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...
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.
Zrezygnuj z funkcji Input, znacznie lepsza jest Inkey w pętli. Wtedy masz nad wszystkim kontrolę.
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,...
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 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...
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
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...
SERIN i SEROUT to nie jest do RS232. Do tego jest Print/Printbin i Input/Inputbin. Jest jeszcze Inkey.
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)...
Wielkie dzięki raz jeszcze Panowie za podpowiedz,mam jeszcze jedno pytanie czy do odbioru danych z telefonu uzyć funkcji inkey,czy innej np: input i jak wyswietlić dane będące w buforze transmisji na wyswietlaczu LCD.Jeśli zechcecie mi raz jeszcze pomóc to super a teraz zabieram sie do opanowania waszych wskazówek.DZIĘKI.Pozdrawiam
Witam ponownie. No tak ZUMEK dane oczywiście będą stracone jeśli się je w pore nie wychwyci, ale wracając do Twoich propozycji powiedzmy pierwszej to masz na myśli aby przerwanie wykonywało procedurę INKEY(#1) lub INPUT jak najczęściej?? Otórz układ ma być złożony z DS18B20+ATtinny13+MAX485 ma to byc poprostu termometr moduł sieci 485 (jeden z wielu...
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 :)
Dziekuję za wszystkie dotąd udzielone mi porady. Jeśli chodzi o transmisję binarną printbin, inputbin to próbowałem wyszło super przede wszystkim zmniejsza liczbę byte ramki chodzi mi o to, że gdy wysyłam parametr do pwm np. 255 to używam 3 znaków ASCII czyli 3 byte a binarnie wyśle byte 255 i to tyle ale w transmisji nie mogłem korzystać z przerwania...
A jak wysłać z UARTa programowego tak ustawionego Open "comd.2:2400,8,n,1" For Output As #1 Bo gdy pisze output to uC wysyła przez sprzętowy. Przepisałeś program z helpa Bascoma, ale nie dokładnie. Sprawdź jeszcze raz ale dokładnie zamieszczony przykład. Powinno się wszystko wyjaśnić. '---------------------------------------...
Na Enable Interrupts Enable Urxc On Urxc Odbierz ...... Odbierz: Znak = Inkey()
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 =...
Możesz INPUT a możesz też na kilka innych sposobów. Zależy jakie dane chcesz przesyłać i co później z nimi robić. Jeżeli będziesz używał INPUT to musisz zakończyć to Enterem. Proponuję poczytać pomoc do Bascoma (Inkey(), Config Serialin, Waitkey()).
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...
Ten zestaw nie służ do transmisji RS232. Aby działał poprawnie musisz kodować słowa podobnie jak w RC5 lub układach PT2272/2262. Te moduły "łapią śmieci", a to fałszuje transmisję. Na upartego można na niewielką odległość przesyłać wolno np 300 bodów transmisje, warunkiem jest stała "nośna", czyli na przykład pomiędzy słowami nadajesz np same zera,...
inkey bascom bascom inkey inkey print
pikanie radia citroen przetwornica kontrola cewka system grajacy
Kenwood TH-G71 - Polska instrukcja obsługi Carboran: Związki chemiczne i materiały kompozytowe