
Fragtality
Members-
Posts
190 -
Joined
-
Last visited
-
Days Won
14
Content Type
Profiles
Forums
Events
Gallery
Downloads
Everything posted by Fragtality
-
Introducing Pilot's Deck, a StreamDeck Plugin
Fragtality replied to Fragtality's topic in User Contributions
*Version-bump* 🙂 The Plugin was ported to .NET 6 and x64 only. Be sure to read the Requirements and the Upgrade Procedure in the Readme! (It is NOT just dropping it in) The Plugin now uses the WASM/WAPI Module from FSUIPC7 on MSFS2020. With that: - The Lvar Access is now faster and more reliable (not reporting the last Lvar's Value for unknown/inaccessible Lvars) - Hvars are also available as an additional Action-/Command-Type - CalculatorCode can be now directly be run from the StreamDeck as Action-/Command-Type (can't really imagine a Use-Case for that, but it was possible so why not^^) This only affects / is only available with MSFS2020 / FSUIPC7. -
What if you use a Lua-Script which polls the Battery Lvars every 250-500ms (see event.timer) if they are turned on and then send a Command to your Shack? (However that is done with PFC - that has to be answered by their Support). But yeah, I just hit a similiar Wall to have my FCU back on the StreamDeck ... "licensing issues blabla". 😐 Which is probably true (but which they probably did not understand in my Case): They did indeed license the ProSim-AR 320 Software on which they build up on (the Reason they can offer such a System-Complexity on a new Product). And this Software has indeed built-in Support to communicate with a range of Hardware-Manufacturers directly. So that is what they probably don't have licensed respectively have license issues with. But I never asked them to Support the StreamDeck (or my Plugin directly), I just wanted to read the "raw" Data from the FCU (Values, Dashed, Dot ... doesn't even need to be via FSUIPC). So things they already present visually in the Cockpit and in case of the Dot more or less already as Lvar. It's very frustrating ... I got a working FCU (or MCP) on every on my other Planes, there was always a way. As in this Case too ... I've "hacked" my way through and have my FCU at least basically working 😈 (Not as accurate, but working)
-
Uhoh okay ^^ But I can't teach you FSUIPC Basics and you have to know your Radio Shack is interfaced 😉 Discord - you got a PM 😉
-
🤦♂️ 🤦♂️ 🤦♂️ Thanks 😅
-
Uhm ... can it be that the Textfile/List with all the Standard Controls is missing is this release? Just reinstalled 7.3.6 again and it doesn't appear (all the PDFs are there though).
-
Hey Paul, so your Radio Shack uses FSUIPC to communicate with the Sim (in both directions)? I've found it rather easy with the Fenix, compared to the messy FBW to make a StreamDeck/PilotsDeck Profile for that. Which is more or less your Use-Case: an external Hardware which interfaces with FSUIPC to read from/write to the Sim (and therefor the Plane). The only thing I'm missing now is to read out the Quartz-Displays - But for COM and XPDR you can use the default FSUIPC Offsets (SimConnect Vars). Are you aware of these two KB-Articles? - https://kb.fenixsim.com/example-of-how-to-use-lvars - https://kb.fenixsim.com/useful-default-keybinds Some Functions are available directly via Standard-Controls (directly selectable in FSUIPC GUI) and for nearly everything else there are Lvars which can be read from or written to. For manipulating there are either FSUIPC Marcos (never used myself) or Lua-Scripts (called via LuaToggle / event.flag - the way I prefer). Here the Lua-Script I use for the Fenix: FNX320_AUTO.lua (the Functions could also be mapped via FSUIPC GUI as LuaToggle <scriptname> and as Parameter the event/flag number from the Script-File). It doesn't have all Controls in it since my "Hardware" can directly manipulate Lua-Values (via FSUIPC) and so the Script-File only is needed for some which require more Logic/Automation. But that's basically how you manipulate Buttons in the Cockpit and can read their State/Position. If you want we can look through an Example together? Regards, Daniel
-
Said and done - thanks! 🙂 So Events/Callbacks, Init, Config, Start - right? Like so: WASM.OnLogEntryReceived += OnVariableServiceLogEvent; WASM.OnVariableListChanged += OnVariableServiceListChanged; WASM.Init(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle); WASM.LVARUpdateFrequency = 0; WASM.LogLevel = LOGLEVEL.LOG_LEVEL_INFO; WASM.Start();
-
YEP! That works 😃 I can restart either FSUIPC or my Plugin and neither Crashes anymore! Although I only replaced the FSUIPC7 Executable - don't know where I would need the static Libraries. Since my Plugin is C#, I use Paul's C# Client which in Turn uses the dynamic WAPI Library (FSUIPC_WAPID.dll from the Utils-Directory). In addition my Plugin now sets the UpdateFrequency to 0 (but I've tested that before the Special-Build, that was not the Issue). Many thanks!!! 🙂
-
I can give it a try, sure! But I'm very unused to C/C++ and especially how I debug a library which is not part of the project 😕 Nope, I'm to spoiled from C#/.Net -.- After getting it finally somehow compiled, the Plugin is crashing now because "Unable to find an entry point named 'fsuipcw_isRunning' in DLL 'FSUIPC_WAPID.dll'. " 😕 Which is true - none of the source-File would contain such a function. I'm missing some kind of Info/Step here which I can't figure out myself. I wanted to give it a try with a quick & dirty try/catch Block and (and write the Exception to the log) around that specific area if that would yield any info.
-
As simple and dumb as I said - I added another [WAPI] Section at the Bottom of the Ini to enable Logging completely unaware there was already one^^ So only the first was used and the second one was ignored. Typical Problem where the Root-Cause was in front of the Monitor 😄 Strange thing, for sure! 🤔 I can only do wild and uneducated guesses: Either dwdata, lvar_cdas or lvar_cdas at cdaId causes a Null-Pointer-Exception or the Critical/Mutex Section should also include those lines (because multiple Clients alter the Counter/Index which in turn generates a Null-Pointer/Out-of-Range Exception). *g* I can give it a try, sure! But I'm very unused to C/C++ and especially how I debug a library which is not part of the project 😕 Sure, I'll ask Paul! I do not set the Frequency to leave it at the default, since per his description in the Thread it defaults to 6Hz (the same in the WASM-Config). So I thought the Default is fine for me! Did not want to mess around with the settings 😅 But I can set it explicitively to zero 😉 Great! If you need anything more or any testing with special Builds, just drop me a line 🙂 Thanks & Cheers Daniel
-
Some Updates: - It seems to be dependent on which plane is loaded. I accidentally choose the FBW32N and FSUIPC7 did not crash (twice). - With the Default 747 I tested all the time it crashed again. - Found the Reason for the missing Messages in the FSUIPC7.log: I've added a second [WAPI] Section -.- Sorry! - Although I now forgot to re-enable Event-Logging. Will redo later ^^ - But: FSUIPC7 crashes at the same Point like my Plugin: after the "EVENT_LVARS_RECEIVED" Log-Message is received. - Compressed with 7-Zip, else it would be to big logexport-crashed.7z logexport-working.7z
-
Of course it does not show anything ... FSUIPC crashed, that is the Test-Case you requested ^^ It is a very hard crash - even the catch-Block in my Plugin is not able to catch any exception that would help 😕 Got the information about the "Access Violation" from the Debug Output from VS (debugging my Plugin). The Debugger itself also just stops and is not able to show the location. Please provide me with the exact Settings you want me to set in the FSUIPC7.ini - I did like I described in my Post earlier and that was described as per Advanced User Guide. But either that is not want you wanted or I configured it wrong. Uhm ... I don't know what you mean, I'm not aware that I enabled something like that in the first place 😮 I'm just starting it (IPCManager.cs#L73) and checking the IsRunning State (IPCManager.cs#L29). Only after WASM is ready (that is after VariableListChanged Event received) the Lvars are read (IPCManager.cs#L267 --> IPCValueWASM.cs#L18 - for every unique Lvar the User has configured and currently visible on the Deck) Here the Logs 🙂 Whenever you have time - it's no showstopper for normal usage and for developing the loading of new flight thankfully does not take that long in msfs (compared to p3d^^) logexport.zip
-
Yeah it was only the Test-Case that FSUIPC7 keeps running and the Plugin is restarted - you didn't mention wich one you prefer^^ I surely added something to the FSUIPC7.ini to enable it (see my previous Post), but I'm not sure if that enabled it xD Here the Logs when FSUIPC7 crashes! Steps: - Loaded MSFS via the FSUIPC Shortcut (Plugin is running) - Loaded a Flight - Stopped FSUIPC7 - Started FSUIPC7 => Crashed FSUIPC_WASM.log FSUIPC7.log PilotsDeck.log
-
Same Behavior with 7.3.5/0.5.9 😕 I've started MSFS/FSUIPC without the Plugin running and started it after the Flight was loaded. I hope the FSUIPC and WASM Logs are as expected? I've changed LogLevel to Debug in the FSUIPC_WASM.ini and added that to the FSUIPC7.ini: [WAPI] EnableWAPI=Yes LogLevel=Debug FSUIPC7.log PilotsDeck.log FSUIPC_WASM.log
-
Hi! I'm currently integrating the WASM Module in my StreamDeck Plugin/PilotsDeck via Paul's C# Client and it works great so far. But only if FSUIPC7 or my Plugin are not restarted when a Plane/Flight is loaded (no Problem in the Main Menu). When I restart my Plugin it will crash with a "Access Violation". When I exit FSUIPC the Plugin will load but FSUIPC7 will crash when I try to start it again. From what I can tell it happens when the WASM Module tries to load/setup the Lvars, because the last line I receive in my Plugin is "EVENT_LVARS_RECEIVED" (FSUIPC running, StreamDeck/Plugin restarted). The other way around (StreamDeck/Plugin running and FSUIPC restarted) the last line in the FSUIPC7.log is "Connected to MFSFS".
-
Introducing Pilot's Deck, a StreamDeck Plugin
Fragtality replied to Fragtality's topic in User Contributions
You're welcome, thank YOU for your Feedback 🙂 -
Introducing Pilot's Deck, a StreamDeck Plugin
Fragtality replied to Fragtality's topic in User Contributions
*bump* Some Moons and Versions have passed, we are now at 0.6.5: https://github.com/Fragtality/PilotsDeck/releases/tag/v0.6.5 -
FSUIPC free vs. registered
Fragtality replied to Fragtality's topic in FSUIPC Support Pete Dowson Modules
Sorry but this Answer is confusing. So the Virtual Buttons are only really usable (e.g. assignable in the FSUIPC UI) with a registered Version. But basically with a free Version it is still possible to write to this Offset(s). How they are intended to be used is really simple: My StreamDeck Plugin writes to this Offset(s) to trigger the Buttons, so a User can have their Mappings/Bindings within FSUIPC (instead of directly assigning a Control/Lua/Macro via StreamDeck), if he/she prefers that. -
FSUIPC free vs. registered
Fragtality replied to Fragtality's topic in FSUIPC Support Pete Dowson Modules
Thanks -
I would need to know if the "Virtual Buttons" (Offsets 29F0/3340) are usable with a free Version? Does that count as "access to Offsets" (=free) or "Joystick control facilities" (=registered)? So Offsets & Controls are "free", Lua is only available when registered. Correct? Therefor I'd assume Macros and Lvars are also only available with a registered Version (since using the same Offset), right?
-
Sorry for the late Answer, didn't get a Notification. I've send you the inis via PM. As reported, the problem somehow went away with a fresh OS/P3D Install and new/fresh Install of the newest FSUIPC Version (.13). Regarding your Answer on the three Configuration Parameters (LuaTrapKeyEvent, SetForegroundOnKeySend, KeyboardFocus): These are not existent within the new ini File (currently in use in the new/fresh Installation). But the strange thing is, I only added/altered these Parameters in the attempt to troubleshoot the old Installation (and therefore old ini-File)
-
Introduction PilotsDeck is a Plugin for Elegato's StreamDeck with the Ability to trigger Cockpit-Controls in different Ways and especially reading & displaying a Control's State on the StreamDeck as Text, Image or even Bar/Arc. It is lean & mean, flexible, completely Open-Source and Free-to-Use. It does not do any fancy Stuff like a PFD - it does exactly what is needed to support smooth Flight Operations 😎 StreamDeck-wise it behaves like any other StreamDeck Plugin: it runs alongside other Plugins and you can Drag, Drop, Copy, Paste the Actions like any other Action in the StreamDeck Software between your Folders, Pages or even different StreamDecks. The Action Configuration is done through the standard "Property Inspector" of the StreamDeck UI and it is saved in the StreamDeck Profile. You can create, export and share Profiles with the Plugin's Actions to share their Configuration. It can also switch StreamDeck Profiles based on the current Aircraft loaded (which is a bit tricky since not intended by the StreamDeck Software). The Plugin supports different StreamDeck Models: Mini, Standard/15-Key, XL, Mobile and Plus. Other Models might work, but an indented Support for Non-Display Models is not planned. The Plugin runs only on Windows. There no Plans for Linux or macOS Support (the first is not supported by StreamDeck at all, both do not run or support all Sims and some essential .NET Libraries are only available on Windows). Simulator-wise it supports all major Platforms on Windows - MS Flight Simulator, X-Plane and Prepar3D. For MS Platforms it connects through FSUIPC to the Simulator, for X-Plane it connects directly via UDP Sockets. Either way it will connect automatically as soon as a Simulator is running. All Variables and Commands these Connections allow are usable with the Plugin. You can can directly connect to another Sim without reconfiguring anything. Not all Variables and Commands require a registered Version of FSUIPC, but a registered (bought) Copy of FSUIPC is recommended to use the full Potential. If you only fly in X-Plane, FSUIPC is not needed at all. It is designed for advanced Sim-Users which "know how to do Stuff": it does not make any unnecessary complicated Stuff, but doesn't have Features allowing to do anything without knowing anything 😅 If you know how to read Control-States for your Plane and how to trigger these Controls, you can quickly define an Action for that on the StreamDeck. If you don't: be eager to read & learn. 😉 I'll try to give some Background in the Readme, but you have to take it from there! Predefined Profiles/Integrations are available for FSLabs A320X, Fenix A320, ToLiss A321, FlyByWire A32NX and QualityWings 787 - which are maintained by myself. But there are also User-Contributions for MadDog MD-82, PMDG 747-8 (P3D) and PMDG 737-700 (MSFS). All Profiles are for private/own Usage only - don't reupload or share them elsewhere. Note: PilotsDeck is 100% free and Open-Source. The Software and the Developer do not have any Affiliation to Flight Panels. Buying from Flight Panels does not support my Work in any Way. Creating own Profiles is something anyone (knowing how a Plane can be interfaced) can do! Supported Simulator Versions X-Plane 12 / 11 / <=10 Requirement: None - does not use XUIPC Flight Simulator 2020 / X / 2004 Requirement: FSUIPC 7 & MobiFlight WASM / FSUIPC 4 / FSUIPC 3 Prepar3D v5 / v4 / v1-3 Requirement: FSUIPC 6 / 5 / 4 Supported is understood as "technical and basically supported by the Connection Method". Support in Terms of ensured Compatibility, Fixing Issues and giving Support exists only for the latest Version of the three Major Simulators: X-Plane 12, MSFS2020, P3D v5. I'm happy if it works for older Versions, but I won't make any Effort for them. It is time to go back to the Future! 😅 And yes: the latest Version for Prepar3D is still considered v5, since v6 was just DOA with nearly every Addon-Dev announcing to not support it. Supported Sim-Commands & -Variables Here a quick Overview of what you can send to the Simulator ("Command") or from what you can read Values from the Simulator ("Variable"). One of the Things which make the Plugin flexible: Variables can also be used as Commands. For Example to move a Cockpit-Control by writing a different Value to a Variable. How Commands and Variables are configured and the different Options how they can be executed is described under 2.1 - Defining Commands & Variables. MACRO | Command | MSFS*, P3D, FSX Execute any Macro known to FSUIPC SCRIPT | Command | MSFS, P3D, FSX Run any Lua-Code known to FSUIPC CONTROL | Command | MSFS, P3D, FSX, FS9 Send any SimEvent defined by its numerical ID (also known as FS-Controls, Control-Codes. Numerical Variant of a K-Variable/K-Event) LVAR | Command & Variable | MSFS, P3D, FSX Read from / Write to any L-Var ("Local Variable") OFFSET | Command & Variable | MSFS, P3D, FSX, FS9 Read from / Write to any FSUIPC Offset VJOY | Command | MSFS, P3D, FSX Toggle/Clear/Set a Button of a virtual Joystick from *FSUIPC* VJOYDRV | Command | ALL Toggle/Clear/Set a Button of a virtual Joystick from the known *vJoy Device Driver* (if installed, not required) HVAR | Command | MSFS Activate any H-Variable in the Simulator CALCULATOR | Command | MSFS Run any Calculator/Gauge Code in the Simulator - either direct RPN Code or as Template for Increasing/Decreasing L-Vars or triggering K-Vars XPCMD | Command | XP Send any Command known to X-Plane (as command_once) XPWREF | Command & Variable | XP Read from / Write to any X-Plane DataRef AVAR | Command & Variable | MSFS Read from / Write to any Simulation Variable (also known as A-Var) * = MSFS does not support Mouse-Macros !! Please mind that the Command Types Script, Macro, Lvar and vJoy can only work with a registered Version of FSUIPC! !! Both vJoy Command Types are independent of each other and are two different Things! "VJOY" can only be assigned within FSUIPC (and not in the Simulator). The "VJOYDRV" can be assigned by anything which understands a Joystick Button (Simulator, FSUIPC, Addons, ...). Available StreamDeck Actions All Actions work on the Keypads (the normal/square StreamDeck Buttons). The Dial/Touchpad (aka Encoder) on the SD+ is only supported by some Actions (the ones which make the most Sense). On Keypads you can assign two different Commands, based on how long you hold it: A Short/Normal and Long Press (>= 600ms). Only one of the available Actions can be put in StreamDeck Multi-Actions. On Encoders you can assign five different Commands for each Interaction: Left Turn, Right Turn, Touch Tap and a Short & Long Press on the Dial. The Actions can be put in StreamDeck Encoder-Stacks, but will then lose their Short/Long Press Function. How these Actions can be configured and customized is described under 2.3 - Action specific Options. Display Value (Keypad) Display a Sim Variable as Number or Text (display "ON" instead of "1"). You can scale/round/format the Value as needed and customize the Font-Settings. Only for Display. Display Value with Switch (Keypad / Encoder) Like before, but this Action also send Commands. Dynamic Button (Keypad) This Action dynamically changes the displayed Image based on a Variable (in Addition to sending Commands). Different Values trigger different Images. Korry Button (Keypad) Intended for Korry-Switches in the Cockpit: the Action displays two "Sub-Images" independently of each other. They are shown/hidden based on their own Variable, but will not change the Image based on the Value. Can be adapted to other Use-Cases. COM Radio (Keypad / Encoder) Intended for Com Frequencies: the Action shows two different Variables which can be independently scaled/rounded/formatted but share the same Font-Settings. Can be adapted to other Use-Cases. Display Gauge (Keypad / Encoder) This Actions renders the Value dynamically on a Bar or Arc. Size, Color, Position and Font-Settings can be tweaked. It can optionally send Commands. Display Gauge (Dual) (Keypad) As before, but it renders two Values dynamically on the same Bar or Arc. Profile Switcher (Keypad) This not a "real" Action like the others, it is only there to map Profiles used for Switching. Installation & Requirements The best Way to Install and Update the Plugin is via the Installer: Download, Execute and click Install! It will check the Requirements, informs & links what it missing and installs the Plugin in the correct Location if the Requirements are met (the StreamDeck Software will be automatically stopped). It is highly likely that you need to Unblock/Exclude the Installer & Plugin from BitDefender and other AV-/Security-Software. It's the number one Reason for "the Plugin is not working"-Issues. If it still does not work right or at all, please check 3.3 - Troubleshooting. The Requirements for the Plugin to run: Windows 10 or 11 (updated) StreamDeck Software v6 .NET 7 x64 Runtime (.NET Runtime and .NET Desktop Runtime) installed & updated IF used for MSFS/P3D/FSX: The latest Release of the FSUIPC Version specific to your Simulator (e.g. FSUIPC 7 for MSFS2020) IF used for MSFS: The latest Release of the WASM-Module from MobiFlight installed in your Community-Folder Optional: If you want to use VJOYDRV Commands you need Version v2.2.1.1 for Windows 10 and Version 2.1.9.1 for Windows 11. It is not checked by the Installer (since it is not a Requirement for the Plugin). The full README is on GitHub - please read it to understand how you configure Actions. If you still have Problems or Questions, feel free to contact me on any Platform/Forum 🙂 Here Example Images of what it can look like:
-
Unfortunately the Workload in my normal Job is pretty high this Week, just came out of the last Session for today. So I'm slower than I wanted to be 😕 (But hey, it pays the Bills^^) Depending on how big the urgency is: the "PilotsDeck-latest.zip" I just uploaded has most of it included already! Besides some further Optimizing/Testing/Polishing the only thing left is to add the Images with the "native" Resolution for the XL. (And obviously document all that in the Readme^^) So if you wish, you can start with that! When the Release-Version includes these Images, there is nothing to reconfigure. The Plugin automatically loads the right Image for the specific StreamDeck (so Actions can easily move between different Decks and adapt automatically). The vJoy Syntax is: <joystick>:<button> (numbers as documented in FSUIPC). You can add a ":t" after that for a toggle-type Button, without it the vJoystick's Button will be set as soon as the StreamDeck Button is pressed and will be cleared when it is released. But only with the ":t" you can have a Second Command ("Long Press") for that Button. Couldn't find another way to safely differentiate if user wants to press the vJoy Button as long as he wants or if he want's to fire the "Long Press" Command 😉 (It uses the 29F0 Offset for the technically intrigued) The Profile Switching is more or less the same as currently documented. The Difference is now, that "Use Default" and "Default Profile" are per connected StreamDeck, the Profile Switching can also be enabled/disabled when the Button of the Profile Switcher is pushed on the Deck and the Profile reinstallation does not require to leave the PI anymore. I've added all Executables to Plugin-Manifest (XP, 2020, FSX, FS9, P3D - hopefully spelled right). The other Setting (in the .config) does not exist anymore. So it should theoretically "just connect" without fiddling with the Configuration. I'd recommend to only have one Sim opened 😄
-
Should be ready in the next 2-3 days, want to add/improve some other things 😉 (crispier display on the XL, profile switching when multiple decks are connected, easier way to change the sim - I can't test but could eventually run with XP/2020).