Еще одна попытка управления джойстиком, или USB -> PPM конвертор с преферансом и гейшами.

Grumman351

Сергей здравствуйте, а можете какое то видео полёта с джойстиком выложить. Или как ваша система на земле работает. Как рули на джойстик реагируют. Спасибо.

Tahorg
Grumman351:

Сергей здравствуйте, а можете какое то видео полёта с джойстиком выложить. Или как ваша система на земле работает. Как рули на джойстик реагируют. Спасибо.

есть такое :

Правда тут старая плата и джойстик не фонтан. Полетных нет - все никак не дособеру коптер с камерой.

kak-dela007

Вообще все это мелочи по сравнению с проделанной работой!) Для пользователя сделано все очень удобно, и возможности огромны. Приятно смотреть, когда на экране работают все кнопки и оси твоего джойстика x52, зная что можешь подключить их к любому каналу PPM.

Tahorg:

версии не совместимые, программа и прошивка должны быть из одного пакета.

Странно, у меня с прошивкой v.0.9.3 - все капризничало, не хотела работать Live data, и GUI вылетала при каждой перезагрузке платы.
Когда прошил v.0.9.2 - все заработало чудесно, но только с GUI от от v.0.9.3, а в GUI от v.0.9.2 выдает вот эту самую ошибку с битами.
Чем эти версии вообще отличаются? Хотя, сам я вряд ли в этом разберусь, как и в правке xml файла.

Еще возможно баг обнаружил, а может в настройках что-то не так:

Когда делаю Increase в триммере по Aelerons, то значение на выходе увеличивается почему-то не на указанное, а на произвольное - от 5-ти до 10-ти кратного примерно. При этом, все другие триммеры работают нормально. В моем конфиге триммеры управляются с хатки, через блок Hat-Battons, плюс сделал ее отключаемой, поставил логические кнопки, которые включаются только при одном положении колеса родных флай-мод x52, т.е. подключил их к каналу “Buttons 1 28”. Причем, хатка выдает правильные значения. Пробовал и без хатки - на другие кнопки триммеры выводить - результат тот же. Т.е. похоже не в джойстике дело. Да, наверно это важно, это не сразу после первой загрузки конфигурации случилось, а только после последующих, когда стал обновлять уже.

Tahorg

Вроде все правильно.

Тут есть нюанс, который слабо прояснен - про значения.

Есть значения оси с джойстика, они могут быть любые. Например у Х52 рукоятка 10 бит и будет 0…1024, а газ 8 бит и будет 0…255.

Далее оси джойстика всегда конвертятся в значения типа “ось”. Ось всегда 0…1000, вне зависимости от размерности входящих осей - все ремапится на пространство 0…1000. Все инверторы, триммеры, мапперы и прочая математика делается над значением типа “ось” и всегда остается в диапазоне 0…1000.

Далее, в выходном блоке ППМ ось конвертится в ППМ сингал. По стандарту ППМ - это 1000-2000, но он настраивается в меню модели, можно подправить (например мультик хотел оси 920…2120 с центром 1520).

Поэтому в блоке джойстика - реальные значения, считанные с джойстика. В блоках 0…1000. В ППМ - выходной ППМ сигнал, в зависимости от настроек модели.

kak-dela007
Tahorg:

например мультик хотел оси 920…2120 с центром 1520

Да, как раз задавался этим вопросом, ну теперь все ясно, спасибо! У меня APM, там от 980 до 1900 - что-то вроде этого, значит настрою в меню модели, когда буду все собирать воедино.
Вот как бы триммер еще настроить чтоб корректно работал, про который выше писал - было б вообще идеально. Побольше бы мне знаний в программировании - полез бы в код. А так - могу только констатировать факт.

kak-dela007

Настроил классную конфигурацию, собирался тут описать, но почему-то очередной раз проект отказался загружаться… Выдает ошибку “Unhandled exception occurred you application”, и так далее. Вот детали сообщения:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentException: An item with the same key has already been added.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at Tahorg.RCJoyGUI.Data.FRAMMapper.Register(IFRAMUser user)
at Tahorg.RCJoyGUI.ProgrammingPanels.ConstantDesignPanel.Initialized()
at Tahorg.RCJoyGUI.DesignPanel.LinkPanel(DraggableElement el, Boolean notMove)
at Tahorg.RCJoyGUI.DesignPanel.CreatePanel(XName panelName, XElement xElement)
at Tahorg.RCJoyGUI.DesignPanel.Deserialize(XElement data)
at Tahorg.RCJoyGUI.fmMain.LoadFile(String fname)
at Tahorg.RCJoyGUI.fmMain.openToolStripMenuItem_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
RCJoyGUI
Assembly Version: 0.1.5458.33761
Win32 Version: 0.1.*
CodeBase: file:///E:/Софт/Коптер/Джойстик/(03)Преф_и_Гейши_RCJoy.P429.v.0.9.3/RCJoyGUI.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml.Linq
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml.Linq/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging=“true” />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Откат системы не помог.
Самое интересное, что конфигурация залилась во флеш, и работает - на дисплее триммеры и переменные высвечиваются

Tahorg

файл конфигурации мне пошлите в личку

kak-dela007

Все заработало, и файл стал загружаться, спасибо!
Правда сначала когда загрузил конфигурацию, считал не правильно, центр почему-то в PPM-Mapper -е соскочил на 1000 (вместо 1500, которые были сохранены на флеш), и не помогал сброс параметров в EEP Manager -е. Но когда зашел во второй раз в ГУИ, все начало считаться как надо!

Теперь созрел следующий вопрос: можно ли как-то копировать и вставлять модели (или фрагменты конфигурации)? Чтобы объединить, например, 2 разных проекта. Или просто чтобы с ноля не создавать конфиг новой модели, за основу брать уже созданную?

Tahorg
kak-dela007:

Теперь созрел следующий вопрос: можно ли как-то копировать и вставлять модели (или фрагменты конфигурации)? Чтобы объединить, например, 2 разных проекта. Или просто чтобы с ноля не создавать конфиг новой модели, за основу брать уже созданную?

Пока нет, не придумал как это сделать умно.

hax0r

После подключения к плате с последней прошивкой и попытке включить Board->Live data ничего не происходит. И после этого при попытке законнектиться с платой появляется ошибка Communication error или Unable to connect.
При рестарте платы все работает ровно до вышеописанного момента.
Прошивку перезаливал 2 раза. Пробовал разные конвертеры FT232R и CP2102.

Tahorg

Последняя - это 0.93А, там как раз этот баг правился.

hax0r

RCJoy.P429V093A.zip
Этот баг присутствует.
Видимо, не доправился…

Tahorg

Пробую воспроизвести - не выходит. У тестовой группы все работает. Может по ошибке не ту прошивку залили?

hax0r

У меня на компьютере единственный файл прошивки. Название архива написал выше. Скачал с главной страницы вики на гитхабе.
Баг проявился не сразу. Не могу точно сказать какое действие к нему приводит, но теперь ошибка вылазит стабильно. Добавлял джой Thrustmaster HOTAS X, потом создал модель, настроил, но работало не правильно. Лайв дата в блоке джоя отображалась верно, а в остальных блоках - нет, как и на плате. Все делал по инструкции из вики на гитхабе. Попробовал сбросить значения переменных, в том числе и на плате, потом пробовал создать модель заново. Потом неожиданно перестала отображаться лайв дата и начала вылазить ошибка.

Если скажете как я могу помочь в поисках бага, с удовольствием помогу.

Tahorg

Попробуйте локализовать проблему.

  1. Полностью новый проект, только джойстик и выход, 1 ось, проверить лайв. После перезагрузки тоже.
  2. Добавить преобразователи постепенно, чтоб понять на каком проблема.
hax0r

Кажется, локализовал.
Порядок действий:
-залил прошивку (поставил все галочки на стирание) без джоя
-отключил питание, снял перемычки, подключил питание
-приконнектился к плате
-подключил джой
-скапчурил его с платы, вписал название без пробелов, но с _, сохранил
-указал в sketch->settings путь для сохранения файла, стоят галочки USART retranslator, PPM generator, PC comm USART
-создал модель, название без пробелов и без_
-добавил джой
-добавил ррм выход
-добавил линк на 1 ось
-Live Data
-File->Save
-Sketch->Generate and upload
-reset на плате
-на плате OP->Channels monitor
-перестают изменяться значения лайв даты в гуи
-на плате Fl
-в гуи выключил и включил лайв дата (безрезультатно)
-в гуи Board->Disconnect
-гуи крашится.
-перезапускаю гуи, Board->connect
-Error. Unable to connect.
Дальше стабильно ошибки связи, которые я описывал с самого начала.

hax0r

И еще, забыл дописать… Когда лайв дата еще работает, значения осей в модуле джоя отображаются верно, а в модуле РРМ-выхода - только пол-оси (значение центра увеличивается). Точно так же и на плате в channels monitor. от цента оси в одну сторону значение увеличивается, а в другую - значение тоже пытается увеличиваться, но сбрасывается в значение центра.

Tahorg
hax0r:

И еще, забыл дописать… Когда лайв дата еще работает, значения осей в модуле джоя отображаются верно, а в модуле РРМ-выхода - только пол-оси (значение центра увеличивается). Точно так же и на плате в channels monitor. от цента оси в одну сторону значение увеличивается, а в другую - значение тоже пытается увеличиваться, но сбрасывается в значение центра.

И вот в этом то и проблема - где-то проскакивает деление на 0. Можно мне в личку файл конфигурации?