Rozumiem że zakomentowałeś, zamykanie i otwieranie portu podczas wysyłania oraz linie InputData = serialPort1.ReadExisting(); "Odepnij" to zdarzenie DataReceived i dodaj dla testów jeszcze jeden Button i daj tam: string data = serialPort1.ReadExisting(); ReadLine() czeka na znak nowej linii, może przesyłasz "cos", a nie "cos\n"?
0,000000069s - 1/14,475MHz - czas jednej instrukcji procesora 0,000086806s - (1/115200) *10 - najkrótsza ramka(8 bitów danych + start + stop) - co taki okres może przyjść przerwanie od portu szeregowego. Jak widać czasu jest dość(ponad 1000 instrukcji na przerwanie) pytanie co jeszcze robi procesor. Jak odbierasz impulsy z enkodera?
Przyklad: ramka ma 50 bajtow, w buforze masz 60 bajtow, poprzez ComPort1.ReadStr(odebrane,Count); odbierasz 60 bajtow ,czyli 50 ramka +10 nastepnej ramki, dlatego pytalem co robisz z odebrane , bo jezeli przetwarzasz pod wzgledem tylko jednej ramki (50 bajtow) , to te 10 idze do smietnika. przy nastepnym odczycie bufora masz wlasnie ramke z ucietymi...
A dziękuję Kolego mirekk36 za pozytywne słowa. Jeśli autor tematu woli wersję papierową to polecam książkę: A. Daniluk, RS 232 C. Praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera, Helion, Gliwice 2001. W moich ulubionych znalazł się jeszcze jeden link dotyczący RS232: http://www.lodd.p.lodz.pl/kwbd/rs232.htm
W kodzie jest mnóstwo błędów, ale to, co Ty uważasz za błąd akurat błędem nie jest. Zacznijmy od tego, że prawdopodobnie masz ciągle zgłoszone i nieobsługiwane przerwanie nadajnika, bo zupełnie nie wiadomo po co kazałeś UARTowi wysłać 0. Timer generujący szybkość transmisji jest źle zaprogramowany - pierwszy okres będzie inny, niż następne, a te następne...
Efekt jest nieciekawy bo zamiast na porcie szeregowym operujesz na deskryptorze numer 0 :) Zmienna lokalna fd przysłania Ci zmienną globalną o tej samej nazwie.
Sam ostatnio z tym się bujałem z tym, że używam FLTK... Generalnie tryb OVERLAPPED jest upierdliwy i mi to do d... to działało... Trzeba pamiętać o tym, że funkcje odczytu/zapisu wracają natychmiast niezależnie czy odczytały cokolwiek czy nie potem to już zabawa z flagami, events itp, itd... Do odczytu, jeżeli już faktycznie coś zostało odebrane, używasz...
Pierwsza rzecz, to handshake, ustawiaj wszędzie na NONE. Co do pytania na końcu, nie będziesz wiedział puki nie podłączysz fizycznego portu, emulator to zawsze licho wie co. Gdy nie używa się handshake-u to UART działa tak jak chcesz, śle nie patrząc czy ma gdzie.
5 i 6 dana zostaje zapisana do buforu - wczesniej nie byla sprawdzana wielkos buforu i dlatego jezeli program nie zdazyl odebrac dana[2] to najprawdopodobniej aktualizowal ja z kolejnej 2 paczki. teraz teoretycznie program czeka na 2 bajty a wydaje mi sie ,ze szybciej sie wykonaja aktualizacje kontrolek niz wysylanie bajtow. najlepiej z boku sprawdz...
Witam chodzi mi o komunikacja uP 89c2051 (do programowania urzywam bascoma) przez to lacze uP bedzie wysylal dane liczbowe komputer bedzie je przetwarzal i wysylal spowrotem Zalezy mi na v-basicu bo go dobrze znam No i z czym masz problem? Określ konkretnie pytanie. Nikt nie będzie zgadywał o co Ci chodzi.
Jest wiele sposobów. Możesz na przykład przepisać znaki od przecinka do końca buforu w drugi bufor pomocniczy i wówczas użyć funkcji atoi. PS. zamykasz stringa znakiem zerowym? ;)
W kwestii bascom-u Ci nie pomogę ale może wykorzystasz wstawki asemblerowe ; .org 0 rjmp RESET ; Reset rjmp EXT_INT0 ; zewnetrzne Int0 rjmp EXT_INT1 ; zewnetrzne Int1 rjmp TIM1_CAPT ; zewnetrzny wychwyt wartosci licznika 1 rjmp TIM1_COMPA ; komparator A licznika 1 rjmp TIM1_OVF ; przepelnienie licznika 1 rjmp TIM0_OVF ; przepelnienie licznika 0 rjmp...
Przestaw terminal na odbiór znaków ASCII. Program jest OK.Dane też.
Oczywiście przewody są skrosowane A po co? To nie RS232 gdzie krosujesz linie RX i TX. A do A, i B do B.
wgraj liste kanałów i będzie odbierał :) tu masz stronke gdzie jest wszystko na ten temat http://laki.dvhk.pl Ściagnij liste kanałów i programik dsxedit którym ją wgrasz do tunerka przez zwykły przewód rs232 (przedłużacz com)
klops_mops ---> masz dwa wyjścia żeby ci nie mrugały te wyświetlacze w czasie PRINT'a ;) - innymi słowy mówiąc aby procedura wysyłania RS232 nie zakłócała procedury multipleksowania 1. prostszy sposób - zwiększ tą kocią prędkość RS232 na jakąś ludzką - chociaż 9600bps to już praktycznie nie powinno ci mrugać a jak dasz każdą większą to już będzie coraz...
To nie są problemy Bascoma, w bascomie można wiele rzeczy szybko zrobić, tylko jak ktoś go nie zna to najłatwiej i naszybciej jest na niego psioczyć i wylewać swe żale. ale ok, skoro ty (o ile dobrze zrozumiałem) w jakimś tam przerwaniu wysyłasz coś poleceniem PRINT przez łącze RS232 a następnie w tym samym przerwaniu czekasz na odbiór przez RS232 (waitkey)...
Witam Chciałbym przez rs232 zapisywać zmienne z pliku txt do zewnętrznej pamięci eeprom np. 24Cxx z których będzie korzystał mikrokontroler atmega128. Od czego zacząć? Czy to będzie bardziej rozwiązanie polegające na programie w mikrokontrolerze zasysającym dane z txt i wczytującym je do eeproma czy zrezygnować z drogi mikrokontrolera i programować...
Na wstępie napiszę: korzystam z arduino mega, konwertera RS232 TTL- RS485 i modułu W5100 dla arduino, zaznaczam, że swoje doświadczenia opieram na arduino, języku programowania c++, czy wirring...tak to się nazywa w środowisku IDE? Nie jestem też z zawodu programistą, więc jakieś złośliwe komentarze proszę sobie darować, natomiast konstruktywne uwagi...
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...
Jaki kompilator? Nie pokazałeś deklaracji struktur danych - z tego co widzę to nie obsługujesz przepełnienia wartości zmiennych "odebrano" i "wysłano" - to miałyby być bufory cykliczne? w _putchar() gdy wysyłka_wyłączona == 1 powinieneś od razu wpisać bajt do rejestru SBUF, inaczej będziesz czekał na odbiór bajtu żeby zinicjalizować wysyłkę w przerwaniu....
Nie do procesora. Magistrala RS485 jest dwu kierunkowa. Na magistrali jest jeden nadajnik i parę odbiorników. Tu nie ma jak w RS232 linii nadawania TX i odbierania RX. Stąd urządzenie musisz mieć ustawione na odbiór a gdy potrzeba przełączasz na nadawanie i po to jest to 3 wyprowadzenie. Wyprowadzeniem RX odbierasz dane Wyprowadzeniem TR wysyłasz dane...
Chcesz odebrać dane w PC a pytasz o przerwanie od UARTU. Aby wysłać dane do komputera po RS232 nie trzeba używać przerwania. Masz w programie procedurę obsługi przerwania od UARTU tylko jej nigdzie nie odblokowujesz. WYkasuj ją. Wogóle na początek zrezygnuj z sei bo nie potrzebujesz przerwań.
Układ działa jedynie wtedy kiedy obydwie linie A i B są podciągnięte do napięcia zasilania (5V). Napięcie pomiędzy liniami wynosi 165mV. Nie tak, istotny jest tylko ten 120Ω pomiędzy A i B . Ewentualnie dodatkowo A ściągamy rezystorem(ja używam 4,7kΩ ) do GND i B podciągamy do Vcc takim samym(też u mnie 4,7kΩ ). Raczej na odwrót - A...
:arrow: Strikerer w Twoim przypadku wybór jest ograniczony aczkolwiek polecam program o nazwie: FMA to potężne narzędzie do edycji telefonu dzięki czemu użytkownicy mogą łatwo zarządzać wszystkimi danych osobowych przechowywanych w swoich telefonów, przez szereg różnych metod połączeń. FMA umożliwia łatwe zarządzanie Spis telefonów (zarówno SIM i pamięci...
Najlepiej to dać znacznik początku ramki a na końcu jakieś CRC. Odbiornik powinien szukać znacznika początku i jak na niego trafi to zacząć odbierać pozostałe dane. Jak zbierze ich 513 to z 512-tu oblicza CRC i porównuje ze znakiem 513-tym. Jak dobre to zapisuje, jak złe to odrzuca. A sam odbiór to w przerwaniu, i zapis do bufora z jednoczesnym inkrementowaniem...
Najprościej (choć pewnie nie najefektywniej) jest czytać po jednym bajcie. Spójrz na moje zmiany w Twoim kodzie. Problem z konfiguracją portu związany jest z tym, że należy najpierw odczytać bieżącą konfigurację Comm-a ( GetCommState ), zmienić to, co potrzeba i dopiero wtedy ją zapisać ( SetCommState ). Warto też sprawdzać wynik każdej operacji. Wtedy...
poszukaj sobie komponentów do obsługi RS232 w delphi (np. torry.net, 4programmers.net)
Gotowiec, powinno działać Class Program Public Shared Sub Main(args As String()) Dim rectext As String = "+CMGR: ""REC READ"",""+48508XXXXX... " & vbCr & " przykladowa tresc sms.... " ReadText(rectext) End Sub...
sam potwierdziłeś to co napisałem wcześniej , każdy robot to indywidualna sprawa i tak samo wygląda sterowanie podstawowa sprawa to znajomość dowolnego języka programowania , najprościej masz w Bascomie który ma kilka gotowych poleceń dzięki którym komunikacja po RS-esie jest stosunkowo prosta , istnieją również podobne biblioteki lub macra dla innych...
Masz błąd w funkcji usart_init(). Brakuje Ci ustawień starszegi bajtu danych UBBRH oraz jednej najważnejszej rzeczy nie ustawiłeś ramki danych tzn bitów stopu, kontroli parzystości oraz wielkości ramki :) Funkcja usart_init() powinna wyglądać mniejwięcej tak: void USART_Init() { /* Ustawianie prędkości*/ UBRRH = (unsigned char)(UART_CONST...
A teraz jeszcze pytanie z innej beczki. Procesor steruje pilotem RC5 na przerwaniu INT0, chciałbym jeszcze dodać obsługę RS232 ale nie chcę żeby ciągle było sprawdzane czy coś jest przesyłane bo to mi tylko spowolni program, czy jest możliwość wykrycia ze jakieś dane dochodzą do procesora i wtedy ustawienia flagi po tym będzie wykonany odbiór danych...
Port com po każdym zgłoszeniu zdarzenia zwróci pojedynczy bajt - to ty musisz te bajty jakoś połączyć np w tekst. Dodatkowo jeżeli sprawdzasz flagę comEvReceive w pętli to nie wiem czy ona sama się zeruje, jeżeli nie to czy to się nie zapętli w nieskończoność? Spróbuj dodać MSComm1.InputLen = 0 w tym "case" gdzie odbierasz znak.
Brak podstawowych danych odbiornika tv w samochodzie. (W Polsce przyjęto że odbiór programów cyfrowych możliwy będzie jedynie na antenach dachowych. Jeżeli TV posiada odpowiednie gniazda wejściowe, to można pobawić się podłączając dowolny dekoder 12 V. Ale zaniki sygnału, całkowite, odmiennie niż w analogu zniechęcą do oglądania tv http://www.krakowrtv-sara.pl/product.php...
Skoro chesz przesyłać dane czyste dane binarne to chyba zrozumiałe, że odpada ci konstrikcja Bytematch z zastosowaniem dowolnego bajtu, który byłby końcem jakiejś tam ramki w związku z tym musisz je albo: 1. wysyłać czysto binarnie z kompa a w procku po prostu czekać na zakończenie transmisji - wprowadzając jakiś TimeOUT (ale to czasami mało eleganckie...
Dodam tylko że potrzebne jest tyle dekoderów ile TV. Cyfra podchodzi bardzo liberalnie do podziału uprawnień w obrębie jednego lokalu/domku. Po prostu to się im opłaca bo większość ludzi wybiera ich platformę ze względu na podział. Rozwiązanie w 100% legalne. Obecnie podział uprawnień w C+ opiera się na kilku rozwiązaniach : Spliter > czyli coś takiego...
budowa serwerów czasu na GPS jest sprawą normalną dla instalacji gdzie odbiór DCF jest mocno zakłocony (np(hale przeysłowe ze falownikami) serwer czasu można zestawić korzystając z elementów np moduł GPS około 320 zł http://www.u-blox.com/products/tim_lc.ht... w Polsce w jest w ofercie http://www.microdis.net/ccards.phtml?lan... (3.3v ale toleruje...
https://obrazki.elektroda.pl/8536930800_... Witam Szanownych Kolegów W kolejnej publikacji chciałbym rozwinąć temat firmowego protokołu diagnostycznego ALDL o prędkości 160 baud. Był on stosowany w epoce OBD1, między innymi w starszych modelach Opla (np. w Kadecie), a za sprawą "zapożyczenia" rozwiązań GM trafił również do Polonezów....
Trzeba by poczytać troszku o RS485. Jeśli chodzi o sprzęt, to w zasadzie masz dwie główne możliwości. Pierwsza to półdupleks, czyli transmisja naprzemienna po tej samej parze przewodów, druga dupleks w układzie czteroprzewodowym (para przewodów od mastera, para do mastera). Dodatkowo korzystnie z punktu widzenia linii może być pociągnięcie między układami...
Dodam tylko że potrzebne jest tyle dekoderów ile TV. Cyfra podchodzi bardzo liberalnie do podziału uprawnień w obrębie jednego lokalu/domku. Po prostu to się im opłaca bo większość ludzi wybiera ich platformę ze względu na podział. Rozwiązanie w 100% legalne. Obecnie podział uprawnień w C+ opiera się na kilku rozwiązaniach : Spliter > czyli coś takiego...
204
No dobrze, ale skąd te głupoty nawet w REALTERM że nie jestem w stanie zinterpretować danych?
Przecież w paczce z ComPortem jest instrukcja!!!
Napisałem parser dla twoich wymagań.. cały bufor to jeden string.. dane zamiast pobierać z rs232 to są pobierane z pliku (dla lepszego testu w porcjach o losowym rozmiarze od 1 do 10 bajtów) i przekazywane do parsera... jedyne co musisz zmienić to źródło danych przekazywanych do AppendToBuf oraz samą obsługe odpowiedzi -> zamienić writeln na co kolwiek...
Lpt ma małą wydajność prądową. Dlatego polecam zasilacz. Stan poszczególnych pinów (0,1) można zmieniać programowo. RS wysyła dane szeregowo. Najwolniej to chyba 2400 baud/sek. Polecam mikrokontroler z wbudowanym uart, do tego konwerter napięć max232 i układ gotowy. Dlatego lpt się obsługuje prościej, bo dane są wyprowadzane równolegle.
Portu com nauczylem sie sterować z ksiązki RS232C Andrzeja Daniluk-a (Helion) Jednak to za mało nie mam tam wszystkiego jest tylko jak odbierać znaki liter, znaki sterujace i tu mam zonka. Otóż Mikrokontroler odczytuje bajty z zew pamieci i wysyła je przez rs232 do komputera i tu mam problem, gdyz wysyłanie jest bardzo szybkie i wysyła wszystkie mozliwe...
Mam taka prosbe czy moze ktos napisac uniwersalny fragment kodu do odbioru danych z rs232 i zamiany na liczby zeby zrobic z tego wykres. Bo jedni uzywaja Read a inni ReadStr
Temat wydzieliłem. Czy przed napisaniem postu przeszukał kolega forum ? Wątków o RS232 w Delphi trochę było. Pozdrawiam, Krzysztof.
Witajcie Napisałem program , wysyła mi dane na rs232 w hex tak jak potrzebuję i tutaj wszystko jest w porządku. Problem rodzi się przy odbiorze danych , potrzebuję wyświetlać/odbierać dane również w HEX Napisaną mam taką formułę: [syntax] Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventA...
Witam! Znalazłem aplikacje odbierajacą i wysyłająca przez port szeregowy rs232 w C++ Builder. Jednak program odbiera deane tylko do pierwszego 0 a ramka ktora wysyłam i chce odebrać przy zwartm Tx i Rx posiada też zera, więc otrzymują ją niekompletną. Proszę o pomoc. Pozdrawiam.
odbiór rs232 rs232 odbiór danych odbiór znaku rs232
podcisnienie silniku soundbar zrobić samemu różnicówka przewody
śmieszne obrazki electronics zasilacz
Zamiennik dla tranzystora IGBT IRG4BC30W IR 9A1B9903 MRC GD3N B60SD - Przetwornica ksenonowa, specyfikacja