четверг, 1 августа 2024 г.

Radiomaster TX12 FAQ

 Q: Какой пульт (аппаратуру управления) надо брать начинающему?

A: Radiomaster TX12 MKII ELRS left


По поводу протоколов - у TX12 MKII может быть три варианта ELRS, CC2500 и 4-in-1 (он же MTM, он же MultiProtocol). Желательно брать ELRS как наиболее распространённый сейчас стандарт (ну и плюс можно в стоке и без проблем сделать bluetooth-джойстик). CC2500 и MTM более старые (хотя для симуляторов пойдёт, но потом с дронами будут проблемы, придётся докупать отдельный модуль под конкретный протокол). 

Разница между СС2500 и МТМ в том, что на СС2500 вы сможете подключиться к ограниченному количеству радиоуправляемых приемников, в частности, производства (Frsky, S-FHSS, Radiolink, Graupner HoTT, Corona и Hitec ещё некоторые). В случае «4-в-1» один из четырех — СС2500, плюс — NRF24L01, A7105 и CYRF6936. 4-в-1 позволит вам подключиться к большему количеству радиоуправляемых приемников, включая большинство из тех, которые используют в "игрушечных" дронах и игрушках (ашан-дроны). 

Но в любом случае ЕСЛИ ВЫ ТОЛЬКО НАЧИНАЕТЕ И ЭТО ВАША ПЕРВАЯ АППАРАТУРА ТО РЕКОМЕНДУЕТСЯ БРАТЬ ELRS - любой другой только если вы понимаете для чего его берёте.

MTM|CC2500 имеет смысл брать только если - 

1) Он сильно дешевле ELRS (такое часто, так как оно менее популярно)

2) У вас есть старый дрон на тех протоколах (или приёмники) и вы точно знаете что будете использовать аппаратуру именно с этим

3) Вы точно знаете что будете покупать внешний модуль и вам нужно дешевле (будете работать с JR/FrSKY/Crossfire)

4) Вам нужен только для симуляторов и важна цена или скорость доставки

Если в объявлении, в заголовке "ELRS EdgeTX CC22500 MTM", то это либо три разных пульта и надо выбрать, либо же вас пытаются обмануть и продать мультипротокол/2500 С ВОЗМОЖНОСТЬЮ установить внешний модуль ELRS.

По поводу руки - есть два типа Left hand и Right hand. И к "для левши" и "для правши" это отношение не имеет - left hand это mode2 (или M2) - когда стик газа (тротл, throttle) слева, а right (mode1 или M1) когда стик газа справа. Отличается поведение стика - он не подпружинен и по умолчанию не центрируется. Крайне рекомендуется брать left hand (mode2) - это общепринятый стандарт и в 99% если вы потом возьмёте у кого-то другого пульт, то там будет именно он. А мышечная память уже наработана :) Но надо помнить, что всегда можно перекинуть стики местами и поменять в настройках моду, и если при покупке на mode1 есть существенная скидка, то при прочих равных можно взять и его, а потом поменять.

Смена mode1 -> mode2 выкручиванием стиков https://www.youtube.com/watch?app=desktop&v=ZpCR0Uz-LT4

Смена mode1 -> mode2 просто пластинами https://t.me/voron_zov/2736

PS: MKII или Mark II - это к моде отношение не имеет, это просто обозначение новой модели раньше была просто Radiomaster TX12, потом проапргейдили и появилась Radiomaster TX12 Mark II. Главное и ключевое отличие от обычного TX12 - гимбалы на датчиках Холла и наличие стоковой версии с ELRS

PS2: Стандарт дополнительных модулей - для TX12 micro. 

PS3: По поводу региона - FCC или LBT. LBT - европейская версия с ограничением мощности и урезанным функционалом (мультипротокольный меньше протоколов, а для ELRS мощность понижена до 100mw), FCC - американская версия. Надо понимать, что ограничение чисто программное. Легко снимается.


Q: Как включить режим Bluetooth джойстика?

A: Можно только в случае ELRS аппы. Включаем аппу. Проверяем, что в меню Model выбран с включенным RF (кнопка "MDL" - далее "Page >" проверяем на второй странице Internal RF или External если у нас внешним модулем). Далее выходим из раздела Model и нажимаем "SYS", на первой странице (TOOLS) выбираем ExpressLRS и прокручиваем вниз до пункта BLE Joystick и нажимаем его. Теперь можем подключать на компьютере (требуется блютуз адаптер) или на телефоне (требуется включенный блютуз)


Q: Вопрос к знающим, к тем кто сам юзал.  Стики AG01 mini для TX12 аппаратуры. Насколько они нужны ? Помогут ли они новичку, или - это классное излишество? На просторах интернета не нашел четкого ответа на эти вопросы.

A: Если финансы позволяют, почему бы и нет. Главное, что они дают новичку, это понимание что стики не виноваты, а косячит он сам ) Они бесспорно хороши, мне больше обычных нравятся, это в самом деле классное излишество, но не обязательное.


Q: Как войти в режим bootLoader?

A: Выключаем аппаратуру, зажимаем оба нижних трима (те которые сбоков от надписи типа модели, к примеру EdgeTX-ELRS), левый в право, правый в лево ) и включаем не отпуская тримов


Q: Какой разъём антенны по умолчанию на TX12 MKII?

A: На самой аппаратуре разъём RP-SMA Female, соотвественно антенну (или пигтейл, или нагрузку) нужно заказывать с разъёмом RP-SMA Male


Q: Где взять защиту стиков для ТХ12?

A: Алиэкспрес-озон. Или распечатать на 3D-принтере - 

   https://www.thingiverse.com/thing:5809774 (у меня такие - вполне норм, в сумке не мешаются, стики защищают)

   https://www.thingiverse.com/thing:4877610

   https://www.thingiverse.com/thing:6212268


Q: Хочу другие палки на стики - где купить?

A: Правильно эти палки называются Gimbal Ends и для TX12 нужны с резьбой M3

   Есть разные - к примеру официальный сайт https://www.radiomasterrc.com/collections/tx12-mkii-accessories/products/tx12-gimbal-ends или алиэкспресс https://aliexpress.ru/item/1005003727118105.html и https://aliexpress.ru/item/1005005688697175.html

   Можно распечатать на 3D-принтере https://www.thingiverse.com/thing:5204625 или https://www.thingiverse.com/thing:5870515


Q: Что за крепеж для смартфона на пульт? И где можно заказать?

A: К примеру вот - устанавливается на гайку для шнура на шею https://aliexpress.ru/item/1005003364490602.html или https://aliexpress.ru/item/1005002383128540.html

Или напечатать самому - https://www.thingiverse.com/thing:5850314

(Это для ТХ16 https://www.thingiverse.com/thing:5883501 мне вариант с креплением вместо ножек больше нравится. Тут же отдельно для видео-приёмника есть крепление)


Q: Можно ли на аппе включить русский язык?

A: Если про руссификацию с английского, то не рекомендую :) Ноо - https://t.me/c/1909400166/426514


Q: Как сменить стартовую картинку?

A: Смена Splash screen на аппаратуре Radiomaster https://rutube.ru/video/eba2ef895c10e349ce210bd4bcffd126


Q: Как сменить стартовое звуковое сообщение?

A: Меняем стандартные звуки на аппаратуре Radiomaster https://rutube.ru/video/772e24665b67a622814046287a3c0852/


Q: Где найти документацию?

А: Официальный сайт - https://www.radiomasterrc.com/products/tx12-mark-ii-radio-controller


Q: Сломалось и не включается

А: 

Проверяем, что не подключен USB - с подключенным проводом при включении уходит в DFU и это нормально

Пробуем зарядить (а лучше взять заведомо рабочии аккумы). 

Пробуем перепрошить в DFU, через бутлоадер. 

Пробуем новую SD (лучше прямо новую карту и через SD-адаптер на компе) с дефолтными данными (download the firmware for your radio from https://www.radiomasterrc.com/pages/firmware-updatesThen copy the folders from inside the "SD-Card" and "restore-default-settings" directories to your sd-card )

Пробуем разобрать - смотрим, что все разъёмы подключены, ничего не выпало и не отвалилось, все провода крепко на своих местах.

Пробуем аккуратно отсоединяем маленькую батарейку с платы - оставляем на 2-3 минуты, потом вставляем обратно. 


"Однажды у меня было такое поведение после перепрошивки на моем tx16s. Оказывается, я случайно перепрошил на нем прошивку tx12s. Точно такие же яркие индикаторы запуска. Вы уверены, что выбрали правильную прошивку? К вашему сведению. Я исправил это, перепрошив правильную прошивку."


Q: Появилась надпись - "No tools available". Что делать?

A: Флешка сдохла. Можно попробовать вытащить форматнуть через сд адаптер и заново закинуть файлы. Но лучше сразу поменять

понедельник, 3 января 2022 г.

FAQ Narrator in WPF

The built-in Narrator in Windows 10 and Windows 11 is launched by the "LeftCtrl + Win + Enter" shortcut.

Links:

Complete guide to Narrator

Accessibility best practices

In the app window, the control that is in focus is voiced. Also, the Windows narrator voices every key pressed.

In Windows 7, only the specified control name is pronounced. 

Narrator is missing out of the box in Windows 7 SP1 without updates and the very first versions of Windows 10.

1. Narrator announces the type of the selected control, followed by it's name. 

The voiced name is set using the AutomationProperties.Name property. 

For example:

    AutomationProperties.Name = "Login"

For custom controls, you need to write the type yourself. Otherwise, "Custom" will be pronounced.

Example:

Create a class

    public class ToggleSwitchControlAutomationPeer : UserControlAutomationPeer {

        public ToggleSwitchControlAutomationPeer(ToggleButton owner) :

            base(owner) { }

        protected override string GetLocalizedControlTypeCore() {

            return "Toggle switch";

        }

    }

And in control itself

    protected override AutomationPeer OnCreateAutomationPeer() {

        return new ToggleSwitchControlAutomationPeer(this);

    }


2. Recommendation:

Add the app name to the main window and, if possible, to all windows of the application. 

Otherwise, there will be a faceless "MainWindow" or "Login Window".

For example:

"YourApplication MainWindow" or "BestApp Login Window"


3.

By default, the Windows narrator repeats the name of the control, so you don't need to add it to the designation.


4.

With the PasswordBox control (and some more) in the .Net Framework up to 4.7.1 trouble. There are actually three outputs:

a) Updating .Net Framework.

b) Add our own control in which we use the textbox.

c) We use a textbox with a special font (for a password, but potentially unsafe).

https://github.com/dotnet/docs/blob/main/docs/framework/whats-new/whats-new-in-accessibility.md

In .NET Framework 4.7 and earlier versions, xref:System.Windows.Controls.PasswordBox controls were announced as "no item in view" or had otherwise incorrect behavior

5.

Try to use short, clear phrases. No abbreviations, acronyms, compound words.

среда, 25 августа 2021 г.

Figma to WPF XAML

 0. Go to figma

1. Press to the need element

2. (If the element consists of several, then select the group

3. Press Export

4. Select SVG

5. Press Export

6. Open Inkscape

7. Select all elements - Resize page to selection

8. Select all elements - Group

9. File - Save As - Save as type - Microsoft XAML

10. Paste file to Visual Studio




среда, 26 августа 2020 г.

Some tips for settings your keyboard Lenovo ThinkPad 8845CR UltraNav

 Some tips for settings your keyboard Lenovo ThinkPad 8845CR UltraNav



Tip Zero! NumLock is disabled with SHIFT! Shift + ScrLk (NumLock)


1. If your system has NumLock enabled at system boot, disable:

Windows Registry Editor Version 5.00

[HKEY_USERS\.DEFAULT\Control Panel\Keyboard]

"InitialKeyboardIndicators"="0"

(do not forget to disable it in BIOS too)


2. Since there is no Win key on the keyboard, and I actively use it, I assigned CapsLock key to WinKey

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]

"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,5c,e0,3a,00,00,00,00,00


3. To use the middle button as a wheel, I used a third party software - https://github.com/ykon/w10wheel.net


4. Adding an "acceleration" for the trackpoint https://forum.thinkpads.com/viewtopic.php?t=120571

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\Mouse]

"SmoothMouseXCurve"=hex:\

00,00,00,00,00,00,00,00,\

15,6e,00,00,00,00,00,00,\

00,40,02,00,00,00,00,00,\

39,dc,05,00,00,00,00,00,\

00,00,10,00,00,00,00,00

"SmoothMouseYCurve"=hex:\

00,00,00,00,00,00,00,00,\

b8,5e,01,00,00,00,00,00,\

cd,4c,15,00,00,00,00,00,\

ff,4c,88,00,00,00,00,00,\

00,00,38,02,00,00,00,00

среда, 8 июля 2020 г.

Build OpenVPN with XOR-patch (Scramble)

Task: It is necessary to compile the current version of OpenVPN for 32 bits with the XOR patch.

Solution: 
1. Download and install cygwin https://cygwin.com/install.html
During installation, you need to install the following packages -
autoconf, automake, diffutils, git, libtool, m4, make, mingw64-i686-binutils, mingw64-i686-gcc-core, mingw64-i686-headers, mingw64-i686-pthreads, mingw64-i686-runtime, mingw64-x86_64-binutils, mingw64-x86_64-gcc-core, mingw64-x86_64-headers, mingw64-x86_64-pthreads, mingw64-x86_64-runtime, patch, patchutils, perl, unzip, wget

2. After run cygwin -
cp `which true` /usr/bin/man2html                                           

3. Download OpenVPN Builds https://github.com/OpenVPN/openvpn-build
wget https://github.com/OpenVPN/openvpn-build/archive/master.zip
unpack
unzip master.zip
Go to the directory
cd openvpn-build-master/generic

4. Build (for the first time will get WITHOUT a patch)
IMAGEROOT=`pwd`/image-win32 CHOST=i686-w64-mingw32 CBUILD=i686-pc-cygwin ./build

5. After the build of the version is completed, without a patch, we go to the source directory - there will be downloaded archives with the OpenVPN source codes and the necessary libraries.

6. We need to unpack the source OpenVPN
tar xvfz openvpn-2.4.9.tar.gz
rm openvpn-2.4.9.tar.gz
cd openvpn-2.4.9

7. Download and apply xor patch - https://github.com/clayface/openvpn_xorpatch
wget https://raw.githubusercontent.com/clayface/openvpn_xorpatch/master/openvpn_xor.patch
git apply openvpn_xor.patch
tar -czvf openvpn-2.4.9.tar.gz openvpn-2.4.9

And go back to the generic folder
cd ..

8. Starting the project build again -
IMAGEROOT=`pwd`/image-win32 CHOST=i686-w64-mingw32 CBUILD=i686-pc-cygwin ./build

9. After finishing, you can goto the path  C:\cygwin\home\%YOURUSERNAME%\openvpn-build-master\generic\image-win32\openvpn\bin and test your own OpenVPN build

вторник, 5 мая 2020 г.

ToolTip для отключенного ComboBox

Вводная: Необходимо показывать ToolTip только при отключенном ComboBox.

Решение:
1. В свойства ComboBox необходимо добавить
ToolTipService.ShowOnDisabled="True"

2. Самой подсказке надо добавить привязку к какому-нибудь свойству (в нашем примере IsFlag) и  воспользоваться встроенным конвертором BooleanToVisibilityConverter
<ToolTip Visibility="{Binding IsFlag, Converter={StaticResource BooleanToVisibilityConverter }}" Content="Tooltip for test"/>


<ComboBox ToolTipService.ShowOnDisabled="True" 
          IsEnabled="{Binding IsFlag,  Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,
                      Converter={StaticResource InverseBooleanConverter}}"
          Margin="25"  >
          <ComboBox.ToolTip>
                <ToolTip Visibility="{Binding IsFlag, Converter={StaticResource BooleanToVisibilityConverter }}"
                         Content="Tooltip for test"/>
          </ComboBox.ToolTip>
 
          <ComboBoxItem Content="Item1" IsSelected="True" />
          <ComboBoxItem Content="Item2" />
          <ComboBoxItem Content="Item3" />
 
</ComboBox>

вторник, 16 апреля 2019 г.

Доступ к IP KVM Avocent DSR 1021

Вводная: Имеется IP KVM Avocent DSR 1021. С настроенным IP-адресом и модулями. Необходимо зайти на него со свежо установленной Windows 10

Решение:
1. Скачиваем последнюю версию JRE https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html и устанавливаем 

2. В браузере прописываем, что открывать в режиме совместимости. 

3. Редактируем файл java.security по адресу C:\Program Files\Java\jre1.8.****\lib\security\ 

4. Убираем MD5 в строке 
jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024 

5. Убираем DH keySize < 768 
jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768 

6. Открываем "Панель управления"-"Программы"-"Java" 
Security tab -> Edit Site List -> Добавляем IP адрес KVM "http://X.X.X.X" (+https)

7. Пробуем подключиться

вторник, 5 марта 2019 г.

Про перевод имен переменных

Вот есть разное программирование. И везде надо переменные называть. И правилом хорошего тона называть их на английском (нуу за несколькими исключениями, к примеру в виде 1С).

И вот тут можно использовать небольшой финт ушами.

Для примера возьмём слово "склад" и предположим, что мы не знаем как его нам забить. Казалось бы не проблема - идём в Google.Translate и переводим

И тут нас поджидает засада - ни одно из предложенных нам гуглом слов не будет верным. А вот для того, чтобы узнать верное слово, мы ищем наш "Склад" на википедии. После чего переключаемся на английскую страницу кнопкой English. И узнаём, что правильно наш склад называть Warehouse

понедельник, 4 марта 2019 г.

Перехват пароля к FTP серверу с помощью роутера Mikrotik

Вводная: Есть программа с "захардкорженным" в коде паролем с доступом к FTP. Необходимо узнать пароль.

Решение: Так как в качестве роутера у нас Mikrotik RB951Ui-2HnD, то будем использовать его. Заходим в winbox. В меню выбираем Tools - Packet Sniffer. Если стоит галочка "Only Headers" снимаем её.

На вкладке Filter выставляем Port - 21.


Далее нажимаем "Start". Пробуем получить обновления через программу. Если пакеты пошли хорошо, есть нет, то вариант чуть сложнее - убираем порт и смотрим все пакеты от данного компьютера - вероятно (если мы уверены, что используется FTP) используется не стандартный порт.
Узнать порт также можно простым запросом у техподдержки вашей программы - объяснив, что "системный администратор не открывает доступ по всем портам, а только по списку".
Далее нажимаем "Packets" и смотрим все пакеты подряд (Нас интересует вкладка "Packet") - в каком-нибудь из них, будет строка "PASS" и далее пароль который нам нужен.


Как вариант можем сделать сохранение в файл - на вкладке General. И сделать поиск по подстроке "PASS"



среда, 27 февраля 2019 г.

Строки в компоненте DataGrid разного размера (Compact Framework)

Вводная: Есть проект для ТСД Windows Mobile 6.5 на .Net Compact Framework 3. И в нём есть DataGrid с некоторыми данным. Но проблема в том, что в данной версии фреймворка нельзя задать высоту для конкретной строки или авторасширение по контенту.

Но у нас некоторые строки требуют одной строки для отображения, некоторые две - а делать все двухстрочными это достаточно накладно по использованию экрана.



Решение: Напрямую мы не можем обращаться к высоте каждой строки. Но такой параметр ЕСТЬ, правда он с приватным модификатором доступа, поэтому придётся немного схитрить

Добавим после заполнения данными (dataGrid1.DataSource = dataTable;) 
такой код
//Здесь получаем все строки 
var allRows = (ArrayList)dataGrid1
   .GetType()
                        .GetField("m_rlrow", BindingFlags.NonPublic
                                           | BindingFlags.Static
                                           | BindingFlags.Instance)
                        .GetValue(dataGrid1);
 
//Здесь формируем массив строк для обработки с их индексами
foreach (var pair in dataTable.Rows.Cast<DataRow>()
                                   .Select((r, i) => new {Row = r, Index = i})
                                   //Указываем параметр по которому увеличиваем размер строки
                                   .Where(x => x.Row["Type"].ToString().Contains("\n")))
{
 int index = pair.Index;
        //Эдесь мы можем получить доступ к строке если надо
        //DataRow row = pair.Row;
        SetGridRowHeight(allRows[index], 60);
 
}

Далее сама функция изменения размера
public static void SetGridRowHeight(object row, int height)
{
    row.GetType().GetField("m_cy", BindingFlags.NonPublic
                                 | BindingFlags.Static
                                 | BindingFlags.Instance)
                 .SetValue(row, height);
}
 

И результат: