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

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. Можно мне в личку файл конфигурации?

kak-dela007

Пришел наконец-то модуль передатчика, все собирается, настраивается и классно управляется коптером. Скоро сделаю видео. Но есть одна проблемка:

Работают только 8 каналов. Хотя в установках модели - 12. В конфигурации - работают все 12, значения на выходе изменяются в ответ на нажатие кнопок. Но с приемника сигнал 9,10,11,12-го каналов, похоже, отсутствуют, т.к. в Минш-планере (коптер на APM) во вкладке Radio Calibration уровни изменяются только с 1 по 8 каналы. В чем может быть дело?

Джойстик: х52
Модуль: Оранж www.hobbyking.com/hobbyking/…/uh_viewitem.asp?idpr…
Приемник: Walkera RX1202

Tahorg

Я попробую проверить выход осцилографом, давно не пользовал больше чем 8 каналов, но вроде работало. Проблема может быть в модулет, который не принимает больше 8 каналов по ППМ.

Надо, по хорошему, сделать альтернативные выходы, типа SBus или короткий PPM, но у меня нет устройств которые могут с этим работать, проверить не могу в действии - только теоретически.

kak-dela007

Понятно, возможно это только в валкеровском режиме этот модуль не принимает по PPM больше 8-ми каналов… Его еще можно переключить в DSMx и DSM2, есть надежда что в них будут все каналы работать. Но проверить тоже пока нет возможности - нет приемника такого. Так что буду ждать любой информации. А что такое

Tahorg:

короткий PPM

?