crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QIODevice и WinAPI
xbarmaglot
  опции профиля:
сообщение 18.6.2014, 19:18
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 14
Регистрация: 29.8.2012
Пользователь №: 3502

Спасибо сказали: 0 раз(а)




Репутация:   0  


В системе есть устройство, с которым я работаю через WinAPI (CreateFile, ReadFile, WriteFile,...).
Я могу работать с ним как в синхронном режиме, так и в асинхронном.

Но захотелось работать с этим устройством как с QIIODevice.
Для синхронной работы достаточно переопределить виртуальные методы readBytes и writeBytes.
А как реализовать работу в асинхронном режиме.

В идеале хотелось бы разрешить работать в обоих режимах.

З.Ы. И не совсем понятно как быть с сигналами readReady и всякими там wait-методами (waitForByteWrite, ...)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 18.6.2014, 19:42
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Read/WriteFile тоже можно делать асинхронно:
http://msdn.microsoft.com/en-us/library/wi...3(v=vs.85).aspx
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
xbarmaglot
  опции профиля:
сообщение 19.6.2014, 7:08
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 14
Регистрация: 29.8.2012
Пользователь №: 3502

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(lanz @ 18.6.2014, 20:42) *
Read/WriteFile тоже можно делать асинхронно:
http://msdn.microsoft.com/en-us/library/wi...3(v=vs.85).aspx


Цитата(xbarmaglot @ 18.6.2014, 20:18) *
Я могу работать с ним как в синхронном режиме, так и в асинхронном.


Я это и сказал. Меня интересует вопрос как это реализовать в наследнике QIODevice
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 19.6.2014, 21:45
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Можно сделать рабочий тред, который будет опрашивать устройство и обмениватся сигналами с наследником QIODevice.
В Qt5 есть http://qt-project.org/doc/qt-5/qwineventnotifier.html
Можно посмотреть исходники QtSerialPort.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ahalaj
  опции профиля:
сообщение 20.6.2014, 10:10
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 47
Регистрация: 14.6.2014
Пользователь №: 4166

Спасибо сказали: 13 раз(а)




Репутация:   1  


xbarmaglot, посмотри исходники QTcpSocket и QProcess. Они имеют родителем как раз QIODevice и при этом вполне себе асинхронные.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 2:56