Задать вопрос
  • HeartRate monitor для Windows через bluetooth?

    maaGames
    @maaGames Автор вопроса
    Да, вы правы. Пульсомеру нужен v4, а у меня донгл v2. А по поводу программ ничего не приходит в голову?
    В крайнем случае попробую свой клиент написать.
  • Как грамотно собрать драйвер для Windows 10 x64?

    maaGames
    @maaGames
    Если не ошибаюсь, в Вин10 драйвера работают только если есть цифровая подпись. Но это не точно.
  • Можно ли Встроить QT dialog в MFC CDialog?

    maaGames
    @maaGames Автор вопроса
    В общем, всё оказалось элементарно. Из QWidget можно получить HWND, а его уже без проблем вставить в диалог (заместо невидимого групбокса, например). При изменении размера диалога делаю resize виджету и всё красивенько. Главное виджету задать стиль "без рамки" и выглядит как родной, по соседству с MFC контролами даже. И в DestroyWindow не забывать QWidget->close делать.
    Надо ещё тестировать, но вроде всё работает (пока проверил только сплитер, кнопочки, чекбоксы и LCD).
  • Как запустить android-эмулятор на машине с AMD Ryzen 3900X?

    maaGames
    @maaGames
    Но ведь это будет чисто софтверно, без аппаратной эмуляции, т.е. на порядок медленнее.
  • Как запустить android-эмулятор на машине с AMD Ryzen 3900X?

    maaGames
    @maaGames
    Недавно взял 3700X, пока не разбирался с эмуляцией. В БИОС включен SVM, но эмулятор Android Studio тоже пишет, что SVM нет.
    Может связано с тем, что не переустанавливл Винду, а просто диск переткнул в новый комп и что-то где-то сдрайверами стало больно.
  • QT offscreen dialog?

    maaGames
    @maaGames Автор вопроса
    Александр Ананьев, Спасибо, попробую разобраться.
  • QT offscreen dialog?

    maaGames
    @maaGames Автор вопроса
    Александр Ананьев, Звучит интересно. В примерах есть создание обёрток для отдельных контролов, может и с целым диалогом получится по аналогии сделать.
  • QT offscreen dialog?

    maaGames
    @maaGames Автор вопроса
    towin, Мне нужно не только отрендерить вншний вид диалога, но чтобы и обработчик сигналов работал. Т.е. чтобы был полнофункциональный диалог, но без видимого окна.
    Вообще, мне нужно встроить QT диалог внутрь MFC приложения. Чтобы диалог был внутри CDockablePane. С модальными-немодальными диалогами проблем-то нет, а вот чтобы встроить в интерфейс уже проблемы есть. Как я понял, нет простого способа встроить QT диалог внутрь MFC, а вот если сделать через картинку, то можно это будет обойти. ЗАодно и в игрушки и хоть в куда добавлять интерактивные интерфейсы.
    * избавиться от MFC нельзя, т.к. приложение написано на MFC, а я просто делаю плагин. Через "картинку" можно будет сделать интерфейс переносимым между приложениями, независимо от API - картинку в диалоге в любой системе можно нарисовать.
  • QT offscreen dialog?

    maaGames
    @maaGames Автор вопроса
    Я только начал изучать QT, пока плохо понимаю его :)
    widget - объект диалога? При создании диалогового окна нужно какой-то стиль задавть, чтобы окно было невидимым, но обрабатывало события? Т.е. если я не вызову метод show, то диалог в принципе не создастся, а если вызову, то диалог будет видимым.
  • ПК с оперативной памятью в двух канале выдает BSOD, как это возможно?

    maaGames
    @maaGames
    Виталий Малий, Судя по WIN8_DRIVER_FAULT нужно попробовать загрузиться в безопасном режиме, снести все драйвера (в первую очередь на видяху и звук) и поставить их заново после перезагрузки. И БИОС прошить свежий, если есть.
  • Как передавать много сообщений через Socket?

    maaGames
    @maaGames Автор вопроса
    tsarevfs, Добавил чтение всех объектов внутри poll, всё сразу заработало, как планиорвалось.
    Только вместо rdbuf->in_avail нужно использовать sis.eof(). in_avail, похоже, буферизирует число байт сразу после poll и не уменьшает значение (или как-то не очевидно там значение меняется, в общем падает чтение). А c eof отработало всё нормально.
  • Как передавать много сообщений через Socket?

    maaGames
    @maaGames Автор вопроса
    Евгений Шатунов, Меня ввело в заблуждение использование класса SocketInput/OutputStream. Я ожидал, что закрытие outputStream гарантированно прервёт данные в сокете и poll вернёт только их этого объекта массив байт. Т.е. ожидал от обёртки намного больше, чем она реально предоставляет.
    Буду после poll вычитывать все байты, которые там есть, даже если больше одного объекта прилетело (с блокировкой сокета на чтение, если не весь массив байт уже загружен).
  • Как передавать много сообщений через Socket?

    maaGames
    @maaGames Автор вопроса
    tsarevfs, Да, нет никакого смысла создавать каждый раз inputstream, я ожидал другого поведения, поэтмоу создавал. Раз всё-равно нужно объём переданных данных самому контролировать, то можно одновременно с сокетом его создать один раз и всё.
  • Как передавать много сообщений через Socket?

    maaGames
    @maaGames Автор вопроса
    tsarevfs, Под словом "сообщение" я подразумевал бинарные данные. Т.е. именно текста там нет в принципе. В логах будет только время, человеко-дружелюбный идентификатор и размер блока байт...
    Спасибо за подскзки. Надеюсь, я правильно понял причину проблемы и смогу починить.
  • Как передавать много сообщений через Socket?

    maaGames
    @maaGames Автор вопроса
    Евгений Шатунов, Если документация не врёт, то TCP. UDP испльзовать мне рановато и задержки не принципиальны.
    Потом планирую маленькие сообщения сделать в ICMP, вроде как раз для малюток в несколько байт они и предназначены. Но пока нужно заставить всё корректно работать в TCP, оптимизация подождёт.
  • Как передавать много сообщений через Socket?

    maaGames
    @maaGames Автор вопроса
    tsarevfs, Думаю, у меня проблема именно когда в poll больше 1 объекта успевает прилететь. Ведь если после срабатывания poll я считаю из сокета не все данные, то при следующем срабатывании poll те недочитанные данные потеряются? По поведению похоже, что именно это происходит. Попробую что-то типа такого (сейчас у меня есть только while-poll, без внутреннего do-while):
    while(true)
    {
      if( poll )
      {
           do
            {
                SocketInputStream sis(...);
                int size;
                sis.read( &size, 4 );
    
                byte * data = byte[size];
                sis.read( data, .size );
            }
            while( !sis.eof() );
      }
    }
  • Как передавать много сообщений через Socket?

    maaGames
    @maaGames Автор вопроса
    Евгений Шатунов, Да, у меня была мысль, что между разными write "кто-то как-то" вклинивается, не смотря на мьютекс. Поэтому я подправил обёртку класса, чтобы не сразу в сокет писалось, а чтобы все данные собирались в strstream, а потом эту строку одним write записываю в сокет. Причём, в первых 4 байтах строки записан её размер в байтах (перед записью в сокет в начало строки её размер записываю). Но это не помогло. Как мне уже подсказали, в poll может быть накоплено больше одного сообщения и они могут быть та мне полностью. Видимо с этим и связаны мои проблемы, что часть данных теряется. Надо перепроектировать чтение.
  • Как передавать много сообщений через Socket?

    maaGames
    @maaGames Автор вопроса
    tsarevfs, Видимо, если в poll пришло больше 1 сообщения, то все данные, которые не относились к первому сообщению - теряются. И при последующем срабатывании poll я уже пытаюсь работать с неправильными данными, потому что старый "хвост" потерялся.

    Видимо, после poll и чтения первого объекта нужно не заново запускать poll, а проверять, достигнут ли eof в потоке? Или как правильно проверить, что данных в сокете не осталось?
  • Как передавать много сообщений через Socket?

    maaGames
    @maaGames Автор вопроса
    tsarevfs, Самостоятельно не поддерживаю. Разве классы-обёртки SocketInputStream не реализуют как раз функционал "поддержки"? В тестовом примере я передавал std::vector на сотню мегабайт, он "самостоятельно" разбился на куски разных размеров и на сервере из этих кусков собрался обратно. Т.е. я в кленте написал: отправить 4 байта с размером массива, отправить N байт самого массива. А на сервере после срабатывания poll написал: считать 4 байта размера, vector.resize(N), считать N байт в массив. Т.е. ни циклических буферов, ни чего подобного самостоятельно не реализовывал, все фрагменты подтянул SocketInputStream.