Przerwanie bym raczej właczył przed odpaleniem DMA. Odbiór przez DMA to raczej tylko w przypadku kiedy masz zawsze tę samą ilość danych. nie wiem jak w Twoim przypadku bo nic o tej "ramce" nie piszesz. Rozmiem że ma dokładnie 30 bajtów. Jezeli ma więcej lub mniej o choćby jeden bajt to Twój algorytm nie zadziała. - jezeli mniej np o 5 bajtów to odbierze...
a dokładniej to jest tak - ramka z jednego proca: 5,95,48,56,146,10,1,0,203,3 odp. z drugiego: 2,95,48,53,146,202,3, pierwszy bajt transmisji określa ilość merytorycznych bajtów w ramce.(05) lub (02) dla tych przykładów. 2 i 3 bajt to adres urządzenia lub proca widoczny w zapytaniu i odpowiedzi (95,48) dalej zawartość "merytoryczna" ramki np.(56,146,10,1,0,)...
Chyba się udało :D Podsumowanie i przykładowe kody w Pythonie - wykorzystywany algorytm CRC MAXIM czyli wielomian x8+X5+X4+X0 jako generator ciągu pseudolosowego [syntax=python]# Define a function `crc8()` def crc8(x): if x & 0x01: x = (x >> 1) ^ 0x98 else: x = x >> 1 return x [/syntax] - obliczanie ograniczyłem tylko do obszaru danych...
(...) mmand ); Serial.print(command , HEX); Serial.print(" "); } Serial.println(); } void displayOxygenPercentage(float percentage) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Tlen: "); lcd.print(percentage, 1); // Wyświetlenie jednego miejsca po przecinku lcd.print("%"); } Poniżej znajdziesz pełny, scalony kod, który łączy obie części - dotychczasową...
ale kombinujesz!!! co ci szkodzi podlaczyc CTS i RTS przeciez scalaczek RS232 ma dwie line wejsciowe i 2 wyjsciowe. Jak sie juz uparles no to mozna zrobic tak: robisz bufor na np. 16 bajtow. Ramka przychodzacych danych z kompa 16 bajtow.I teraz jesli chcesz aby kolejna ramka danych nadeszla musisz wyslac do kompa potwierdzenie gotowsci.Oczywiscie na...
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...
Koncepcja jest nie najgorsza pod warunkiem, że w ciągu danych nie występuje 0xA3. Owszem, masz rację. W ramce A3 może się powtórzyć (np. kiedy się jedzie z prędkością 16,3km/h ). Dlatego proponowałem po wykryciu A3 zbierać następne bajty do bufora już bez ich oglądania (czy to A3 czy nie), tylko na ilość (konkretnie jeszcze trzy bajty po A3). Zakładając...
Ja osobiście przyczepił bym się do tego: SIGNAL (SIG_UART_RECV) { odebranyZnak = UDR; // będzie składać slowo[] ze znaków różnych od: if ((odebranyZnak!=0x0D) && (odebranyZnak!=0x0A) && (odebranyZnak!=' ')&& (odebranyZnak!=',') && (odebranyZnak!='$'))...
To jest ten sam protokół co H02, ale nadaje ramkę naprzemiennie w DEC (plaintext) i HEX, więc parser musisz sobie napisać z dekoderem dla dwóch formatów. Czasami w jednym pakiecie leci kilka ramek, więc musisz tak napisać parser by oddzielał pakiety zakończone "#". Taka paczka ma różną długość. Za to ramka w HEX ma zawszę tę samą [90bajtów]. Na testy...
Zmień 13 na jakiś inny kod, np 3, albo 2. no tak - tylko co to da - skoro pytający może mieć w ramce dowolne dane binarne ??? w związku z czym jeśli da sobie kod np 3, albo 2 - to za chwilę będzie kolejne takie samo pytanie - jeśli trafi się ramka , która wśród danych będzie miała bajty o wartości 0x03 albo 0x02
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...
1)linia A przez rezystor do VCC, B przez rezystor do GND Proponuj ten sposób. W EP 6/2003 jest opis konwertera RS232<->RS485 wykorzystująsy to podłączenie. Mam go przetestowany i napewno dziala. Jeżeli chodzi o występowanie w tym przypadku stanu wysokiego to jest raczej przydatne. Jeżeli przeanalizujesz ramkę danych w RS232 to zobaczysz że stanem...
Ramka danych standardowa i2c czyli najpierw wysyłasz adres układu potem wysyłasz dane i tu jest z górki bo nawet w tamtym poście z forum masz podane parametry jakie należy wysłać. Raz wysyłasz przy uruchomieniu konfigurację z jaką ma działać układ i to należy wrzucić do klamerek setup w uproszczeniu chcesz aby układ miał ustawiony bas i sopran na 0...
Być może się nada, nie wiem co w tym kodzie jest porobione. W każdym razie ostatni "oficjalny" release FreeMODBUSa można znaleść w jednym z moich repozytoriów - https://github.com/DISTORTEC/FreeMODBUS, zasadniczo commit https://github.com/DISTORTEC/FreeMODBUS/... to wersja 1.5.0, choć poprawki z kolejnych...
Bufor cykliczny - tablica o długości N bajtów. Dwa wskażniki na elementy tegoż. Pierwszy wskażnik do odczytu (wo), drugi do zapisu (wz). Początkowo oba wskażniki ustawione na początek bufora. Zapis: Procedura przerwania po każdym odebranym bajcie zapisuje go w miejscu wskazanym przez wz. Następnie wz jest inkrementowany i jeżeli wskazuje na element...
Shift jest od przesuwania bitów. Ty musisz przesuwać całe bajty w tablicy Buffer_in. Użyj sobie mojej metody odbierania: [syntax=vbnet]Inputbin Dana Buffer_in(in_pos) = Dana Incr In_pos If In_pos = 9 Then 'Jak zmieści się co najmniej jedna cala ramka danych If Buffer_in(1) = &H01 Then 'To sprawdzamy czy jest prawidłowo rozpoczęta If Buffer_in(2) = &H10...
Klawiatura optyczna w naszych panelach działa w technologii projekcji matrycy wiązek podczerwieni. Przed naklejką z nadrukowanymi "przyciskami" przechodzą "krzyżujące się" w odpowiednim punkcie skupione wiązki światła podczerwonego - trzy, po jednej dla każdej "kolumny" i cztery, po jednej dla każdego "rzędu" przycisków. Miejsce ich krzyżowania definiuje...
Chyba słabo tłumaczę. Wszystkie dane są w postaci bajtów. Więc deklarujesz tablicę np char dane[255] Do tej tablicy wczytujesz odpowiedź z serwera. Myślę, że potrafisz napisać prostego klienta TCP lub UDP w podanych językach. Jeżeli wysyłasz to samo zapytanie to ramka odpowiedzi jest również ta sama z innymi danymi. Pola i ich miejsca pozostają...
Zaczynasz dobrze. Wg protokołu inicjację "/?!\r\n" wysyłasz na prędkości 300 bd (ustawienie transmisji 7E1). Nie żadnej innej - 300, bo tak mówi norma. Licznik energii ma wówczas maksymalnie 2 sekundy na odpowiedź, a odpowiedzią jest wpierw ramka identyfikatora licznika, który ma postać "/XXXZD<CR><LF>", gdzie XXX jest identyfikatorem producenta,...
Witam! Let's do some math, czyli "dlaczego się nie da" ;] Sygnał stereo o częstotliwości próbkowania 48kHz wymaga wysłania (2*48k)=96000 ramek danych w ciągu sekundy. Pojedyncza ramka danych to 32 bity (w tym 20 bitów danych, reszta to w uogólnieniu "narzut interfejsowy"). 96k ramek na sekundę, z których każda jest 4bajtowa, daje niebagatelną przepustowość...
http://obrazki.elektroda.pl/4164965000_1... Witam. Od dłuższego czasu interesuję się technologią RFID i dziś chciałem zaprezentować rozwinięcie mojej dawnej konstrukcji mianowicie czytnik kart RFID ze zintegrowaną anteną na płytce PCB. Ze względu na skomplikowaną konstrukcję anteny (niewielkie odległości między ścieżkami) płytka została...
Witam, ostatnio zakupiłem sobie odbiornik gps z allegro z którego mam zamiar zrobić sobie rejestrator tras (atmega 162 + karta SD/MMC + przetwornica napięcia z nokii). Przeglądając internet w poszukiwaniu opisu standardu NMEA natknąłem się na ciekawy dokument (jest w załączniku). Myślę, że rozwieje on Twoje wszelkie wątpliwości. np. co do pytania pierwszego:...
Jak masz 2 sieci ethernet połączone routerem, to pakiety latające w tej sieci są adresowane lokalnymi MACami tam gdzie pakiet ma być wysłany. Wiec ramka w polu from po przejsciu przez router nie może zawierać Twojego maca bo inaczej komunikacja w tej kolejnej sieci by nie zadziałała. To czy protokół wyższego poziomu w przesylanych danych z jakichkolwiek...
Ostatnio wpadły mi w ręce dwa takie wyświetlacze RCM7089V-1B (z układem BU12445-00) oraz LCM-WM002 (scalak zalany czarną żywicą). Ponieważ stwierdziłem, że wbudowana obsługa diod LED, oraz przycisków jest bardzo wygodna postanowiłem zbadać sprawę. Przede wszystkim wcześniej opisane wyprowadzenia zawierają poważne błędy. Poniżej umieszczam prawidłową...
Jak wcześniej pisałem wyrzuciłem wszystko co nie było związane z transmisją aby bliżej przyjrzeć się problemowi i faktycznie wyrzuciłem zbyt wiele. W pętli głównej oryginalnie jest skok do funkcji analizującej drugi bajt oraz zmiana stanu odbiornika - NetRxState = 0x00; //RESET Użyty kwarc to 11,059200MHz Chyba trochę przesadziłem pisząc ten automat....
Każdy pakiet trzeba przy nadawaniu obudować w ramkę, a potem z niej wyciągnąć. Obciążenie urządzenia sieciowego mniej zależy od ilości przesyłanych danych, a bardziej od ilości pakietów, bo czy pakiet duży czy mały trzeba się prawie tyle samo natrudzić z enkapsulacją/dekapsulacją pakietu. Standardowa ramka może mieć od 64 do 1518 bajtów, to jest niemal...
Nie rozumiem po co tak nakombinowałeś, Na lini DCLK pojawia się zegar w takt którego wystawiasz dane, będziesz wykrywał zbocze opadające, przełączał cały interfejs, wystawiał odpowiedni stan na DIO, czekał określoną ilość czasu, bo zbocza zatraskującego procek nie zobaczy i przełączysz interfejs w tryb odbioru na zasadzie "już powinno być ok?" A potem...
Na podstawie dokumentacji i załączonego przykładu aby wysłać ramkę CAN należy zadeklarować blok funkcyjny sterownika (driver) CAN razem z jego konfiguracją: driver11bit : CAN.CANBus_11bit; g_busConfig : CAN.DRIVER_CONFIG := (usiNetwork:= 0, uiBaudrate:= 500, ctMessages:= 10); Na załączonym przykładzie podczas deklaracji...
Od jakiegoś czasu mam stację pogodową Auriol z Lidla. Może ona obsługiwać do trzech termometrów zewnętrznych, w zestawie był jeden taki czujnik. Udało mi się ustalić, że może pasować czujnik do stacji Hama czasem dostępny w sklepie Conrad ale cena nie była zbyt zachęcająca i nie miałem pewności, że to zadziała. Postanowiłem samemu wykonać taki czujnik....
Kwarc wstaw w obu przypadkach nawet 16MHz. Baudrate jest zależna w zasadzie od jego dzielnika niż od kwarcu. Nie szalej też z dużą szybkością bo błędy mogą wyskoczyć, zacznij od 4800 bps. Połączenie po UART masz zrobić sprzętowo! Timer niech ci obsługuje multiplexing, główna pętla programu sprawdzanie czy w UART coś przyszło i przepisywanie do tablicy....
Ramka 01 01 00 00 00 0a crc crc to rozkaz odczytu 10 "cewek" (coil). Odwiedź wg specyfikacji Modbus powinna być 01 01 02 dane dane crc crc; ewentualnie 01 81 błąd crc crc. U Ciebie sterownik odpowiada 01 01 00 21 90, gdzie 00 to liczba bajtów danych w odpowiedzi, a 21 90 to crc dla ramki odpowiedzi. Wg specyfikacji Modbus taka ramka odpowiedzi nie może...
A to chyba jest tak że pierwszy blok danych jest wysyłany przez firmowy programator a drugi to po prostu odpowiedź sterownika pompy. Pierwszy blok to zapytanie a drugi to odpowiedź jak w typowym protokole Master Slave. Czy w tym programatorze firmowym jest jakaś możliwość ustawienia adresu urządzenia ? Pierwsze dwie ramki to może właśnie adres , ewentualnie...
Jeśli chodzi o licznik do 508 i 3008 to tutaj sprawa wygląda zupełnie inaczej. Odpowiednia ramka danych aktywuje licznik. Bez tej ramki podawanej cyklicznie liczniki się usypiają.
Witam Zajrzyj na stronę www.zetkom.com.pl Jest tam opisany "Telefon T2". Jest to komputerowy telefon systemowy do centrali Panasonica. Każdej!. Jest to niedrogie. Kupiliśmy do to jednej firmy i są zadowoleni Pozdrawiam Tomasz K.
Jak będę miał chwilę to napiszę skrypt Bash np. dla routera z OpenWrt, który odpalamy w cronie co minutę. Na szybko naskrobałem skrypcik. Zapisujemy sobie go gdzieś np. pod nazwą inttemp i nadajemy prawa wykonywania (chmod +x ./inttemp): nie liczy sam CRC więc ramkę sobie trzeba samemu przystosować. Wszystko wyjaśnione jest samym skrypcie.
Witam Przygotowuje się do wyodrębnienia kilka sieci VLAN, póki co w domowym "labolatorium" mam switch i router opartych na RouterOS oraz SwitchOS. Sama konfiguracja jest jasna, bo i pomocy jest dużo, ale mam problem aby umożliwić korzystanie z wspólnego serwera tj. usługi udostępniania plików oraz serwer SQL dla komputerów z innych VLANów. Jeżeli ktokolwiek...
Skoro wyświetlił się błąd (kontrolka żarowych) komputer silnika zapisał błąd z ramką danych. Odczytał go ktoś? Jaki kod błedu? Ramka danych do niego?
Mam problem z rozróżnieniem kiedy mówimy o pakietach, a kiedy o ramkach, w którym momencie kończy się sieć LAN. Ciężko mi nawet wytłumaczyć moje wątpliwości. Zazwyczaj ramka oznacza to samo co pakiet w danej sieci. W Ethernecie dane są pakowane w ramki o długości od kilkudziesięciu bajtów do ponad 1,5kB. Większe ilości danych są dzielone na ramki i...
Nie podałeś jaki jest adres urządzenia. Załóżmy 3. Umieszczasz go w pierwszym bajcie ramki. Później kolejno bajty o wartości 5, 0, 1, 0xff, 0 i dwa bajty crc. Ramka: 3, 5, 0, 1, 0xff, 0, 0xdc, 0x18 CRC policzone [url=http://www.lammertbies.nl/comm/info... kalkulatorem, może być błędne. Algorytm z przykładem kodu jest w [url=http://www.modbus-ida.org/docs/Modb...
1. (PC) Wyślij ramkę z rozkazem z do odpowiedniego uP. 2. (uP) Zeruj rejestr PER timera za każdym odebranym bajtem. 3. (uP) Po odebraniu ostatniego bajtu - czyli po przerwaniu od przepełnienia timer'a, który ustawiłem na 50ms - analizuj odebraną ramkę. 4. (uP) Jeśli ramka jest poprawna to postaw flagę zezwalającą na wysyłkę danych do PC. Przyznam że...
comport.readstr nie odczytuje calego bufora ,tylko tyle danych ile podasz mu w drugim parametrze, chyba ze podasz mu count z procedury czyli caly bufor. comport tworzy bufor (sam masz wplyw na jego wielkosc) i opiera sie na winapi, wiec wie ile danych zabuforowal. jezeli chodzi o onrxchar ,to nie wie czy cala ramka zostala przeslana poprostu informuje...
Generalnie, W Bascomie obsługa RC5 pozostawia wiele do życzenia dlatego też Mark w najnowszej wersji ma wprowadzić obsługę RC5 na przerwaniu ICP ("prawdziwie" w tle) według poniższego kodu, który udostępniam i polecam: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer1 = Timer , Capture Edge = Falling , Prescale = 8 '1 tick= 1...
Zacina sie bo to wada bascomowejo Getrc5. ten program musi działac, dlaczego go nie zastosowałeś? Spróbuj, tylko odbiornik IR musisz dac na wejscie ICP procesora. [syntax=basic4gl]$regfile = "m16def.dat" $crystal = 8000000 $baud = 9600 Config Timer1 = Timer , Capture Edge = Falling , Prescale = 8 '1 tick= 1 uS On Capture1 Capture_edges 'To przerwanie...
Witam Jak wielu spotkałem się z problemem problemem kłopotliwej obsługi pilota z RC5. Po poszperaniu w necie wpadłem na http://www.elektroda.pl/rtvforum/topic20... ten temat. Jak się okazało wszystko na tym programie pracowało, ale nie zawsze. Kłopotem było napisanie programu "pod pilota". Oczywiście pochwała dla Sabotaz'a który problem "ruszył"...
No to tak masz przykład : <iframe src="plik.html" name="ramka">Twoja Przeglądarka nie obsługuje ramek</iframe> Jest to wywołanie ramki wstawiasz je w miejscu którym ma być pobrana do niego treść. A teraz odnośniki do ramki > <a href="plik.html" target="ramka"">NAZWA </a> Jest to ramka pływająca > o wiele łatwiejsza niż...
Witam. Jeśli masz SDA i SCL to twoją głowicą steruje procesor, a komunikacja z nią odbywa się w standardzie I2C ( I kwadrat C). Jest to komunikacja cyfrowa i nie zaobserwujesz żadnych zmian sygnału na pinach tej głowicy. Jedyne co się zmienia ale tylko w sposób cyfrowy to linie SDA i SCL. SDA jest linią danych natomiast SCL jest to linia zegara a ramka...
Próbowałem odczytać ramki danych wysyłane przez sterownik kotła K1Pv4 pz. Zdaje się, że format ramki wysyłanej do regulatora pokojowego uległ zmianie - chyba zmieniono kotrolę crc. Ramka wygląda trochę inaczej niż opisywane w tym wątku. Natomiast w przypadku modułu ethernet otrzymuję taką ramkę: 0226 fff4 1788 0000 185d , a w samym sterowniku kotła...
Ale ten sposób wysyłania ramek to trochę nie teges. A jak poprawnie się wysyła takie ramki i czym? Nie możesz po prostu sprawdzić w opisie programu jak należy formatować dane? Bo domyślam się że to jakiś terminal jest. Na Wikipedi jest opisane tak: "Minicom to program do kontroli modemu oraz emulator terminala dla systemów uniksowych" Ciężko Ci pomóc...
Ja kiedyś też robiłem takie zabezpieczenia i liczenie CRC określonych (ważnych) obszarów pamięci danych i programu robiłem przy pierwszym uruchomieniu programu. Jeżeli masz bootloader to można to zrobić na końcu po wgraniu całego kodu. Np. ostatnia ramka zawiera CRC źródła (obliczne przy wysyłaniu) i jest porównana z CRC liczonym na podstawie odczytu...
Większa częstotliwość z jaką pracuje łącze to zwykle większa przepustowość i mniejszy pobór prądu. Niestety wyższe częstotliwości są silniej tłumione przez różnego rodzaju przeszkody. Przykładowo zegarkowa bateria CR2032 w termometrze na 2.4GHz wystarcza na kilka miesięcy pracy przy wysyłaniu danych co 1 sek. Zasięg jest ograniczony jednak do jednego...
ramka danych modbus ramka danych rs232 ramka danych ethernet
chiński telefon naprawa zawiasy piekarnik moduł termiczny drukarka
Volvo XC60 I gen. brak mignięcia kierunkowskazów przy zamykaniu pilotem, funkcja 3 mignięć w menu Zacienienie paneli fotowoltaicznych - dioda blokująca czy inne rozwiązania?