Jump to content

    

Сергей Борщ

Модераторы
  • Content Count

    9332
  • Joined

Everything posted by Сергей Борщ


  1. Нет, при любом раскладе не обязан. Объявленная с квалификатором const переменная a может оказаться в доступной только для чтения памяти (или флеш или защищенная MMU область памяти) и выполнение присваивания по этому адресу вызовет нештатную ситуацию. А раз вы решились задать этот вопрос - вы, наверняка, и сами это понимаете. А явное приведение типа - это решение программиста: либо он хорошо знает, что делает, либо стреляет себе в ногу.
  2. Все равно выглядит вредным советом. Ибо далее предлагается А если прочитать документацию, то
  3. Отвлечение от темы: читал где-то версию, что в исправном и правильно смазанном револьвере барабан под весом патрона всегда поворачивается отсеком с единственным патроном вниз. Выглядит правдоподобно.
  4. Правописание -тся и -ться определяется отдельным и совсем несложным правилом. Смешного тут мало. Как написали на одном форуме, "орфография в интернете — это твоя «одежка» из знаменитой русской пословицы, и чтобы сразу же не послали, надо сразу писать хорошо или хотя бы стараться писать хорошо."
  5. разведеться Что сделаетЬ?
  6. Интересно, чем руководствуются авторы таких советов. "Сделайте свою маленькую быструю программу большой и медленной". Компоновщик сам в состоянии использовать длинные вызовы только там, где это необходимо. Зачем мешать ему делать свою работу?
  7. 255. У меня было, когда партию синезубых устройств тестировал. 2012 год примерно.
  8. Спасибо, полезная информация. Не могли бы вы показать дескрипторы от такого устройства?
  9. Да, до этих штучек мастер этот самый Джон Ланкастер. Но жестоко просчитался пресловутый мистер Пек. Обезврежен он и даже он пострижен и посажен, а в гостинице "Советской" поселился мирный грек.
  10. Ну, композитное устройство из нескольких VCP - это по-любому нештатные драйверы. Меня не интересует эмулятор какой-то там PL. Меня интересует usb-cdc. Думаю, автора темы тоже. Никакого желания ковыряться в ваших исходниках. Давайте ссылку на рабочий "из коробки" пример cdc-acm.
  11. А всю жизнь использовал один номер конечной точки, все работает. Все примеры из интернета используют один номер конечной точки. "Что мы делаем неправильно"?
  12. Я не знаю, что вы там изучали, но если убрать из дескриптора конфигурации дескриптор конечной точки - Linux Mint не определяет такое устройство как cdc-acm с ошибкой -22. Все заканчивается на команде SET_CONFIGURATION. Если же в дескрипторе конечная точка указывается, то система посылает для нее Token packet. И Linux и винда. И им глубоко все равно - используется эта конечная точка дальше в драйверах или нет. Я не помню уже, как именно оно не работало , если в дескрипторе указать несуществующую конечную точку, но оно не работало 100% - это я проверял сам лично. Поэтому контрольный вопрос вам в голову: вы делали в железе устройство без interrupt конечной точки или это ваши теоретические рассуждения? Варианты с убиранием декскриптора конечной точки и с указанием несуществующей конечной точки я проверял лично - они не работают. Даже под линухом. Я ожидаю от вас ссылки на ваш гитхаб, где лежат исходники работающего хотя бы под линухом примера без interrupt конечной точки, в противном случае вы просто балабол и общаться с вами смысла нет.
  13. Проверил сам - не взлетело. Даже под линухом. Прочитал документацию внимательнее: Наши виртуальные последовательные порты используют Abstract Control Model (CDC-ACM) и попадают в последнюю категорию. Микрософт не виноват Вот еще безумная мысль: Интересно, а можно ли использовать одну и ту же interrupt контрольную точку в нескольких виртуальных портах? Но это я проверить не могу - нет у меня исходника с двумя портами.
  14. Которое происходит через конечную точку 0. Ну, интересуются в основном нахождением готовых решений. Созданием решений занимается меньшинство. Хотелось бы, чтобы ответ был не в стиле "готового решения в интернете не нашел", а "я проверял, это не работает". Или "вот тут человек пишет, что проверял и у него не получилось". Читаем описание (Universal Serial Bus Class Definitions for Communications Devices. Revision 1.2 (Errata 1) November 3, 2010): Прошу обратить внимание на слово "optionally". Если микрософт "забил" на слово "optionally" - жаль. Но вы ведь можете легко проверить - уберите из дескриптора конфигурации дескриптор управляющей конечной точки.
  15. На месте автора темы я бы поостерегся доверять такую работу человеку, не сумевшему освоить родной язык в средней школе.
  16. Может я чего-нибудь не понял, но вы описали TRecursiveMutex.
  17. Нет. В одном случае был указатель на массив, во втором случае массив внесли в структуру. Оба варианта рабочие с точки зрения кода. Прибивать MAC гвоздями внутри кода - так это не единственное "удачное" место в кубе. Использовали другое имя макроса для адреса PHY. Сочувствую. Вы сами выбрали использовать куб.
  18. Зажать в тиски через прокладку из кожи, нагреть до температуры разрушения фиксатора резьбы (что-то около 260 градусов) феном и через прокладку из кожи хватать крышку газовым ключом. Велика вероятность не оставить следов.
  19. Я по видео понял, что после тестирования система уходит в циклическую перезагрузку. Жаль, что видео снято не от момента включения - возможно, сообщение "booting system" было и перед тестировнием флешки, т.е. "booting sysem" - тестирование - "booting sysem" -"booting sysem"... Тогда можно предположить высохшие емкости в преобразователе питания - после их прогрева емкость падает, пульсации возрастают, устройство уходит на перезагрузку и уже не успевает дойти даже до тестирования. Для начала можно силами заказчика вскрыть прибор и визуально оценить наличие вздутых электролитов.
  20. Я же показал, что можно. И по вашей ссылке этот вариант был упомянут.
  21. Этот new не выделяет память. Фактически это вызов конструктора.
  22. Есть вариант: auto ptr = malloc(sizeof(T)); if(ptr == nullptr) { return errorcode; } auto t_ptr = new(ptr) T(параметры конструктора); ...... t_ptr->~T(); free(ptr); Подсказка: placemet new()