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

[Rozwiązano] Freemodbus, modbuspoll a własne operacje w pętli nieskończonej

Mirek_1 28 Maj 2020 23:02 654 6
REKLAMA
  • #1 18724983
    Mirek_1
    Poziom 4  
    Wiam

    Analizuję bibliotekę freemodbus i w głównym pliku programu mam funkcję modbuspoll(), w pętli nieskończonej program wchodzi do funkcji i jej nie opuszcza. Chciałbym też w pętli tej dokonać jakichś swoich operacji aby uzupełnić rejestry danymi które mogą być później odczytane przez masera, jak tego mogę dokonać? Jak wyjść z tej funkcji i ją ponownie załączyć? Pozdrawiam.
  • REKLAMA
  • #2 18724990
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Lepiej powiedz skąd tą funkcję wziałeś, ponieważ w oryginalnym FreeMODBUS takiej funkcji jak modbuspoll() nie ma.

    https://github.com/cwalter-at/freemodbus/search?q=modbuspoll&unscoped_q=modbuspoll
  • REKLAMA
  • #3 18725229
    Mirek_1
    Poziom 4  
    przepraszam chodziło mi o funkcje ( void )eMBPoll( ); pisałem z głowy ;)
  • REKLAMA
  • #4 18725460
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Jeśli ta funkcja nie wraca, to znaczy że gdzieś głębiej w kodzie (całkiem możliwe, że w Twoich plikach "portu", czyli np. obsługi portu szeregowego albo obsługi TCP/IP) jest błąd i tam coś się wiesza. Normalnie ta funkcja zawsze wraca i to bardzo szybko, wiec trzeba ją wywoływać w kółko w jakiejś pętli.
  • #5 18730944
    Mirek_1
    Poziom 4  
    Tak dzięki za podpowiedz rzeczywiście miałem błąd tak jak pisałeś. Zastanawia mnie jeszcze jedno jak efektywnie powinno się stosować tę funkcję. Mianowicie czy powinna sobie po prostu działać w funkcji main z innymi funkcjami realizującymi program. Czy jest jakiś inny sposób uruchamiania tej funkcji.
  • Pomocny post
    #6 18731299
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Tu Ci nie podpowiem, bo sam używam FreeMODBUSa jedynie w programach wielowątkowych, więc po prostu mam wątek który wywołuję tą funkcję w kółko + obsługę wielowątkowości w innych miejscach FreeMODBUSa (np. timerach, serial porcie itd.).

    W każdym razie podejrzewam, że najlepiej byłoby ją wywoływać "dosyć często", nie rzadziej niż jeden znak MODBUSa. Jeśli akurat biblioteka nie ma nic ciekawego do zrobienia, to funkcja praktycznie od razu wychodzi, więc tez zbyt dużo "mocy obliczeniowej" nie powinieneś stracić...
  • REKLAMA
  • #7 18850467
    Mirek_1
    Poziom 4  
    Rozwiązanie jak opisano powyżej
REKLAMA