Форум Херсона. Форум Херсонской молодежи, флейм, фотографии Херсона, политика в Херсоне, сетевой форум, сети Херсона


Приветствуем на Форум Херсона. Форум Херсонской молодежи..

На данный момент Вы находитесь на форуме как Гость и имеете очень ограниченные возможности и права. Что бы писать или отвечать в темах, загружать картинки, файлы на форуме Вам нужно зарегистрироваться, что совершенно бесплатно. Регистрация очень быстрая, не откладывайте эту процедуру!

Если возникнут проблемы с регистрацией напишите нам.

Галерея форума Блоги пользователей Список банов
Вернуться   Форум Херсона. Форум Херсонской молодежи. > > >
Регистрация СправкаСтатистика Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны

Программирование Все вопросы по написанию программ

Тема: Загальні запитання Ответить в теме
Ваше имя пользователя: Для входа нажмите здесь
Проверка вопроса системы антиспама "NoSpam!"
Стодвацатьадмин дабавить двацать
Image Verification
Пожалуйста, введите шесть букв и/или цифр, которые изображены на картинке.

Заголовок:
  
Сообщение:
Иконки для сообщения
Вы можете выбрать иконку, характеризующую сообщение:
 

Дополнительные опции
Другое

Просмотр темы (Новые вначале)
23.01.2019 21:21
Debian Я если чесно не совсем понимаю задачу. Можно реальный пример что меняется и за чем надо следить?
23.01.2019 12:03
VoVaN
Цитата:
Сообщение от Debian Посмотреть сообщение
FPU включить не забудь :D
Мені тут швидкість не потрібна, воно повільно міняється

Цитата:
Сообщение от Debian Посмотреть сообщение
А вообще мне кажется мусье перемудрил
Є простіші ідеї як забезпечити гладке керування двома параметрами?
23.01.2019 00:50
Debian
Цитата:
Тепер похідні можна підставити у вищенаписані вирази, завантажити цього монстра у мікроконтролер і дивитися у який бік з нього піде дим
FPU включить не забудь :D
А вообще мне кажется мусье перемудрил
16.01.2019 09:33
VoVaN
Цитата:
Сообщение от VoVaN Посмотреть сообщение
Але це вже якось трохи пізніше О_о
Слава роботам та штучному інтелекту!
Вложение 284429
Вложение 284430
God bless Wolfram|Alpha.
Дуже зручний інструмент для усілякої наукової роботи, особливо коли у виші мав 4- з матану.
...
Тепер похідні можна підставити у вищенаписані вирази, завантажити цього монстра у мікроконтролер і дивитися у який бік з нього піде дим )))
Як не сильно піде - пізніше покажу що з цього вийшло.

15.01.2019 13:20
ustas Это не сам себе, а поведение адекватного человека который делится тем что может пригодиться и другим.
А вот флудить везде - это за гранью адекватности.
14.01.2019 17:09
Santa
Цитата:
Сообщение от VoVaN Посмотреть сообщение
Я чимось заднім підозрюю що ця задача так само тривіально вирішується із застосуванням диференційного числення, але ніасіліл.
Є ідеї як це зробити?
Наверное прикольно- сам себе себе писать???))
14.01.2019 13:54
VoVaN
Цитата:
Сообщение от VoVaN Посмотреть сообщение
Я чимось заднім підозрюю що ця задача так само тривіально вирішується із застосуванням диференційного числення, але ніасіліл.
Є ідеї як це зробити?
Начебто трохи розібрався.
Вложение 284401
Якщо перейти у полярну систему координат (α;R) то кут β залежить лише від довжини |R|. Інші кути розраховуються арифметично. І перше і друге легко диференціюється.
Далі, цільовий вектор виражається у вигляді параметричних лінійних функцій від загального коефіцієнту t[0;1] (можна уявити що це час - тоді вектор відповідає рівномірному руху матеріальної точки на площині).
Тепер залишається лише підставити параметричні функції у α(t) та R(t) після чого продиференціювати. Але це вже якось трохи пізніше О_о
Начебто виглядає не дуже складним (хоча і дуже громіздким).
Кінець-кінцем сподіваюся отримати першу похідну для обох кутів по dt.

ПС
це відчуття коли спаяти електроніку значно простіше ніж написати їй математичний апарат.
10.01.2019 10:58
VoVaN Математики, допоможіть!

Контекст:
Вложение 284320
Є деяка точка F у декартових координатах. Її з'єднують з початком координат відрізки A та B (вони рівні за довжиною, тобто A=B, та їх довжина відома). Треба визначити кути α та β.
Ця задача має тривіальне рішення через теорему Піфагора та трішечки тригонометрії: визначаємо довжину С, ділимо навпіл, визначаємо кут A0C і далі до кінця - нічого складного, шкільний рівень. У кінці ми маємо один кут через арксинус, а інший через суму курів трикутника.

Задача:
Те ж саме, але у векторах.
Вложение 284321
Є вектор V, який є різницею векторів С та С'
V = C'-C
Де, в свою чергу, С = А+В, С' = А'+В'.
Так само як і у першому прикладі |A|=|B|=|A'|=|B'|=const.
Треба знайти ті ж самі α та β.
На перший погляд це зводиться до першої тривіальної задачі, адже вектор то є дві точки. Але проблема в тому, що ця математика описує фізичну систему, внутрішній стан якої змінюється згідно з вектором V. Для керування цією системою потрібно знати природу зміни α та β протягом переходу стану системи по вектору V. Тобто у результаті треба отримати якесь аналітичне вираження α та β, яке відповідає вектору V. Наприклад, функцію від часу (якщо сприймати вектор V як переміщення фізичної точки на площині): α(t), β(t), що відповідають значенням кутів продовж переходу по вектору та Δα(t), Δβ(t), що відповідає швидкості зміни кута на кожній точці цього переходу. Інтерполяція у багатьох проміжних точках, на жаль, для цього не дуже підходить: сигнали керування α та β мають бути виключно точними та неперервними.

Я чимось заднім підозрюю що ця задача так само тривіально вирішується із застосуванням диференційного числення, але ніасіліл.
Є ідеї як це зробити?
05.12.2017 10:02
VoVaN Нібито патч

ff.c, рядок #3064

Код:
br[i] = pt[PTE_System] ? ld_dword(pt + PTE_StLba) : 0;
замінити на

Код:
switch (pt[PTE_System])
{
case 0: // empty record
	br[i] = 0;
	break;
			
case 0x05: // extended/CHS
	// here must be converter CHS->LBA, but it was fucked off. Because CHS sux!
case 0xF0: // extended/LBA
	bsect = ld_dword(pt + PTE_StLba);
	if (check_fs(fs, bsect) == 2) // I have no partition, but I have something better. Image of partition!
		br[i] = bsect + ld_dword(fs->win + MBR_Table + PTE_StLba);
	else
		br[i] = 0;
	break;
				
case 0x0B: // clearly, FAT
default: // Some other mysterious CHUPACABRA. Let`s leave it alone.
	br[i] = ld_dword(pt + PTE_StLba);
	break;		
}
Це не остаточна версія, а швидке лагодження. Більшість проблем залишилися на місці, але тепер працюють розширені розділи.
По-перше треба уточнити щодо специфікації використання типів 05/F0 та їх адресацій, а також додати конвертор адреси з циліндрів у логічні блоки (але, на скільки я міг помітити, інформація дублюється, то ж у моєму випадку працює і так). По-друге - тут контролюється тільки перший логічний розділ з розширеної таблиці; якщо раптом буде задіяно другий (хто знає цю вінду) - його не побачить, то ж було б непогано додати гілку або цикл (щоправда це викличе складнощі з місцевою реалізацію мульті-партишену). По-третє - насправді існує набагато більше ідентифікаторів типу ФС (в тому числі і сумісних), і варто було б їх теж уміти вірно інтерпретувати. Але це вже інша історія.

ПС
Ні, серйозно, підхід "якщо тип ФС не нуль - значить це ФАТ" - це нормально?!
04.12.2017 21:57
VoVaN
Цитата:
Сообщение от Debian Посмотреть сообщение
тю... это ужэ одно и тоже Оо
раньше было разное
Я щось теж не зміг зрозуміти де тут сміятися

Цитата:
Сообщение от Lukas Посмотреть сообщение
мама дорогая, ФатФС от Чана, но не Джеки, в нете считается самой шикарной библиотекой... Особенно если контроллер слабенький как тинька85 Petit-Fatfs в первую очередь рекомендуют все по умолчанию. Никто говна в нем не увидел.
По-перше, я не знаю що там у якого Джекі Чана, мова йшла про бібліотеку яку роздають ST. По-друге - обґрунтування моєї оцінки міститься у першому псті, і це не єдина підстава так вважати.
04.12.2017 21:02
Lukas
Цитата:
Сообщение от VoVaN Посмотреть сообщение
Угу. Написаний як гівно :(
мама дорогая, ФатФС от Чана, но не Джеки, в нете считается самой шикарной библиотекой... Особенно если контроллер слабенький как тинька85 Petit-Fatfs в первую очередь рекомендуют все по умолчанию. Никто говна в нем не увидел.
04.12.2017 19:23
Debian
Цитата:
Сообщение от VoVaN Посмотреть сообщение
Угу. Написаний як гівно :(
юзай http://ru.bmstu.wiki/Chan_FAT


тю... это ужэ одно и тоже Оо
раньше было разное
04.12.2017 19:06
VoVaN
Цитата:
Сообщение от Debian Посмотреть сообщение
Это ты FatFS мучаешь?
Угу. Написаний як гівно :(
04.12.2017 18:59
Debian Это ты FatFS мучаешь?
04.12.2017 11:52
Lukas Слушай, я конечно ничего не смыслю в этом, но что-то мне подсказывает, что нужно не умножать на 2, а прибавлять 1CF 1D0 по формуле. Создай еще один раздел, и если там так же параметр 1D6 будет 128, то значит это уже смещение внутри раздела.
Почитай с 20 стр

Почесав затылок, юзер дописал через 4 минуты
ой, не заметил, что уже решилось.
В книжке в примере 1 дескриптор не пустой, как у тебя.
04.12.2017 10:43
VoVaN
Загальні запитання

Колупаю зараз драйвер Fat32. Щось він некоректно читає деякі накопичувачі, зокрема ЮСБ-флешку, форматовану віндамисьомими.

По порядку.
Драйвер читає MBR та намагається інтерпретувати. Знаходить записи щодо розділів:
Цитата:
00000000000000000000000000000000 - немає
00020300051468EC80000000809F7800 - є
00000000000000000000000000000000 - немає
00000000000000000000000000000000 - немає
Далі розбирає запис 00020300051468EC80000000809F7800.
І на цьому етапі трапляється якесь фіаско. А саме - параметр початкового LBA розділу (@ 0x1D6). Тут він дорівнює 0x80 або 128 dec.
Вложение 277810
(с) WinHEX

Початковий сектор же в нас насправді 0х100 або 256 dec. І WinHEX цю магію вміє.
Вложение 277811

Драйвер чомусь вважає що номер першого сектору розділу тотожний початковому LBA (я донедавна теж так вважав. Та навіть сам WinHEX називає це "Sectors preceding partition". WTF?!) та шукає файлову таблицю у секторі 0х80, хоча насправді вона лежить за адресою 0х100. І так, якщо просто зсунути число на один розряд вліво (чи домножити на два) все працює вірно. Але очевидно що додатково множити на константу - то є скажений костиль і так робити не можна. Я підозрюю що там має бути не константа А якесь число яке звідкись береться.
Я ХЗ, чи то якась нова специфікація яку ми з цим драйвером не знаємо, чи то що.
Хто знає?

* * *

Все, розібрався. Треба було одразу звернути увагу на ідентифікатор типу розділу, який 0х05 замість очікуваного 0х0В. Тобто падлюча вінда замість того щоб зробити просто первинний розділ з ФАТом, робить логічний розділ за адресою 0х80, у якому розміщає таблицю з вказівником на єдиний розділ з ФАТом за адресою 0х80 від початку цього розділу (а не у абсолютних координатах), тобто насправді 0х80+0х80 = 0х100.*
Р - Раціоналізаторство. А драйвер маленький і не може у логічні розділи. Доведеться додати в нього трішечки магічної рекурсії.
От як правильно задане запитання допомагає знайти відповідь

* - і це черговий раз демонструє, чому у жодному разі не можна використовувати костилі які надають просте рішення проблеми, суть якої наразі не зрозуміла.

ПС
Пропоную тему залишити відкритою та приліпити щоб мені було соромно що я одразу не подумав про логічні розділи не плодити теми задля одноразових запитань.

Ваши права в разделе
Вы не можете создавать темы
Вы можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.

Время на сервере: 15:55.

Регистрация Справка Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны

vBulletin 3, Copyright © 2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co