Просмотр сообщений
Страниц: [1] 2 3 ... 13
1  Установка и настройка / Поддержка аппаратного обеспечения в QNX / Re: USB мышь на материнке ASUS P5E : Июля 04, 2018, 08:59:59 pm
Ого, сколько идей. Smiley Спасибо за подсказки! Smiley
2  Установка и настройка / Поддержка аппаратного обеспечения в QNX / Re: USB мышь на материнке ASUS P5E : Июля 02, 2018, 03:06:47 pm
Cheesy  Cheesy  Cheesy
Надо попробовать и так. Smiley
Куда бы это вставить в QNX 6.3 для автозагрузки...  Undecided
3  Установка и настройка / Поддержка аппаратного обеспечения в QNX / Re: USB мышь на материнке ASUS P5E : Июня 26, 2018, 09:13:15 pm
Столкнулся с такой же увлекательной проблемой. На некоторых компьютерах QNX, запущенная с одного и того же винчестера видит USB-мыши, а на некоторых нет. Воспользовался этой вот темой и у меня получилось вот что:

Цитировать
Для включение мышки, подключённой по USB:
io-hid & mount -Tio-hid devh-usb.so
Получится ошибка (скорее всего): типа что-то там unable с usb.
Потом повторять mount -Tio-hid devh-usb.so, пока не запустится без ошибки, предварительно выбросив в консоль кучку мусора (интересно, откуда она его взяла?).
Далее выполнить devi-hid mouse kbd

Интересно, откуда эта ошибка берётся?
4  Разработка / Программирование под QNX / Re: Работа через USB с FlirOne Gen 2 : Июня 03, 2018, 03:49:08 pm
Ну, на raspberry pi это делается очень легко - там обычная система с линуксом. А вот на stm32 есть маленькая проблема. Дело в том, что CubeMX позволяет активировать аппаратный модуль работы с SD-картами и поддержку файловой системы FAT32 (и только в комплекте с этим модулем). Но вот подключение SD-карты возможно только по протоколу обмена SDIO. А у меня на китайской плате распайка сделана для ставшего стандартом для самодельщиков падключению по SPI со всеми подтяжками к питанию и отсутствием "ненужных" линий. То есть, потребуется отдельно распаивать SD-карту. Подключить по SPI, на самом деле, тоже не сложно, но тогда я лишусь поддержки FAT32 "из коробки" от CubeMX. Впрочем, когда-то я делал свой модуль работы с FAT32, но там нет операций записи - с ними я решил не возиться на тот момент и по слухам (я не видел такого - думаю, причина в банальной ошибке чтения карты по какой-то причине), он иногда подглючивает. Есть, правда,уже готовый модуль работы с FAT32 для практически любого контроллера, работающий аж всего на 512 байтах ОЗУ, но с его подключением надо разбираться. Но ничего невозможного нет (кроме видеопотока - stm32 слишком медленный для кодирования видео). Smiley
5  Разработка / Программирование под QNX / Re: Работа через USB с FlirOne Gen 2 : Июня 03, 2018, 11:23:02 am
Видео работы отдельно модуля с Raspberry Pi:
https://www.youtube.com/watch?v=IWScr3B4RJ0

И собранного устройства с stm32:
https://www.youtube.com/watch?v=BMG0rLr8tC8

6  Разработка / Программирование под QNX 4.x / Re: Проблема с выделением памяти. : Мая 29, 2018, 10:23:00 am
Вот поэтому и интересно было бы глянуть результат работы IDA на этой функции.
7  Разработка / Программирование под QNX 4.x / Re: Проблема с выделением памяти. : Мая 28, 2018, 12:49:26 pm
Но это вы свою программу дизассемблировали. Но посмотреть-то надо как раз код функции getvideoconfig. Потому как она однозначно что-то портит.
8  Разработка / Программирование под QNX 4.x / Re: Проблема с выделением памяти. : Мая 28, 2018, 10:02:36 am
Цитировать
Функция только заполняет структуру, адрес которой передается на вход, и вроде бы не формирует ошибок, она к сожалению не документирована в QNX, инфу по ней нашел из сторонних источников.

Но эта функция откуда-то берёт данные. А что IDA показал?
9  Установка и настройка / Поддержка аппаратного обеспечения в QNX / Re: Отключение usb : Мая 26, 2018, 09:35:55 pm
Цитировать
А как быть с "безопасным извлечением"?

Вот, кстати, никогда в QNX его не делал. Судя по скорости работы с флэшкой, драйвер QNX вообще ничего не кэширует и пишет напрямую. Smiley И всё бы ничего, но...
Месяц назад поставил копирование данных с одного из стендов. Прихожу - ошибка записи. Странно. Флэшка не отображается. Подключаю к Windows. Видит диск, но... "Вставьте диск". Форматировать отказывается - диска-то нет. Короче, флэшка убилась. Контроллер виден, а диска внутри нет. Ладно. Флэшке 7 лет, может, она просто сдохла. Купил новую.
Вчера на этом же стенде такая же фигня. Записал файлы, а в Windows показывается, что флэшка пустая. Форматнул. Записал в Windows другие файлы. И флэшка через минуту отвалилась. Она тоже стала "вставьте диск". Но флэшка-то новая. Это подозрительно. Полез искать, что бы это всё значило. Нашёл программу ALCOR_MP. Вот эта-та программа мне флэшку и восстановила.
И всё же, мне непонятно, каким образом QNX 6.3 SP3 только на конкретной машине стала делать с флэшкой такое, что флэшка становится кирпичом? Это что же надо сделать, чтобы такое сотворить?  Huh?

10  Общее / Ошибки в QNX 6 / Re: Нужна помощь. Ошибка QNX Momentix при компиляции : Мая 26, 2018, 07:26:05 pm
Цитировать
О чем и речь! И не просто сложным, а через чур сложным - с построением иерархии наследования и обилием кастования.

Да нет, просто каждый класс наделяется списком того, чем он владеет. А дальше обычная диспетчеризация по маршруту графа с опросом "это твоё?" и остановкой, когда найден владелец. На это можно пойти в GUI, так как в 99.9999999999% случаев скорость реакции это не снизит никак. В конце концов, как же писалось всё то ПО до С++ 11?

Цитировать
Берите связку boost::function и boost::bind пишите свои функторы и без ++11 уже можете передать в куда угодно свой кастомный объект с захватом вместо привычного всеми калбек методов.

С boost я не знаком вовсе (и насколько я слышал, там что-то очень монструозное). Smiley Но я о чём речь-то веду? Привязка функции обратного вызова в GUI библиотеках является низким уровнем, до которого пользователь, обычно, не допускается. В той же MFC всё это скрыто. Я не могу переопределить в MFC функцию окна оставаясь в MFC - мне для этого придётся регистрировать свой класс окна со всеми вытекающими.

Цитировать
А вот с лямбдой дело стоит иначе

Так мы о лямбда-функциях и говорим. У вас в примере они и есть.
11  Разработка / Программирование под QNX / Re: Работа через USB с FlirOne Gen 2 : Мая 26, 2018, 05:43:09 pm
Итак, я-таки собрал прибор ночного видения на базе тепловизионного модуля flir lepton3 с разрешением 160x120. Выкинув нафиг все эти танцы с бубном вокруг USB и Flir One Gen 2.
Для сборки понадобится плата с контроллером stm32f407vgt6 - заказывается у китайцев, дисплей 320x240 с контроллером hx8347d - заказывается у них же (китаец, правда, присылает дисплеи одинаковые на вид, но с разными контроллерами), плата подключения lepton3 - также есть у китайцев, ну и сам датчик lepton3. Вот датчик отдельно купить не очень просто. Я купил неисправный тепловизор Flir One Gen 2(именно поколения 2!) у немца и вынул оттуда этот датчик. Желающие могут не покупать у китайцев переходную плату и сделать свою, благо в неисправном тепловизоре присутствует панелька для датчика. Правда, шаг контактов там столь мал, что  для него впору заказывать промышленную печатную плату. Утюгом это повторить смогут разве что единицы. Хотя, можно припаяться прямо на контакты процессора штатной платы тепловизора, но это несколько не эстетично. Smiley

Подключение вот такое:

Контакты дисплея:
дисплей плата
D0 - PD14
D1 - PD15
D2 - PD0
D3 - PD1
D4 - PE7
D5 - PE8
D6 - PE9
D7 - PE10
CS - PD7 (FSMC_NE1)
RW - PD5 (FSMC_NWE)
RD - PD4 (FSMC_NOE)
RS - PD11 (FSMC_A16)
RESET - PE1

Контакты модуля Lepton3:
модуль плата
SCK - PA5
MISO - PA6
MOSI - GND
CS - GND
SCL - PB6
SDA - PB7

В программе для управления дисплеем используется аппаратный модуль FSMC (flexible static memory controller), благо он есть в этом контроллере. Единственный нюанс - инициализацию портов, используемых FSMC нужно делать ДО инициализации самого FSMC. Иначе он не работает. Smiley Ну и по I2C я с лептоном в этом устройстве ещё не общался - не было надобности; он всё равно начинает отвечать по SPI сразу же. Скорость SPI выставлена на 40 мб/с. На 20 мб/с микроконтроллер пропускает данные. Контроллер работает на максимальной частоте 168 МГц. Для написания программы использовался HAL и CubeMX в связке с постоянно зависающим Keil 5. Smiley

Программа: https://github.com/da-nie/STM32F407VGT6AndFlirLepton3

12  Общее / Ошибки в QNX 6 / Re: Нужна помощь. Ошибка QNX Momentix при компиляции : Мая 26, 2018, 05:09:51 pm
Цитировать
справа могут существовать не в единственно экземпляре (вообразите такой сложный продукт уровня Photoshop или IDE).

Так это всё решается механизмом диспетчеризации. Да, он будет сложным.

Цитировать
Дальше возможна ситуация, когда конкретную кнопку SomeButton нужно обработать в соответствии с состоянием контрола который ею владеет (непсредственого владельца).

Да я не спорю, что так гораздо удобнее. Проблема только в том, что непосредственное подключение функций обратного вызова, вообще говоря, достаточно низкоуровневая часть, которую обычно скрывают. В том же photon я могу назначить обработчик, но это будет далеко не лямбда. В результате возникает вопрос - что нужно взять (кроме Qt5), чтобы это  применять на практике. Вот на чём сейчас десктопные приложения пишут (ну, кроме net)? Я не знаю. Вот запускаю я DrWeb - на чём написан его интерфейс? Без понятия.

Цитировать
Почему скрытое?

Потому что на уровне языка происходит магия - GUI, который не знает ничего, вызывает некую функцию, которая магическим образом сопоставляет именно вот это вызов именно с тем классом, для которого он был зарегистрирован (при этом GUI при регистрации получил обычную функцию, а что её надо перенаправить с дополнительной информацией знает только компилятор).

Цитировать
А попробуйте вот так

Нет, так тоже не хочет. Ни основной, ни альтернативный. "1>main.cpp(46): error C2440: 'static_cast' : cannot convert from 'void' to 'InFunction_t'".
Но на самом деле, я даже не знаю, установлен у меня патч для Си++ 11 или нет. Я его сам точно не ставил. Я даже не помню, откуда у меня данный дистрибутив студии. Просто попробовал некоторые операторы и они заработали. Но они могут быть реализованы и до появления стандарта.

Цитировать
Что расположено до круглых скобочек - тип возвращаемого значения. Что внутри типы параметров

А, понятно. Smiley Это мне в голову не пришло.
Хотя непонятно, как такой шаблон может существовать. Ведь это же параметр. Разве можно сделать так: vector<int(int)>? Нельзя - непонятно, что это. А function<int(int)> создать можно. Каким образом так получается-то?
13  Общее / Ошибки в QNX 6 / Re: Нужна помощь. Ошибка QNX Momentix при компиляции : Мая 26, 2018, 07:21:39 am
Цитировать
В примере, он не может знать какому из объектов адресовать событие. Поэтому адресовать калбек к вашему объекту - некорректно.

Что-то я с таким не сталкивался. Если у меня есть форма, то я всегда знаю, от какого элемента и для кого будет это сообщение. Если же форма создаётся динамически, то элемент можно найти по его идентификатору/дескриптору.

Цитировать
На дворе 21 век.

Вот только на запрос "в чём написать графическое приложение для Windows для C++" ответ в поисковиках почему-то всё тот же MFC и Qt. Roll Eyes А запрос про применение замыканий приводит практически всегда к web-технологиям.

Цитировать
В Qt - есть свои механизмы сигнал-слот, построенный по схожему принципу.

А, ну до Qt5 я не дошёл. Smiley

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

Это несомненно. Smiley

Цитировать
Почему же? Можно. Через std::bind в связке std::function

Как я понимаю,  это такая же подмена истинной функции обратного вызова на нечто скрытое, создающееся компилятором с дополнительной информацией об объекте.
Кстати, по поводу functional.
То ли я что-то не понял, то ли VC2010 с functional работает странно. Вот я взял код из примера:
Код:
auto lambda_in=[](int x)
 {
  return([=](int y) {return(x+y);});
 };

 auto lambda_out=[](const function<int(int)>& f,int z)
 {
  return(f(z)*2);
 };
 auto answer=lambda_out(lambda_in(7),8);
Пример понятен (кроме const function<int(int)> - что за странная запись int(int)?).
Всё это студия компилирует вот так:

Цитировать
1>main.cpp(39): error C2664: 'int `anonymous-namespace'::<lambda2>::operator ()(const std::tr1::function<_Fty> &,int) const' : cannot convert parameter 1 from 'void' to 'const std::tr1::function<_Fty> &'
1>          with
1>          [
1>              _Fty=int (int)
1>          ]
1>          Expressions of type void cannot be converted to other types
1>main.cpp(39): fatal error C1903: unable to recover from previous error(s); stopping compilation
1>
1>Build FAILED.

Цитировать
Надеюсь хотя бы малость мне удалось раскрыть "тайну использования" замыканий =)

Да, спасибо за информацию. Smiley К сожалению, я не знаю абсолютно никого, кто бы знал для чего всё это нужно и как этим пользоваться на практике. Поиск же в инете приводит к вороху бесполезных статей (как и в случае с unit-тестами). Smiley
14  Разработка / Программирование под QNX 4.x / Re: Проблема с выделением памяти. : Мая 26, 2018, 06:58:28 am
Цитировать
Set privity level of load file

Интересный ключ. Smiley У вас не может _getvideoconfig завершаться каком-либо исключением/сигналом?

Цитировать
Хотя могу в IDA Pro посмотреть

Это лучший вариант. Smiley

Цитировать
Тут надо знать что происходит внутрях функции _getvideoconfig(), потому что если его убрать то все без проблем работает.

Но как бы функция-то стандартная и должна 100% всегда работать. Но тогда ещё вопрос: а не надо ли сперва инициализировать графическую библиотеку?
15  Разработка / Программирование под QNX 4.x / Re: Проблема с выделением памяти. : Мая 25, 2018, 10:10:13 pm
Тогда другие вопросы:

Цитировать
P.S. программу собирал c ключом -T1.

Что он означает?  Roll Eyes
Что у вас за система? Вы всё это в QNX4 делаете (я её никогда не видел, кроме демонстрационной дискеты, потому и не в курсе, похож ваш код на код для этой ОС или нет -а так, на MS-DOS похож)? Есть ли возможность посмотреть отладчиком, что за код создаётся и какие функции вызываются?
Страниц: [1] 2 3 ... 13