Сообщение 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>Вот фрагменты кода
Спасибо, не надо
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>Вот фрагменты кода
Спасибо, не надо
M>Первая версия принимала пакеты в главном потоке, в результате чего замерзало окно приложения.
Видимо, ты в блокирующем режиме читал данные?
M>Перенос readPendingDatagrams в рабочую нить привел к тому, что приложение перестало принимать пакеты.
Тут могут быть какие-то особенности архитектуры Qt. Я как-то из COM-порта пытался читать средствами Qt, нихрена не читалось, оказалось, что нужен цикл обработки сообщений, хотя, казалось бы, причем тут COM-порт в консольной программе. Пришлось что-то руками дёргать. В основном потоке, где у тебя окно, такой цикл есть, а вот в воркере его вероятно нет, и вероятно, что сокету это нужно тоже, как и COM-порту
M>Wireshark видит, что пакеты приходят к хосту от устройства, а приложение пакеты не видит.
M>Вот фрагменты кода
Спасибо, не надо