QIODevice |
Здравствуйте, гость ( Вход | Регистрация )
QIODevice |
gpepsi |
9.8.2011, 19:57
Сообщение
#1
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
Создавал ли кто свои потоковые устройства ?
Есть несколько вопросов. 1. Есть методы read и write, которые возвращают число байт, которые удалось получить. Но если это, например, сокет, то данные будут фрагментированные и read может вернуть количество байт, огранниченное буфером. Поэтому нужно будет читать пока не вычитали все - или кидать исключение, если что-то не получилось. Есть ли в QT обертки, которые читают пока читается, в зависимости от размера запрошенных данных ? 2. Пытаюсь создать серийный порт на основе QIODevice. Определил readData и writeData. в open открыл порт и выставил нужные параметры. Задал OpenMode == ReadWrite. Достаточно ли этого ? Что еще нужно определить, чтоб работало корректно. И вообще какие методы настоятельно рекомендуется переопределить. |
|
|
PAFOS |
18.8.2011, 8:29
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
Протестировал.
WaitCommEvent возвращает TRUE если в другом потоке вызывается SetCommMask, при чем не важно, открыт ли файл с флагом FILE_FLAG_OVERLAPPED или без него. Короче все работает из твоего примера. З.Ы. Если один момент - на WIN CE при открытии файла имя надо давать не \\.\COM1, а COM1: Знаю что первый вариант в обычной винде предпочтительнее, тем не менее если его использовать на WIN CE, то файл не открывается вообще З.Ы.Ы функция CancelIO на WINCE вроде как отсутствует, во всяком случае у меня ругался компилятор на ее отсутствие |
|
|
Текстовая версия | Сейчас: 28.11.2024, 19:36 |