• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Qthread [pętla while(1) wysyłająca komende portem rs]

0 głosów
254 wizyt
pytanie zadane 1 lutego 2020 w C i C++ przez Sc4red Użytkownik (590 p.)

czesc,

 

Mam problem z pętlą:

void MyThread::run(){
    while(1){
       Polaczenie->WriteData(Komenda);
       usleep(1000);}
}

 

Wykonuje się 8 razy po czym występuje:

 

QObject::startTimer: Timers cannot be started from another thread

 

Jak mogę to naprawić ?

komentarz 1 lutego 2020 przez tkz Nałogowiec (42,040 p.)
Pokaż więcej kodu. Ale, żeby nie było, trochę postrzelam. Tego rodzaju błąd może wystąpić, jeśli utworzysz instancję obiektów, do których masz wskaźniki, zanim wywołasz moveToThread (na przykład) tak, że faktycznie znajdują się w innym wątku, kiedy go uruchomisz. Zostaje jeszcze inna opcja, Wszystkie klasy GUI nie mogą zostać przeniesione do innego wątku. Muszą pozostać w wątku z GUI (który utworzył QApplication / QGuiApplication).
komentarz 1 lutego 2020 przez Sc4red Użytkownik (590 p.)

Jasne, projekt jest na github :

https://github.com/Sc4redd/GDM_8341_program

 

Myśle że problem jest związany z obiektem który realizuje połączenie po rs. Spróbowałem go wywołać dopiero w thread, ale efekt jest ten sam. :(

komentarz 1 lutego 2020 przez j23 Mędrzec (195,220 p.)

Według dokumentacji QSerialPort nie jest thread-safe, zatem nie powinna być używana w tym samym czasie w kilku wątkach. U Ciebie jest.

komentarz 4 lutego 2020 przez Sc4red Użytkownik (590 p.)
Jasne, już mi się to udało pozmieniać. Dziękuje za pomoc!

1 odpowiedź

0 głosów
odpowiedź 1 lutego 2020 przez Sc4red Użytkownik (590 p.)
edycja 1 lutego 2020 przez Sc4red
Już mi się udało, rozwiązałem problem. Zamiast otwierać nowy wątek użyłem qtimer z przerywnikiem.

Podobne pytania

0 głosów
1 odpowiedź 346 wizyt
pytanie zadane 20 września 2021 w C i C++ przez tonn204 Mądrala (7,470 p.)
0 głosów
1 odpowiedź 1,053 wizyt
pytanie zadane 16 listopada 2020 w C i C++ przez Lyokoheros Początkujący (340 p.)
0 głosów
2 odpowiedzi 298 wizyt
pytanie zadane 13 sierpnia 2019 w C i C++ przez amelia.cpp Obywatel (1,860 p.)

93,692 zapytań

142,611 odpowiedzi

323,221 komentarzy

63,220 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...