logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Bascom] Atmega168, RS485 - odbiór danych z róznych modułów

maximus22_kr 19 Maj 2012 01:47 2551 3
REKLAMA
  • #1 10912137
    maximus22_kr
    Poziom 18  
    Witam
    Wykorzystałem do odbioru kod podany przez Kolegę Mirka
    Kod: text
    Zaloguj się, aby zobaczyć kod


    sprawdza się w przypadku jednego urządzenia MASTER i jednego SLAVE, ale chciałbym odbierać dane z kilku SLAVE.
    Jeśli odznaczę w podprogramie Odczyt_rs linie:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    To wtedy zmienna Linia jest wyświetlana ( czyli odbiera ), ale nie jest dokonywana dalsza analiza ciągu,, jeśli usunę te dwie linie to jest OK.
    Ale w sytuacji, gdy dane będą przychodzić z różnych źródeł typu SLAVE, trzeba by je rozróżnić analizując początek ciągu.
    Jakaś sugestia, jak do tego podejść ?
  • REKLAMA
  • #2 10915558
    tech-com
    Poziom 12  
    Ja robiłem tak i działa
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 10921785
    maximus22_kr
    Poziom 18  
    Dziękuję Koledze za odpowiedź.
    Widzę Kolega przesyła temperaturę jako HEX.
    Jak Kolega sobie radzi z problemem długości ciągu?
    Bo nawet przesyłając jako HEX to wartość temperatury ( właściwie długość ciągu ) będzie różna
    - dla 5 stopni to będzie 2 cyfrowy HEX
    - dla 25 to będzie 4 cyfrowy HEX

    Eksperymentując widzę, że chyba najprostszym rozwiązanie jest używanie jednego stałego ciągu w całej "sieci" i wyciąganie z niego właściwych informacji w konkretnym urządzeniu.

    Ja bym wolał tak, żeby jedno urządzenie - master odbierał i interpretował dwa ciągi np.
    Ciąg czasu
    TIMESC1257
    Ciąg temperatury
    MOD16T00257

    Wysyłane z różnych slave'ów
  • #4 10923822
    tech-com
    Poziom 12  
    Witam
    Właśnie dla tego żeby długość ciągów w ramce była taka sama to wysyłam to jako HEX.
    Deklarując zmienną jako np. Byte zawsze dane w HEX bandą zawierały się w zakresie 00-FF.
    I tak dla przykładu:
    -dla 5 stopni w HEX daje 05
    -dla 25 stopni w HEX daje 19
    -dla 125 stopni w HEX daje 7D
    Jak z tego widać ramka nie ma prawa się rozjechać.
    Wysyłam i odbieram w jednej ramce ponad 25 zmiennych i działa to super.
REKLAMA