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 AVR - Konwersja LONG na WORD - jak rozbić zmienną 4 bajtową

Daniel_GSM 28 Wrz 2015 15:27 1146 6
REKLAMA
  • #1 15027312
    Daniel_GSM
    Poziom 25  
    Witam,

    Mam problem z wysłaniem zmiennej Long przez RS232.
    Wszystkie inne zmienne 2-bajtowe (Word) pięknie przechodzą natomiast Longa już na 1 rejestrze nie wyślę.

    Rejestry mam 16-bitowe - chciałbym wykorzystać 2 rejestry 16 bitowe żeby wysłać zmienną 4 bajtową.


    Czy może mi ktoś podpowiedzieć jak rozbić liczbę np 250000 w Bascomie aby przesłać ją na dwóch rejestrach a później poskładać?

    Oczywiście zmienna zdeklarowana prawidłowo i na wyświetlaczu podłączonym do mikrokontrolera wyświetlana jest prawidłowo

    Dim zmienna As Long
  • REKLAMA
  • REKLAMA
  • #3 15027860
    Mateusz@
    Poziom 18  
    Wysyłasz poleceniem:
    Printbin
    Bascom automatycznie wyśle 4 bajty z których składa się zmienna Long.

    A odebrać może poleceniem
    Inputbin
    Ale ta metoda nie jest zalecana bo program zatrzymuje i czeka do momentu aż odbierze 4bajty (jeśli odbieramy zmienna Long)
    Lepiej odbierać dane w przerwaniu i zapisywać je w tablicy a następnie użyć polecenia memcopy.
    Lub przepisać bit po bicie tak jak sugeruje @Press ale to 32 linie kodu.
  • REKLAMA
  • REKLAMA
  • #5 15028043
    Daniel_GSM
    Poziom 25  
    M. S. napisał:
    rezultat = HIGHW( zmienna )


    Wow - to działa...
    Zastanawiam się tylko dlaczego nikt nie napisał o
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Ja zrobiłem coś takiego:

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Dzięki temu wysyłam dwa słowa 16-bitowe, które później łączę w jedno 32-bitowe :)

    Zapomniałem napisać na początku, że wszystko wysyłam po Modbus RTU.
    Rejestr 32-bitowy muszę wysłać jako dwa 16-bitowe - po to mi to było potrzebne.
    Po drugiej stronie Scada, która już sobie poradzi z poskładaniem na słowo 32-bitowe

    I powiem Wam, że jest OKI !
  • Pomocny post
    #6 15028294
    Press
    Poziom 24  
    Daniel_GSM napisał:
    M. S. napisał:
    rezultat = HIGHW( zmienna )


    Wow - to działa...
    Zastanawiam się tylko dlaczego nikt nie napisał o
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod




    No bo to logiczne!?! ;)
    Nie bez powodu podałem Ci link do MCSWiki. Poszperaj tam trochę.
  • #7 15028459
    Daniel_GSM
    Poziom 25  
    Teraz właśnie czytam...

    Jest ok - wszystko śmiga jak powinno!

    Temat zamykam bo został perfekcyjnie rozwiązany.
REKLAMA