Задать вопрос
  • Как исправить ошибку буфера с UART?

    @res2001
    Павел Соколов,
    "ожидание блока байтов с прочтением их всех"

    Вот с прочтением "их всех" у вас и проблема.
    Хотя бы обработайте возвращаемое значение ReadFile и возможный даже в этом случае ERROR_IO_PENDING.
    Хрен с ней с асинхронщиной, можете оставить как есть, но использование ReadFile надо поправить.
    В текущем виде ReadFile - это потенциальное место где возможны ваши проблемы.

    Таймауты странные. Почему 10 везде? Я бы высчитывал значение таймаута чтения для каждой операции чтения исходя из размера буфера и заполнял им только ReadTotalTimeoutConstant. Остальное в 0.

    Так же не плохо бы добавить обработку SetCommMask(EV_ERR) - помимо ошибок обмена, можно будет отлавливать переполнение буфера. Вы же теряете байты.
  • Как исправить ошибку буфера с UART?

    @res2001
    Павел Соколов,
    это обеспечивает асинхронные EV_RXCHAR и EV_TXCHAR

    У вас и работа с EV_RXCHAR по сути синхронная - установили флаг - дождались события. Можно просто использовать синхронную WaitCommEvent с тем же эффектом.
    Про EV_TXCHAR в примере кода вообще нет упоминания.

    Возможно вам для чего-то еще нужен асинхронный режим. Но из приведенных фрагментов кода это никак не следует.

    Я не просто так указал verilog здесь, потому что я не уверен 100% что здесь нет ее вины.

    Тем более нет смысла усложнять. Делайте максимально просто, чтоб сократить возможное количество ошибок на этой стороне.
  • Как исправить ошибку буфера с UART?

    @res2001
    Павел Соколов, На счет 1 байта - чтоб операция ReadFile не завершалась на чтении каждого байта можно предварительно установить таймауты:
    https://learn.microsoft.com/en-us/windows/win32/ap...
    https://learn.microsoft.com/en-us/windows/win32/ap...

    Наличие таймаута не гарантирует, что прочитается заданное количество байт за это время.
  • Как исправить ошибку буфера с UART?

    @res2001
    Павел Соколов,
    синхронно относительно кого?

    Синхронно относительно вызова ReadFile, т.е. если ReadFile вернул управление, то вы сейчас предполагаете, что операция чтения завершена успешно. Но это не гарантируется ОС.
    Цикл проблему не решает

    А у вас сейчас нет цикла совсем? И вы не ловите на каждый байт событие EV_RXCHAR? И при этом совершаете больше телодвижений, чем с одним ReadFile. И я нигде не говорил про 1 байт - сколько вычитает, столько и вернет. А на счет проблемы - см. предыдущий абзац
  • Как вернуть двумерный массив?

    @res2001
    niten_d0raku, Да, первый вариант не верен, согласен.
    Второй - вполне рабочий.

    Вместо варианта со структурой, предложенного pvvv, можно использовать std::array. Но т.к. std::array - одномерный массив, то придется делать его вложенным. Зато кастовать не надо. А на приемной стороне использовать auto, чтоб не морочиться с написанием сложносочиненного типа.
    По сути это тот же вариант со структурой, только структура стандартная.

    Если подойти по серьезному, то лучше собственную структуру нарастить всеми нужными методами для доступа к элементам по индексу и т.п. Тогда структура сойдет за полноценный кастомный класс массива.
  • Ошибка в bat скрипте который изменяет протокол ip версии 4 (tcp/IPv4), как исправить?

    @res2001
    Проблема в получении локального ip адреса (он остается пустым) почему -то, в чем может быть проблема ?

    1. в for /f нужен пробел между замыкающей двойной кавычкой и одинарной.
    2. Для отладки фильтра - выдерните выражения фильтра из for /f и выполните его просто в командной строке, естественно с заменой переменных и т.п. Добейтесь, чтоб в командной строке у вас был правильный результат. Полученное выражение потом используйте в батнике.
    Также пишет Недопустимый параметр mask (192.168.100.123).

    3. Это видимо уже при вызове netsh. Тут точно так же выполните команды вручную из командной строки, добейтесь правильного выполнения. Затем используйте полученную команду в батнике.
    netsh имеет собственную командную строку, просто запустите netsh без аргументов, внутри можно выполнять все те команды, которые передаете в параметрах. Доступна подробная справка по командам и параметрам. Рекомендую.
    Точно не уверен, но возможно для изменения некоторых параметров через netsh потребуется повышение привилегий.
  • Как написать динамическую библиотеку на C++ при помощи CMake в среде QTCreator, которую потом можно будет импортировать в проекты на Python?

    @res2001
    Александр Ананьев, В вопросе от Qt фигурирует только qtcreator, его можно отлично использовать в проектах и без самого Qt, к тому же с cmake он прекрасно управляется.
    Mar_4, Тема довольно обширная, вряд ли кто-то где-то вам расскажет все пошагово. Придется вникать и разбираться.
    Вариантов реализации может быть несколько с использованием разных технологий, доступных в питоне.
    Если реально много сложных структур надо прокидывать в питон, то, возможно, лучше использовать самый сложный (и наиболее универсальный) вариант: https://docs.python.org/3/extending/extending.html
    Возможно получится обойтись грамотным использованием numpy и т.п. модулей для питона, ускоряющих вычисления. Попробуйте это для начала. Хотя бы для того, что бы потом было с чем сравнивать производительность, возможно овчинка не будет стоить выделки.
  • Как получить хендл без OpenProcess?

    @res2001
    На сколько я знаю хендл указывает на некую структуру в ядре привязанную к текущему процессу. Получить циферки хэндла из другого процесса может как-то и можно, но т.к. в твоем процессе в ядре этой структуры не будет, то и использовать ты его не сможешь.

    Кроме получения хэндла через CreateProcess, OpenProcess и GetCurrentProcess хэндлы могут наследоваться дочерними процессами, но для этого, надо включить наследование хэндла внутри оригинального процесса и запустить из него дочерний процесс.
  • Почему ReadProcessMemory не может прочитать память и возвращает 299?

    @res2001
    DanilkaC, https://learn.microsoft.com/ru-ru/windows/win32/de...
    Судя по тому, что 299 ошибка -это ERROR_PARTIAL_COPY, то, возможно, выход за пределы выделенной памяти в процессе.
    module может у вас и корректен, но (module + 0x17361E8) может стать не корректным. Или размер читаемых данных не корректен.
  • Литература для последовательного изучения программирования?

    @res2001
    fenrir,
    Последовательный единый базис, подобно университетским программам.

    Давно не был в университете, но вроде бы чаще там учат алгоритмы по Кормену как раз. По крайней мере Кормена студенты знают, а Кнута, обычно, нет. Хотя у меня не репрезентативная выборка :-)
    "Грокаем ..." - да на пару вечеров, я и писал, что это "легкое". Для понимания азов алогритмов и некоторых примеров достаточно. В дальнейшем, если понадобиться, можно будет углублять Корменом или Кнутом или чем-то другим.
    что мешает решать примеры из книги на любом ЯП?

    Ничего. Но если ты ноль, то ты не знаешь ни одного ЯПа. А Кнут пишет свои примеры на некотором абстрактном ЯПе, который сам придумал для книги. Вот и решай примеры как хочешь :-)
  • Литература для последовательного изучения программирования?

    @res2001
    siemvv,
    ЯП - это разве не форма идей, закладываемых прикладным программированием?

    Прикладной программист - это пользователь ЯП. Что он там может заложить в язык? Язык уже сделали без него. Прикладной программист может только уже использовать готовые идеи, которые заложены в сам ЯП, для решения собственных задач

    Мне хочется в перспективе выйти за пределы типовых задач.

    Каждый раз, когда захочется этого, то придется напрягаться и изучать что-то новое. А если не придется напрягаться - значит эта задача уже стала для вас типовой :)

    Я не думаю, что изучение именно "языка" даст глубокое понимание, как и что работает.

    Это зависит от языка. Питон - ну скорее всего кроме знания самого ЯП даст некоторое ограниченное представление об ООП. С++ - даст практически полное представление о возможностях ООП, некоторое понимании того как работает процессор и память. Так же если захотите погрузиться в сетевое программирование или параллельное программирование, то С++ предоставит эту возможность, питон то же, но с ограничениями и т.п.

    В целом, я за изучение алгоритмов и даже настаиваю, что это программисту необходимо. Но
    1. Кнут, на мой взгляд, не подходящий вариант для погружения в эту тему с нуля. Но если хотите Кнута и не боитесь математики - вперед. Почему бы и нет.
    2. Алгоритмами тема программирования далеко не исчерпывается.
  • Литература для последовательного изучения программирования?

    @res2001
    Кнут не про программирование вообще и не про ЯПы, а про алгоритмы. Там много интересного. Но 4 внушительных тома напичканных математикой... на полке выглядят красиво :)
    По алгоритмам есть много других книг с разной степенью требовательности к читателю.
    Если совсем ноль, то можно взять что-то легкое, типа "Грокаем алгоритмы", потом, если понадобиться, добавить в коллекцию Кормена - то же весьма внушительный том, но он 1 и заточен больше на программистов, а не математиков, как Кнут.

    Алгоритмы вещь нужная для настраивания мозга на правильный лад и в жизни, порой, бывают полезны, но далеко не все и не каждому. Но это лишь часть от того что требуется. На универсальный курс по программированию не тянет.
  • Литература для последовательного изучения программирования?

    @res2001
    Вряд ли такое есть в природе.
    Переключаться между языками в рамках одной парадигмы программирования можно достаточно легко, т.к. принципы в ЯПах заложены одни и те же или похожие. Но переключиться на язык из другой парадигмы будет сложно.
    Например переключиться C++ -> python - вообще не проблема - через неделю плотного погружения будете уже "шпрехать" на питоне вполне сносно. Обратно сложнее и дольше, т.к. С++ сложнее, но в целом то же не большая проблема - сильно ломать голову не придется, просто будет много специфических нюансов.
    А вот python/С++ -> SQL или какой-нибудь Haskel - уже придется напрягаться и фактически учиться программировать заново в рамках новой парадигмы.

    Для облегчения переключения в рамках одной парадигмы есть смысл учить сразу сложный язык, например С++ для императивной парадигмы - большинство других ЯП из этой парадигмы будут проще.
    Но учить сложный язык с нуля - это долго и может быть менее продуктивно, чем, допустим, начать с питона, а затем когда уже освоите немного питон и алгоритмизацию переключиться на С++.

    Мне важен именно "курс", подобно университетским программам.

    Что дверь в универ для вас закрыта уже? Кстати, можно погуглить и университетские программы. Но университет то же не даст гарантии "без проблем перемещаться между различными языками и технологиями".
  • Какие книги по linux лучше для новичка?

    @res2001
    theeighthofseptember,
    С конечной целью я сам не определился

    Стоит начать с изучения с точки зрения пользователя ОС.
    В процессе будут возникать вопросы по настройке разных частей под свои хотелки, будете копать в этих направлениях.
    Делайте акцент на инструментах командной строки, т.к. в GUI далеко не все можно сделать.
    Научитесь писать и понимать bash скрипты.
    Найдите книжку по администрированию. Но в книгах такого рода, обычно пытаются охватить большое количество тем, из-за чего они бывают достаточно поверхностные. Но для первоначального вкатывания в тему - пойдет. Для углубления знаний или поиска ответов на не стандартные вопросы придется искать дополнительные источники информации.
    В линукс есть встроенная справочная система - man, там много всего полезного можно найти и как пользователю/администратору и как программисту.
  • Камера видеонаблюденияч постоянно шлет трафик в openvpn без запроса. как можно исправить?

    @res2001
    Слава Кривошейков,
    Нельзя ли в конфиге опен впн прописать...

    Это не дело ВПН и это даже не дело фаервола отслеживать клиентские запросы к камере.
    Хотя на приличном фаерволе с помощью костылей что-то и можно придумать, но это именно что костыли. Можно ли это что-то придумать с кинетиком - отдельный вопрос.
    Правильный вариант - настроить правильно камеру. Изучайте мануал от камеры в этом направлении.
  • Возможна ли стажировка в IT для подростка?

    @res2001
    Однозначно стоит учиться. В ВУЗе. Ждать 18 не надо - все будет в свое время.
    Начинайте делать свои проекты и складывайте удачные на гитхабе. Но на этой стадии важны не сами проекты и не то, что вы их сможете показывать работодателю, а то что вы научитесь самостоятельно обучаться.
    Стажироваться или подрабатывать можете на каникулах в свободное от учебы время.
  • Какие книги по linux лучше для новичка?

    @res2001
    Ядро 2.6 - нормально.
    Суть в том, что начиная с этой версии в ядре произошли серьезные изменения, из-за которых многое потеряло совместимость с версией 2.4.
    После 2.6 таких кардинальных изменений не было, все развитие происходило плавно и совместимость с 2.6 никуда не делась. Так что, практически все, что написано для 2.6 вполне актуально и сейчас. Конечно появились какие-то новые фишки, но старый API - это база, он жив и вполне актуален.
    "Исчерпывающее руководство" - хорошая книжка, автор пишет маны для линукса.

    Кроме того, после 2.6.39 изменился принцип нумерации версий. Сейчас мажорные версии меняются гораздо чаще. Версия 2 была актуальной 15 лет. Из них ветка 2.6 была актуальной почти 8 лет. А сейчас посмотрите, на сколько чаще меняются мажорные версии.
    https://en.wikipedia.org/wiki/Linux_kernel_version...

    Применительно к вопросу, не понятно, с какой целью вам надо изучать линукс. Если вы хотите под эту ОС программировать - это одно, "Исчерпывающее руководство" подойдет. Если надо как пользователю знать ОС или как администратору - нужны другие книги.
  • Как исправить код и сделать так что бы он выдавал рандомные числа?

    @res2001
    Montix, Поместите расчет числа и его вывод в цикл, раз 10-20 выведите, числа должны быть разные и разброс чисел должен быть нормальным.
    У вас же только 1 вызов rand на каждый запуск программы и генератор инициализируется текущим временем в секундах. Если запускать программу достаточно быстро (что бы секунда не прошла), вы вообще можете получать одинаковые рандомные числа от запуска к запуску.

    rand() возвращает число от 0 до RAND_MAX. Часто RAND_MAX это 65535, но не обязательно - стандартом не оговаривается. Можете посмотреть какое оно в вашей конкретной версии стандартной библиотеки.
  • А можно как то запереть хром в каком то куске ОЗУ?

    @res2001
    RigidStyle,
    вот по этой логике и получается

    Не получается. В своем виртуальном адресном пространстве у премьера нет никаких проблем выделить 20Гб непрерывного участка памяти. Но как эта виртуальная память будет распределена по физическим страницам памяти ведомо только ядру ОС. И даже если вы загоните хром в виртуальную машину, то скорее всего это не решит проблему в корне, хотя, возможно, несколько ее сгладит.
    Можно улучшить положение, только уменьшением количества вкладок.
    Для firefox есть такой плагин sidebery - он позволяет гибко организовывать ваши вкладки, разделяя их на контейнеры и выстраивая иерархию и т.п.. Одна из возможностей плагина - выгружать из памяти не открытые вкладки в неактивных контейнерах. Это реально разгружает процессор. Для хрома то же есть этот плагин. Попробуйте.
  • Дублирование учетки администратора, в чем причина?

    @res2001
    Pavel Valeo, Когда такое происходит попробуйте залогиниться другим "чистым" админом и посмотреть, какие процессы работают под проблемным adminом, когда под ним нет работающего пользователя.
    Если что-то работающее есть, то можно будет отключать эти процессы из загрузки (службы, задания, автозагрузка), перезагружаться, логиниться adminом и смотреть какой профиль будет использоваться.