Информация об изменениях

Сообщение Re: Помогите с вопросом от 13.04.2024 16:42

Изменено 16.04.2024 21:47 Marty

Re: Помогите с вопросом
Здравствуйте, milkpot, Вы писали:

M>Первая версия принимала пакеты в главном потоке, в результате чего замерзало окно приложения.


Видимо, ты в блокирующем режиме читал данные?


M>Перенос readPendingDatagrams в рабочую нить привел к тому, что приложение перестало принимать пакеты.


Тут могут быть какие-то особенности архитектуры Qt. Я как-то из COM-порта пытался читать средствами Qt, нихрена не читалось, оказалось, что нужен цикл обработки сообщений, хотя, казалось бы, причем тут COM-порт в консольной программе. Пришлось что-то руками дёргать. В основном потоке, где у тебя окно, такой цикл есть, а вот в воркере его вероятно нет, и вероятно, что сокету это нужно тоже, ка ки COM-gjhne


M>Wireshark видит, что пакеты приходят к хосту от устройства, а приложение пакеты не видит.

M>Вот фрагменты кода

Спасибо, не надо
Re: Помогите с вопросом
Здравствуйте, milkpot, Вы писали:

M>Первая версия принимала пакеты в главном потоке, в результате чего замерзало окно приложения.


Видимо, ты в блокирующем режиме читал данные?


M>Перенос readPendingDatagrams в рабочую нить привел к тому, что приложение перестало принимать пакеты.


Тут могут быть какие-то особенности архитектуры Qt. Я как-то из COM-порта пытался читать средствами Qt, нихрена не читалось, оказалось, что нужен цикл обработки сообщений, хотя, казалось бы, причем тут COM-порт в консольной программе. Пришлось что-то руками дёргать. В основном потоке, где у тебя окно, такой цикл есть, а вот в воркере его вероятно нет, и вероятно, что сокету это нужно тоже, как и COM-порту


M>Wireshark видит, что пакеты приходят к хосту от устройства, а приложение пакеты не видит.

M>Вот фрагменты кода

Спасибо, не надо